add --no-<tag>, so e.g. we can omit DPH with --no-dph
[ghc-hetmet.git] / sync-all
index 728c725..6ff06cc 100755 (executable)
--- a/sync-all
+++ b/sync-all
@@ -303,7 +303,6 @@ sub scmall {
             }
             elsif ($command =~ /^(?:pus|push)$/) {
                 @scm_args = "push";
-                $want_remote_repo = 1;
             }
             elsif ($command =~ /^(?:pul|pull)$/) {
                 @scm_args = "pull";
@@ -312,6 +311,9 @@ sub scmall {
             elsif ($command =~ /^(?:g|ge|get)$/) {
                 # Skip any repositories we have not included the tag for
                 if (not defined($tags{$tag})) {
+                    $tags{$tag} = 0;
+                }
+                if ($tags{$tag} == 0) {
                     next;
                 }
                 
@@ -362,6 +364,12 @@ sub scmall {
               # Hack around 'git grep' failing if there are no matches
               $ignore_failure = 1;
             }
+            elsif ($command =~ /^reset$/) {
+                @scm_args = "reset";
+            }
+            elsif ($command =~ /^config$/) {
+                @scm_args = "config";
+            }
             else {
                 die "Unknown command: $command";
             }
@@ -417,6 +425,8 @@ Supported commands:
  * remote rm <branch-name>
  * remote set-url [--push] <branch-name>
  * grep
+ * reset
+ * config
 
 Available package-tags are:
 END
@@ -477,9 +487,11 @@ sub main {
         }
         # --<tag> says we grab the libs tagged 'tag' with
         # 'get'. It has no effect on the other commands.
-        elsif ($arg =~ m/^--/) {
-            $arg =~ s/^--//;
-            $tags{$arg} = 1;
+        elsif ($arg =~ m/^--no-(.*)$/) {
+            $tags{$1} = 0;
+        }
+        elsif ($arg =~ m/^--(.*)$/) {
+            $tags{$1} = 1;
         }
         else {
             unshift @_, $arg;