- my $ans = <STDIN>;
- chomp $ans;
- $ans = $default if $ans eq '';
- if ($ans =~ /^!(.*)/) {
- my $cmd = $1 || $ENV{'SHELL'};
- chdir('workdir') or die $!;
- system $cmd;
- chdir('..') or die $!;
- $default = 'D,E';
- next;
- }
- if ($ans =~ /^\S*F/i) {
- chdir('workdir') or die $!;
- system "vim @rejects";
- chdir('..') or die $!;
- $default = 'D,E';
- }
- if ($ans =~ /^\S*D/i) {
- $default = generate_new_patch($diff);
- }
- if ($ans =~ /^\S*E/i) {
- chdir('workdir') or die $!;
- system "vim -d ../../$diff ../new.patch";
- chdir('..') or die $!;
- $default = 'U,A';
- }
- if ($ans =~ /^\S*U/i) {
- system "cp -p new.patch ../$diff";
- print "\nUpdated $diff from new.patch\n";
- $default = 'A';
- }
- if ($ans =~ /^\S*A/i) {
- $default = apply_patch($diff);
- }
- if ($ans =~ /^\S*B/i) {
- if (!-f 'workdir/Makefile') {
- open(IN, '../../Makefile') or die $!;
- open(OUT, '>workdir/Makefile') or die $!;
- print OUT "srcdir=.\n\n";
- while (<IN>) {
- last if /^gen:/;
- }
- print OUT $_;
- while (<IN>) {
- last if /^clean:/;
- print OUT $_;
- }
- close IN;
- close OUT;
+ my $ans = $default;
+ if ($first_time && $default =~ /$auto_regex/) {
+ print $default, "\n";
+ } else {
+ my $input = <STDIN>;
+ chomp $input;
+ if ($input =~ s/^(-a|--auto-cmd=?)\s*//) {
+ push(@auto_cmds, $input eq '' ? $default : $input);
+ $" = '|';
+ $auto_regex = qr/^(@auto_cmds)$/i;
+ $" = ' ';
+ next;