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 <rtenneti@google.com>
Tested-by: Mike Frysinger <vapier@google.com>
diff --git a/repo b/repo
index 80db98d..876a48d 100755
--- a/repo
+++ b/repo
@@ -275,7 +275,12 @@
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 89472ed..23a4ebb 100644
--- a/subcmds/gitc_init.py
+++ b/subcmds/gitc_init.py
@@ -48,13 +48,6 @@
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 f16bee6..3566b8b 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -80,108 +80,7 @@
"""
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',