package SimplyGit::Shellex; use strict; use warnings; use Log::Log4perl qw(:easy); use Exporter qw(import); our @EXPORT_OK = qw(shellex findBin knocker); sub knocker($$) { my $portRef = shift; my $logger = shift; foreach my $port (@$portRef) { print "Would knock on $portRef"; } } sub shellex { my $cmd = shift; my $logger = shift; if ( defined $logger && $logger ne '' ) { $logger->info("Running: $cmd 2>&1"); } my $output = `$cmd 2>&1`; chomp $output; my $rc = $?; if ( defined $logger && $logger ne '' ) { $logger->info("Returned: $rc"); } if ( $rc != 0 ) { if ( defined $logger && $logger ne '' ) { $logger->error("$cmd returned non-zero: $rc"); } print "$cmd returned non-zero: $rc\n"; exit 1; } return $output; } sub findBin { my $cmd = shift; my $logger = shift; my $binPath = shellex("which $cmd",$logger); my $rc = $?; chomp $binPath; if ( $rc != 0 ) { if ( defined $logger && $logger ne '' ) { $logger->error("Couldn't find a path for $cmd, exiting..."); } exit 1; } else { return $binPath; } } 1;