File Coverage

blib/lib/App/SCM/Digest/Utils.pm
Criterion Covered Total %
statement 35 35 100.0
branch 3 4 75.0
condition n/a
subroutine 8 8 100.0
pod 2 3 66.6
total 48 50 96.0


line stmt bran cond sub pod time code
1             package App::SCM::Digest::Utils;
2              
3 6     6   36 use strict;
  6         12  
  6         163  
4 6     6   31 use warnings;
  6         13  
  6         151  
5              
6 6     6   7502 use File::Temp;
  6         158424  
  6         548  
7              
8 6     6   47 use base qw(Exporter);
  6         12  
  6         2605  
9             our @EXPORT_OK = qw(system_ad system_ad_op slurp);
10              
11             sub slurp
12             {
13 4     4 0 176 my ($path) = @_;
14              
15 4         516 open my $fh, '<', $path;
16 4         23 my @lines;
17 4         268 while (my $line = <$fh>) {
18 102         518 push @lines, $line;
19             }
20 4         59 close $fh;
21 4         89 return join '', @lines;
22             }
23              
24             sub _system_ad
25             {
26 9     9   33 my ($cmd, $ft) = @_;
27              
28 9         203897 my $res = system("$cmd");
29 9 100       316 if ($res != 0) {
30 4         53 my $extra = '';
31 4 50       203 if ($ft) {
32 4         164 my $content = slurp($ft->filename());
33 4         36 chomp $content;
34 4         32 $extra = " ($content)";
35             }
36 4         335 die "Command ($cmd) failed: $res$extra";
37             }
38              
39 5         431 return 1;
40             }
41              
42             sub system_ad
43             {
44 8     8 1 4092 my ($cmd) = @_;
45              
46 8         185 my $ft = File::Temp->new();
47 8         6875 my $redirect = '>'.$ft->filename();
48              
49 8         145 return _system_ad("$cmd $redirect 2>&1", $ft);
50             }
51              
52             sub system_ad_op
53             {
54 1     1 1 1399 my ($cmd) = @_;
55              
56 1         16 return _system_ad("$cmd 2>&1");
57             }
58              
59             1;
60              
61             __END__