list: add name-only and path-only options
`repo list -n` prints only the name of the projects.
`repo list -p` prints only the path of the projects.
Change-Id: If7d78eb2651f0b1b2fe555dc286bd2bdcad0d56d
Signed-off-by: Chirayu Desai <cdesai@cyanogenmod.org>
diff --git a/subcmds/list.py b/subcmds/list.py
index 0d5c27f..8eb06cd 100644
--- a/subcmds/list.py
+++ b/subcmds/list.py
@@ -15,6 +15,7 @@
from __future__ import print_function
import re
+import sys
from command import Command, MirrorSafeCommand
@@ -38,6 +39,12 @@
p.add_option('-f', '--fullpath',
dest='fullpath', action='store_true',
help="Display the full work tree path instead of the relative path")
+ p.add_option('-n', '--name-only',
+ dest='name_only', action='store_true',
+ help="Display only the name of the repository")
+ p.add_option('-p', '--path-only',
+ dest='path_only', action='store_true',
+ help="Display only the path of the repository")
def Execute(self, opt, args):
"""List all projects and the associated directories.
@@ -50,6 +57,11 @@
opt: The options.
args: Positional args. Can be a list of projects to list, or empty.
"""
+
+ if opt.fullpath and opt.name_only:
+ print('error: cannot combine -f and -n', file=sys.stderr)
+ sys.exit(1)
+
if not opt.regex:
projects = self.GetProjects(args)
else:
@@ -62,7 +74,12 @@
lines = []
for project in projects:
- lines.append("%s : %s" % (_getpath(project), project.name))
+ if opt.name_only and not opt.path_only:
+ lines.append("%s" % ( project.name))
+ elif opt.path_only and not opt.name_only:
+ lines.append("%s" % (_getpath(project)))
+ else:
+ lines.append("%s : %s" % (_getpath(project), project.name))
lines.sort()
print('\n'.join(lines))