From 9a734a3975c1fc45a43466f1a42e3f2ca588bd19 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 8 Apr 2021 19:14:15 -0400 Subject: [PATCH] init: merge subcmd & wrapper parsers These are manually kept in sync which is a pain. Have the init subcmd reuse the wrapper code directly. Change-Id: Ica73211422c64377bacc9bb3b1d1a8d9d5f7f4ca Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/302762 Reviewed-by: Raman Tenneti Tested-by: Mike Frysinger --- repo | 5 +++ subcmds/gitc_init.py | 7 --- subcmds/init.py | 103 +------------------------------------------ 3 files changed, 6 insertions(+), 109 deletions(-) diff --git a/repo b/repo index 80db98d2..876a48d9 100755 --- a/repo +++ b/repo @@ -275,7 +275,12 @@ def GetParser(gitc_init=False): usage = 'repo init [options] [-u] url' parser = optparse.OptionParser(usage=usage) + InitParser(parser, gitc_init=gitc_init) + return parser + +def InitParser(parser, gitc_init=False): + """Setup the CLI parser.""" # Logging. group = parser.add_option_group('Logging options') group.add_option('-v', '--verbose', diff --git a/subcmds/gitc_init.py b/subcmds/gitc_init.py index 89472edb..23a4ebb6 100644 --- a/subcmds/gitc_init.py +++ b/subcmds/gitc_init.py @@ -48,13 +48,6 @@ use for this GITC client. def _Options(self, p): super()._Options(p, gitc_init=True) - g = p.add_option_group('GITC options') - g.add_option('-f', '--manifest-file', - dest='manifest_file', - help='Optional manifest file to use for this GITC client.') - g.add_option('-c', '--gitc-client', - dest='gitc_client', - help='The name of the gitc_client instance to create or modify.') def Execute(self, opt, args): gitc_client = gitc_utils.parse_clientdir(os.getcwd()) diff --git a/subcmds/init.py b/subcmds/init.py index f16bee6d..3566b8b6 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -80,108 +80,7 @@ to update the working directory files. """ def _Options(self, p, gitc_init=False): - # Logging - g = p.add_option_group('Logging options') - g.add_option('-v', '--verbose', - dest='output_mode', action='store_true', - help='show all output') - g.add_option('-q', '--quiet', - dest='output_mode', action='store_false', - help='only show errors') - - # Manifest - g = p.add_option_group('Manifest options') - g.add_option('-u', '--manifest-url', - dest='manifest_url', - help='manifest repository location', metavar='URL') - g.add_option('-b', '--manifest-branch', metavar='REVISION', - help='manifest branch or revision (use HEAD for default)') - cbr_opts = ['--current-branch'] - # The gitc-init subcommand allocates -c itself, but a lot of init users - # want -c, so try to satisfy both as best we can. - if not gitc_init: - cbr_opts += ['-c'] - g.add_option(*cbr_opts, - dest='current_branch_only', action='store_true', - help='fetch only current manifest branch from server') - g.add_option('-m', '--manifest-name', - dest='manifest_name', default='default.xml', - help='initial manifest file', metavar='NAME.xml') - g.add_option('--mirror', - dest='mirror', action='store_true', - help='create a replica of the remote repositories ' - 'rather than a client working directory') - g.add_option('--reference', - dest='reference', - help='location of mirror directory', metavar='DIR') - g.add_option('--dissociate', - dest='dissociate', action='store_true', - help='dissociate from reference mirrors after clone') - g.add_option('--depth', type='int', default=None, - dest='depth', - help='create a shallow clone with given depth; see git clone') - g.add_option('--partial-clone', action='store_true', - dest='partial_clone', - help='perform partial clone (https://git-scm.com/' - 'docs/gitrepository-layout#_code_partialclone_code)') - g.add_option('--no-partial-clone', action='store_false', - dest='partial_clone', - help='disable use of partial clone (https://git-scm.com/' - 'docs/gitrepository-layout#_code_partialclone_code)') - g.add_option('--clone-filter', action='store', default='blob:none', - dest='clone_filter', - help='filter for use with --partial-clone [default: %default]') - g.add_option('--worktree', action='store_true', - help='use git-worktree to manage projects') - g.add_option('--archive', - dest='archive', action='store_true', - help='checkout an archive instead of a git repository for ' - 'each project. See git archive.') - g.add_option('--submodules', - dest='submodules', action='store_true', - help='sync any submodules associated with the manifest repo') - g.add_option('--use-superproject', action='store_true', - help='use the manifest superproject to sync projects') - g.add_option('--no-use-superproject', action='store_false', - dest='use_superproject', - help='disable use of manifest superprojects') - g.add_option('-g', '--groups', - dest='groups', default='default', - help='restrict manifest projects to ones with specified ' - 'group(s) [default|all|G1,G2,G3|G4,-G5,-G6]', - metavar='GROUP') - g.add_option('-p', '--platform', - dest='platform', default='auto', - help='restrict manifest projects to ones with a specified ' - 'platform group [auto|all|none|linux|darwin|...]', - metavar='PLATFORM') - g.add_option('--clone-bundle', action='store_true', - help='force use of /clone.bundle on HTTP/HTTPS (default if not --partial-clone)') - g.add_option('--no-clone-bundle', - dest='clone_bundle', action='store_false', - help='disable use of /clone.bundle on HTTP/HTTPS (default if --partial-clone)') - g.add_option('--no-tags', - dest='tags', default=True, action='store_false', - help="don't fetch tags in the manifest") - - # Tool - g = p.add_option_group('repo Version options') - g.add_option('--repo-url', - dest='repo_url', - help='repo repository location', metavar='URL') - g.add_option('--repo-rev', metavar='REV', - help='repo branch or revision') - g.add_option('--repo-branch', dest='repo_rev', - help=optparse.SUPPRESS_HELP) - g.add_option('--no-repo-verify', - dest='repo_verify', default=True, action='store_false', - help='do not verify repo source code') - - # Other - g = p.add_option_group('Other options') - g.add_option('--config-name', - dest='config_name', action="store_true", default=False, - help='Always prompt for name/e-mail') + Wrapper().InitParser(p, gitc_init=gitc_init) def _RegisteredEnvironmentOptions(self): return {'REPO_MANIFEST_URL': 'manifest_url',