summaryrefslogtreecommitdiff
path: root/subcmds/list.py
diff options
context:
space:
mode:
authorGavin Mak <gavinmak@google.com>2023-03-11 06:46:20 +0000
committerLUCI <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-03-22 17:46:28 +0000
commitea2e330e43c182dc16b0111ebc69ee5a71ee4ce1 (patch)
treedc33ba0e56825b3e007d0589891756724725a465 /subcmds/list.py
parent1604cf255f8c1786a23388db6d5277ac7949a24a (diff)
downloadgit-repo-ea2e330e43c182dc16b0111ebc69ee5a71ee4ce1.tar.gz
git-repo-ea2e330e43c182dc16b0111ebc69ee5a71ee4ce1.zip
Format codebase with black and check formatting in CQ
Apply rules set by https://gerrit-review.googlesource.com/c/git-repo/+/362954/ across the codebase and fix any lingering errors caught by flake8. Also check black formatting in run_tests (and CQ). Bug: b/267675342 Change-Id: I972d77649dac351150dcfeb1cd1ad0ea2efc1956 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/363474 Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Gavin Mak <gavinmak@google.com> Commit-Queue: Gavin Mak <gavinmak@google.com>
Diffstat (limited to 'subcmds/list.py')
-rw-r--r--subcmds/list.py158
1 files changed, 96 insertions, 62 deletions
diff --git a/subcmds/list.py b/subcmds/list.py
index ad8036ee0..24e3e1fc0 100644
--- a/subcmds/list.py
+++ b/subcmds/list.py
@@ -18,13 +18,13 @@ from command import Command, MirrorSafeCommand
class List(Command, MirrorSafeCommand):
- COMMON = True
- helpSummary = "List projects and their associated directories"
- helpUsage = """
+ COMMON = True
+ helpSummary = "List projects and their associated directories"
+ helpUsage = """
%prog [-f] [<project>...]
%prog [-f] -r str1 [str2]...
"""
- helpDescription = """
+ helpDescription = """
List all projects; pass '.' to list the project for the cwd.
By default, only projects that currently exist in the checkout are shown. If
@@ -35,69 +35,103 @@ groups, then also pass --groups all.
This is similar to running: repo forall -c 'echo "$REPO_PATH : $REPO_PROJECT"'.
"""
- def _Options(self, p):
- p.add_option('-r', '--regex',
- dest='regex', action='store_true',
- help='filter the project list based on regex or wildcard matching of strings')
- p.add_option('-g', '--groups',
- dest='groups',
- help='filter the project list based on the groups the project is in')
- p.add_option('-a', '--all',
- action='store_true',
- help='show projects regardless of checkout state')
- 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')
- 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('--relative-to', metavar='PATH',
- help='display paths relative to this one (default: top of repo client checkout)')
+ def _Options(self, p):
+ p.add_option(
+ "-r",
+ "--regex",
+ dest="regex",
+ action="store_true",
+ help="filter the project list based on regex or wildcard matching "
+ "of strings",
+ )
+ p.add_option(
+ "-g",
+ "--groups",
+ dest="groups",
+ help="filter the project list based on the groups the project is "
+ "in",
+ )
+ p.add_option(
+ "-a",
+ "--all",
+ action="store_true",
+ help="show projects regardless of checkout state",
+ )
+ 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",
+ )
+ 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(
+ "--relative-to",
+ metavar="PATH",
+ help="display paths relative to this one (default: top of repo "
+ "client checkout)",
+ )
- def ValidateOptions(self, opt, args):
- if opt.fullpath and opt.name_only:
- self.OptionParser.error('cannot combine -f and -n')
+ def ValidateOptions(self, opt, args):
+ if opt.fullpath and opt.name_only:
+ self.OptionParser.error("cannot combine -f and -n")
- # Resolve any symlinks so the output is stable.
- if opt.relative_to:
- opt.relative_to = os.path.realpath(opt.relative_to)
+ # Resolve any symlinks so the output is stable.
+ if opt.relative_to:
+ opt.relative_to = os.path.realpath(opt.relative_to)
- def Execute(self, opt, args):
- """List all projects and the associated directories.
+ def Execute(self, opt, args):
+ """List all projects and the associated directories.
- This may be possible to do with 'repo forall', but repo newbies have
- trouble figuring that out. The idea here is that it should be more
- discoverable.
+ This may be possible to do with 'repo forall', but repo newbies have
+ trouble figuring that out. The idea here is that it should be more
+ discoverable.
- Args:
- opt: The options.
- args: Positional args. Can be a list of projects to list, or empty.
- """
- if not opt.regex:
- projects = self.GetProjects(args, groups=opt.groups, missing_ok=opt.all,
- all_manifests=not opt.this_manifest_only)
- else:
- projects = self.FindProjects(args, all_manifests=not opt.this_manifest_only)
+ Args:
+ opt: The options.
+ args: Positional args. Can be a list of projects to list, or empty.
+ """
+ if not opt.regex:
+ projects = self.GetProjects(
+ args,
+ groups=opt.groups,
+ missing_ok=opt.all,
+ all_manifests=not opt.this_manifest_only,
+ )
+ else:
+ projects = self.FindProjects(
+ args, all_manifests=not opt.this_manifest_only
+ )
- def _getpath(x):
- if opt.fullpath:
- return x.worktree
- if opt.relative_to:
- return os.path.relpath(x.worktree, opt.relative_to)
- return x.RelPath(local=opt.this_manifest_only)
+ def _getpath(x):
+ if opt.fullpath:
+ return x.worktree
+ if opt.relative_to:
+ return os.path.relpath(x.worktree, opt.relative_to)
+ return x.RelPath(local=opt.this_manifest_only)
- lines = []
- for project in projects:
- 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 = []
+ for project in projects:
+ 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))
- if lines:
- lines.sort()
- print('\n'.join(lines))
+ if lines:
+ lines.sort()
+ print("\n".join(lines))