- if (-t && eval { use Term::ReadKey; 1 }) {
- *policy = sub {
- my ($cmd, $conf, $repo, $status) = @_;
- return NEXT unless $status;
- print STDERR "git returned $status\n";
- print STDERR "[a]bort, [i]gnore, [I]gnore all, [r]etry, open [s]hell ?";
- ReadMode 4;
- my $key = ReadKey 0;
- ReadMode 1;
- print STDERR "\n";
- my %codes = (
- 'a' => LAST,
- 'i' => NEXT,
- 'I' => NEXT | SAVE,
- 'r' => REDO,
- 's' => LAST,
- );
- $key = 'a' unless defined $key;
- my $code = $codes{$key};
- $code = $codes{a} unless defined $code;
- return $code;
- };
- } else {
- *policy = sub {
- my ($cmd, $conf, $repo, $status) = @_;
- return NEXT unless $status;
- print STDERR "git returned $status, aborting\n";
- return LAST;
- };
- }
+ @ARGV = grep {
+ defined $cmd ? $_
+ : ( /^-([DIKV]+)$/ ? do { $opts{$_} = 1 for split //, $1; () }
+ : do { $cmd = $_ unless /^-/; $_ } )
+ } @ARGV;
+ $cmd = ' ' unless defined $cmd;