File Coverage

blib/lib/WebService/Slack/IncomingWebHook/Script.pm
Criterion Covered Total %
statement 20 29 68.9
branch 0 2 0.0
condition n/a
subroutine 7 8 87.5
pod 0 1 0.0
total 27 40 67.5


line stmt bran cond sub pod time code
1             package WebService::Slack::IncomingWebHook::Script;
2 1     1   2106 use 5.008001;
  1         4  
3 1     1   8 use strict;
  1         3  
  1         37  
4 1     1   7 use warnings;
  1         9  
  1         58  
5 1     1   7 use utf8;
  1         2  
  1         9  
6              
7 1     1   1057 use Encode qw( decode_utf8 );
  1         15747  
  1         149  
8 1     1   1208 use Getopt::Long qw( :config posix_default no_ignore_case bundling auto_help );
  1         15933  
  1         8  
9 1     1   363 use WebService::Slack::IncomingWebHook;
  1         4  
  1         291  
10              
11             =head1 DESCTIPTION
12              
13             post to slack incoming web hook.
14              
15             =head1 SYNOPSIS
16              
17             % post-slack --webhook_url='https://xxxxxx' --text='yahooo'
18              
19             --webhook_url required
20             --text required
21             --channel
22             --username
23             --icon_url
24             --icon_emoji
25              
26             =cut
27              
28              
29             sub run {
30 0     0 0   my ($class, @argv) = @_;
31 0           local @ARGV = @argv;
32              
33 0           GetOptions(
34             \my %opt => qw(
35             text=s
36             webhook_url=s
37             channel=s
38             username=s
39             icon_url=s
40             icon_emoji=s
41             ),
42             );
43 0           my @required_options = qw( webhook_url text );
44 0           for my $o (@required_options) {
45 0 0         Carp::croak("--$o option required") if ! exists $opt{$o};
46             }
47              
48 0           my $webhook_url = delete $opt{webhook_url};
49              
50             # for multibyte character
51 0           $opt{$_} = decode_utf8($opt{$_}) for keys %opt;
52              
53 0           WebService::Slack::IncomingWebHook->new(webhook_url => $webhook_url)->post(%opt);
54             }
55              
56              
57             1;