]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/service
default to + for affects if there are packages, = otherwise
[debbugs.git] / scripts / service
index 77b5ecae83627dc88bf0be2e3a693edd980bdeb1..29d14af789619d8a4dace8cdfad511bb8a2af909 100755 (executable)
@@ -857,7 +857,7 @@ END
        };
        if ($@) {
            $errors++;
-           print {$transcript} "Failed to unmerge $ref: $@".cleanup_eval_fail($@,$debug)."\n";
+           print {$transcript} "Failed to unmerge $ref: ".cleanup_eval_fail($@,$debug)."\n";
        }
     } elsif (m/^merge\s+#?(-?\d+(\s+#?-?\d+)+)\s*$/i) {
        $ok++;
@@ -872,7 +872,7 @@ END
        };
        if ($@) {
            $errors++;
-           print {$transcript} "Failed to merge $ref: $@".cleanup_eval_fail($@,$debug)."\n";
+           print {$transcript} "Failed to merge $ref: ".cleanup_eval_fail($@,$debug)."\n";
        }
     } elsif (m/^forcemerge\s+\#?(-?\d+(?:\s+\#?-?\d+)+)\s*$/i) {
        $ok++;
@@ -962,8 +962,19 @@ END
     } elsif (m/^affects?\s+\#?(-?\d+)(?:\s+((?:[=+-])?)\s*(\S.*)?)?\s*$/i) {
        $ok++;
         $ref = $1;
-       my $add_remove = $2 || '';
-       my $packages = $3 || '';
+       my $add_remove = $2;
+       my $packages = $3;
+       # if there isn't a package given, assume that we should unset
+       # affects; otherwise default to adding
+       if (not defined $packages or
+           not length $packages) {
+           $packages = '';
+           $add_remove ||= '=';
+       }
+       elsif (not defined $add_remove or
+              not length $add_remove) {
+           $add_remove = '+';
+       }
        $ref = $clonebugs{$ref} if exists $clonebugs{$ref};
        eval {
             affects(@common_control_options,
@@ -1114,7 +1125,10 @@ my $reply =
                         Precedence    => 'bulk',
                         keys %affected_packages ?("X-${gProject}-PR-Package" => join(' ',keys %affected_packages)):(),
                         keys %affected_packages ?("X-${gProject}-PR-Source" =>
-                                                  join(' ',grep {defined $_} map {binary_to_source(binary => $_)} keys %affected_packages)):(),
+                                                  join(' ',
+                                                       map {defined $_ ?(ref($_)?@{$_}:$_):()}
+                                                       binary_to_source(binary => [keys %affected_packages],
+                                                                        source_only => 1))):(),
                         "X-$gProject-PR-Message" => 'transcript',
                         @common_headers,
                        ],