nmbug: Add a git_with_status helper function

Sometimes we want to catch Git errors and handle them, instead of
dying with an error message.  This lower-level version of git() allows
us to get the error status when we want it.
This commit is contained in:
W. Trevor King 2014-07-06 13:40:19 -07:00 committed by David Bremner
parent f47eeac0b0
commit 4697e86a52

View file

@ -63,13 +63,20 @@ sub git_pipe {
spawn ($envref, defined $ioref ? $ioref : (), defined $dir ? $dir : (), @_); spawn ($envref, defined $ioref ? $ioref : (), defined $dir ? $dir : (), @_);
} }
sub git { sub git_with_status {
my $fh = git_pipe (@_); my $fh = git_pipe (@_);
my $str = join ('', <$fh>); my $str = join ('', <$fh>);
unless (close $fh) { close $fh;
my $status = $?;
chomp($str);
return ($str, $status);
}
sub git {
my ($str, $status) = git_with_status (@_);
if ($status) {
die "'git @_' exited with nonzero value\n"; die "'git @_' exited with nonzero value\n";
} }
chomp($str);
return $str; return $str;
} }