Add --inverse-regex option to forall subcommand
Make it possible to exclude projects using regex/wildcard.
The syntax is similar to that of the -r option, e.g.:
repo forall -i ^platform/ ^device/ -c 'echo $REPO_PROJECT'
Change-Id: Id250de5665152228c044c79337d3ac15b5696484
diff --git a/subcmds/forall.py b/subcmds/forall.py
index b10f34b..07ee8d5 100644
--- a/subcmds/forall.py
+++ b/subcmds/forall.py
@@ -120,6 +120,9 @@
p.add_option('-r', '--regex',
dest='regex', action='store_true',
help="Execute the command only on projects matching regex or wildcard expression")
+ p.add_option('-i', '--inverse-regex',
+ dest='inverse_regex', action='store_true',
+ help="Execute the command only on projects not matching regex or wildcard expression")
p.add_option('-g', '--groups',
dest='groups',
help="Execute the command only on projects matching the specified groups")
@@ -215,10 +218,12 @@
if os.path.isfile(smart_sync_manifest_path):
self.manifest.Override(smart_sync_manifest_path)
- if not opt.regex:
- projects = self.GetProjects(args, groups=opt.groups)
- else:
+ if opt.regex:
projects = self.FindProjects(args)
+ elif opt.inverse_regex:
+ projects = self.FindProjects(args, inverse=True)
+ else:
+ projects = self.GetProjects(args, groups=opt.groups)
os.environ['REPO_COUNT'] = str(len(projects))