File Coverage

blib/lib/Doit/Extcmd.pm
Criterion Covered Total %
statement 27 41 65.8
branch 6 34 17.6
condition 3 38 7.8
subroutine 6 6 100.0
pod 0 1 0.0
total 42 120 35.0


line stmt bran cond sub pod time code
1             # -*- perl -*-
2              
3             #
4             # Author: Slaven Rezic
5             #
6             # Copyright (C) 2017 Slaven Rezic. All rights reserved.
7             # This package is free software; you can redistribute it and/or
8             # modify it under the same terms as Perl itself.
9             #
10             # Mail: slaven@rezic.de
11             # WWW: http://www.rezic.de/eserte/
12             #
13              
14             package Doit::Extcmd;
15              
16 9     9   3427 use strict;
  9         17  
  9         232  
17 9     9   37 use warnings;
  9         16  
  9         337  
18             our $VERSION = '0.01';
19              
20 9     9   66 use Exporter 'import';
  9         30  
  9         4761  
21             our @EXPORT_OK = qw(is_in_path);
22              
23             # REPO BEGIN
24             # REPO NAME is_in_path /Users/eserte/src/srezic-repository
25             # REPO MD5 e18e6687a056e4a3cbcea4496aaaa1db
26              
27             sub is_in_path {
28 10     10 0 399895 my($prog) = @_;
29 10 50       48 if (file_name_is_absolute($prog)) {
30 0 0       0 if ($^O eq 'MSWin32') {
31 0 0 0     0 return $prog if (-f $prog && -x $prog);
32 0 0 0     0 return "$prog.bat" if (-f "$prog.bat" && -x "$prog.bat");
33 0 0 0     0 return "$prog.com" if (-f "$prog.com" && -x "$prog.com");
34 0 0 0     0 return "$prog.exe" if (-f "$prog.exe" && -x "$prog.exe");
35 0 0 0     0 return "$prog.cmd" if (-f "$prog.cmd" && -x "$prog.cmd");
36             } else {
37 0 0 0     0 return $prog if -f $prog and -x $prog;
38             }
39             }
40 10         77 require Config;
41 10         18 %Config::Config = %Config::Config if 0; # cease -w
42 10   50     216 my $sep = $Config::Config{'path_sep'} || ':';
43 10         168 foreach (split(/$sep/o, $ENV{PATH})) {
44 72 50       203 if ($^O eq 'MSWin32') {
45             # maybe use $ENV{PATHEXT} like maybe_command in ExtUtils/MM_Win32.pm?
46 0 0 0     0 return "$_\\$prog" if (-f "$_\\$prog" && -x "$_\\$prog");
47 0 0 0     0 return "$_\\$prog.bat" if (-f "$_\\$prog.bat" && -x "$_\\$prog.bat");
48 0 0 0     0 return "$_\\$prog.com" if (-f "$_\\$prog.com" && -x "$_\\$prog.com");
49 0 0 0     0 return "$_\\$prog.exe" if (-f "$_\\$prog.exe" && -x "$_\\$prog.exe");
50 0 0 0     0 return "$_\\$prog.cmd" if (-f "$_\\$prog.cmd" && -x "$_\\$prog.cmd");
51             } else {
52 72 100 66     3496 return "$_/$prog" if (-x "$_/$prog" && !-d "$_/$prog");
53             }
54             }
55 4         26 undef;
56             }
57             # REPO END
58              
59             # REPO BEGIN
60             # REPO NAME file_name_is_absolute /Users/eserte/src/srezic-repository
61             # REPO MD5 89d0fdf16d11771f0f6e82c7d0ebf3a8
62              
63             BEGIN {
64 9 50   9   33 if (eval { require File::Spec; defined &File::Spec::file_name_is_absolute }) {
  9         46  
  9         54  
65 0         0 *file_name_is_absolute = \&File::Spec::file_name_is_absolute;
66             } else {
67             *file_name_is_absolute = sub {
68 10     10   30 my $file = shift;
69 10         26 my $r;
70 10 50       49 if ($^O eq 'MSWin32') {
71 0         0 $r = ($file =~ m;^([a-z]:(/|\\)|\\\\|//);i);
72             } else {
73 10         47 $r = ($file =~ m|^/|);
74             }
75 10         43 $r;
76 9         275 };
77             }
78             }
79             # REPO END
80              
81             1;
82              
83             __END__