Shellex.pm 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package SimplyGit::Shellex;
  2. use strict;
  3. use warnings;
  4. use Log::Log4perl qw(:easy);
  5. use Exporter qw(import);
  6. our @EXPORT_OK = qw(shellex findBin knocker);
  7. sub knocker($$) {
  8. my $portRef = shift;
  9. my $logger = shift;
  10. foreach my $port (@$portRef) {
  11. print "Would knock on $portRef";
  12. }
  13. }
  14. sub shellex {
  15. my $cmd = shift;
  16. my $logger = shift;
  17. if ( defined $logger && $logger ne '' ) {
  18. $logger->info("Running: $cmd 2>&1");
  19. }
  20. my $output = `$cmd 2>&1`;
  21. chomp $output;
  22. my $rc = $?;
  23. if ( defined $logger && $logger ne '' ) {
  24. $logger->info("Returned: $rc");
  25. }
  26. if ( $rc != 0 ) {
  27. if ( defined $logger && $logger ne '' ) {
  28. $logger->error("$cmd returned non-zero: $rc");
  29. }
  30. print "$cmd returned non-zero: $rc\n";
  31. exit 1;
  32. }
  33. return $output;
  34. }
  35. sub findBin {
  36. my $cmd = shift;
  37. my $logger = shift;
  38. my $binPath = shellex("which $cmd",$logger);
  39. my $rc = $?;
  40. chomp $binPath;
  41. if ( $rc != 0 ) {
  42. if ( defined $logger && $logger ne '' ) {
  43. $logger->error("Couldn't find a path for $cmd, exiting...");
  44. }
  45. exit 1;
  46. } else {
  47. return $binPath;
  48. }
  49. }
  50. 1;