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/command.py b/command.py
index 39dcf6c..bc2f950 100644
--- a/command.py
+++ b/command.py
@@ -193,14 +193,20 @@
result.sort(key=_getpath)
return result
- def FindProjects(self, args):
+ def FindProjects(self, args, inverse=False):
result = []
patterns = [re.compile(r'%s' % a, re.IGNORECASE) for a in args]
for project in self.GetProjects(''):
for pattern in patterns:
- if pattern.search(project.name) or pattern.search(project.relpath):
+ match = pattern.search(project.name) or pattern.search(project.relpath)
+ if not inverse and match:
result.append(project)
break
+ if inverse and match:
+ break
+ else:
+ if inverse:
+ result.append(project)
result.sort(key=lambda project: project.relpath)
return result