mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
command: make --verbose/--quiet available to all subcommands
Add new CommonOptions entry points to move the existing --jobs to, and relocate all --verbose/--quiet options to that. This provides both a consistent interface for users as well as for code. Change-Id: Ifaf83b88872421f4749b073c472b4a67ca6c0437 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/303224 Reviewed-by: Raman Tenneti <rtenneti@google.com> Tested-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
parent
f32f243ff8
commit
9180a07b8f
25
command.py
25
command.py
@ -84,18 +84,34 @@ class Command(object):
|
|||||||
usage = 'repo %s' % self.NAME
|
usage = 'repo %s' % self.NAME
|
||||||
epilog = 'Run `repo help %s` to view the detailed manual.' % self.NAME
|
epilog = 'Run `repo help %s` to view the detailed manual.' % self.NAME
|
||||||
self._optparse = optparse.OptionParser(usage=usage, epilog=epilog)
|
self._optparse = optparse.OptionParser(usage=usage, epilog=epilog)
|
||||||
|
self._CommonOptions(self._optparse)
|
||||||
self._Options(self._optparse)
|
self._Options(self._optparse)
|
||||||
return self._optparse
|
return self._optparse
|
||||||
|
|
||||||
def _Options(self, p):
|
def _CommonOptions(self, p, opt_v=True):
|
||||||
"""Initialize the option parser.
|
"""Initialize the option parser with common options.
|
||||||
|
|
||||||
|
These will show up for *all* subcommands, so use sparingly.
|
||||||
|
NB: Keep in sync with repo:InitParser().
|
||||||
"""
|
"""
|
||||||
|
g = p.add_option_group('Logging options')
|
||||||
|
opts = ['-v'] if opt_v else []
|
||||||
|
g.add_option(*opts, '--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')
|
||||||
|
|
||||||
if self.PARALLEL_JOBS is not None:
|
if self.PARALLEL_JOBS is not None:
|
||||||
p.add_option(
|
p.add_option(
|
||||||
'-j', '--jobs',
|
'-j', '--jobs',
|
||||||
type=int, default=self.PARALLEL_JOBS,
|
type=int, default=self.PARALLEL_JOBS,
|
||||||
help='number of jobs to run in parallel (default: %s)' % self.PARALLEL_JOBS)
|
help='number of jobs to run in parallel (default: %s)' % self.PARALLEL_JOBS)
|
||||||
|
|
||||||
|
def _Options(self, p):
|
||||||
|
"""Initialize the option parser with subcommand-specific options."""
|
||||||
|
|
||||||
def _RegisteredEnvironmentOptions(self):
|
def _RegisteredEnvironmentOptions(self):
|
||||||
"""Get options that can be set from environment variables.
|
"""Get options that can be set from environment variables.
|
||||||
|
|
||||||
@ -120,6 +136,11 @@ class Command(object):
|
|||||||
self.OptionParser.print_usage()
|
self.OptionParser.print_usage()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
def CommonValidateOptions(self, opt, args):
|
||||||
|
"""Validate common options."""
|
||||||
|
opt.quiet = opt.output_mode is False
|
||||||
|
opt.verbose = opt.output_mode is True
|
||||||
|
|
||||||
def ValidateOptions(self, opt, args):
|
def ValidateOptions(self, opt, args):
|
||||||
"""Validate the user options & arguments before executing.
|
"""Validate the user options & arguments before executing.
|
||||||
|
|
||||||
|
1
main.py
1
main.py
@ -257,6 +257,7 @@ class _Repo(object):
|
|||||||
git_trace2_event_log.CommandEvent(name='repo', subcommands=[name])
|
git_trace2_event_log.CommandEvent(name='repo', subcommands=[name])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
cmd.CommonValidateOptions(copts, cargs)
|
||||||
cmd.ValidateOptions(copts, cargs)
|
cmd.ValidateOptions(copts, cargs)
|
||||||
result = cmd.Execute(copts, cargs)
|
result = cmd.Execute(copts, cargs)
|
||||||
except (DownloadError, ManifestInvalidRevisionError,
|
except (DownloadError, ManifestInvalidRevisionError,
|
||||||
|
2
repo
2
repo
@ -281,6 +281,8 @@ def GetParser(gitc_init=False):
|
|||||||
|
|
||||||
def InitParser(parser, gitc_init=False):
|
def InitParser(parser, gitc_init=False):
|
||||||
"""Setup the CLI parser."""
|
"""Setup the CLI parser."""
|
||||||
|
# NB: Keep in sync with command.py:_CommonOptions().
|
||||||
|
|
||||||
# Logging.
|
# Logging.
|
||||||
group = parser.add_option_group('Logging options')
|
group = parser.add_option_group('Logging options')
|
||||||
group.add_option('-v', '--verbose',
|
group.add_option('-v', '--verbose',
|
||||||
|
@ -37,10 +37,6 @@ It is equivalent to "git branch -D <branchname>".
|
|||||||
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
super()._Options(p)
|
|
||||||
p.add_option('-q', '--quiet',
|
|
||||||
action='store_true', default=False,
|
|
||||||
help='be quiet')
|
|
||||||
p.add_option('--all',
|
p.add_option('--all',
|
||||||
dest='all', action='store_true',
|
dest='all', action='store_true',
|
||||||
help='delete all branches in all projects')
|
help='delete all branches in all projects')
|
||||||
|
@ -32,9 +32,6 @@ The change id will be updated, and a reference to the old
|
|||||||
change id will be added.
|
change id will be added.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _Options(self, p):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def ValidateOptions(self, opt, args):
|
def ValidateOptions(self, opt, args):
|
||||||
if len(args) != 1:
|
if len(args) != 1:
|
||||||
self.Usage()
|
self.Usage()
|
||||||
|
@ -32,7 +32,6 @@ to the Unix 'patch' command.
|
|||||||
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
super()._Options(p)
|
|
||||||
p.add_option('-u', '--absolute',
|
p.add_option('-u', '--absolute',
|
||||||
dest='absolute', action='store_true',
|
dest='absolute', action='store_true',
|
||||||
help='Paths are relative to the repository root')
|
help='Paths are relative to the repository root')
|
||||||
|
@ -129,8 +129,6 @@ without iterating through the remaining projects.
|
|||||||
del parser.rargs[0]
|
del parser.rargs[0]
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
super()._Options(p)
|
|
||||||
|
|
||||||
p.add_option('-r', '--regex',
|
p.add_option('-r', '--regex',
|
||||||
dest='regex', action='store_true',
|
dest='regex', action='store_true',
|
||||||
help="Execute the command only on projects matching regex or wildcard expression")
|
help="Execute the command only on projects matching regex or wildcard expression")
|
||||||
@ -153,13 +151,10 @@ without iterating through the remaining projects.
|
|||||||
help='Silently skip & do not exit non-zero due missing '
|
help='Silently skip & do not exit non-zero due missing '
|
||||||
'checkouts')
|
'checkouts')
|
||||||
|
|
||||||
g = p.add_option_group('Output')
|
g = p.get_option_group('--quiet')
|
||||||
g.add_option('-p',
|
g.add_option('-p',
|
||||||
dest='project_header', action='store_true',
|
dest='project_header', action='store_true',
|
||||||
help='Show project headers before output')
|
help='Show project headers before output')
|
||||||
g.add_option('-v', '--verbose',
|
|
||||||
dest='verbose', action='store_true',
|
|
||||||
help='Show command error messages')
|
|
||||||
p.add_option('--interactive',
|
p.add_option('--interactive',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='force interactive usage')
|
help='force interactive usage')
|
||||||
|
@ -82,8 +82,11 @@ contain a line that matches both expressions:
|
|||||||
if value is not None:
|
if value is not None:
|
||||||
pt.append(value)
|
pt.append(value)
|
||||||
|
|
||||||
|
def _CommonOptions(self, p):
|
||||||
|
"""Override common options slightly."""
|
||||||
|
super()._CommonOptions(p, opt_v=False)
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
super()._Options(p)
|
|
||||||
g = p.add_option_group('Sources')
|
g = p.add_option_group('Sources')
|
||||||
g.add_option('--cached',
|
g.add_option('--cached',
|
||||||
action='callback', callback=self._carry_option,
|
action='callback', callback=self._carry_option,
|
||||||
|
@ -79,6 +79,9 @@ manifest, a subsequent `repo sync` (or `repo sync -d`) is necessary
|
|||||||
to update the working directory files.
|
to update the working directory files.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def _CommonOptions(self, p):
|
||||||
|
"""Disable due to re-use of Wrapper()."""
|
||||||
|
|
||||||
def _Options(self, p, gitc_init=False):
|
def _Options(self, p, gitc_init=False):
|
||||||
Wrapper().InitParser(p, gitc_init=gitc_init)
|
Wrapper().InitParser(p, gitc_init=gitc_init)
|
||||||
|
|
||||||
@ -436,9 +439,6 @@ to update the working directory files.
|
|||||||
% ('.'.join(str(x) for x in MIN_GIT_VERSION_SOFT),),
|
% ('.'.join(str(x) for x in MIN_GIT_VERSION_SOFT),),
|
||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
|
|
||||||
opt.quiet = opt.output_mode is False
|
|
||||||
opt.verbose = opt.output_mode is True
|
|
||||||
|
|
||||||
rp = self.manifest.repoProject
|
rp = self.manifest.repoProject
|
||||||
|
|
||||||
# Handle new --repo-url requests.
|
# Handle new --repo-url requests.
|
||||||
|
@ -39,7 +39,8 @@ branch but need to incorporate new upstream changes "underneath" them.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
p.add_option('-i', '--interactive',
|
g = p.get_option_group('--quiet')
|
||||||
|
g.add_option('-i', '--interactive',
|
||||||
dest="interactive", action="store_true",
|
dest="interactive", action="store_true",
|
||||||
help="interactive rebase (single project only)")
|
help="interactive rebase (single project only)")
|
||||||
|
|
||||||
@ -52,9 +53,6 @@ branch but need to incorporate new upstream changes "underneath" them.
|
|||||||
p.add_option('--no-ff',
|
p.add_option('--no-ff',
|
||||||
dest='ff', default=True, action='store_false',
|
dest='ff', default=True, action='store_false',
|
||||||
help='Pass --no-ff to git rebase')
|
help='Pass --no-ff to git rebase')
|
||||||
p.add_option('-q', '--quiet',
|
|
||||||
dest='quiet', action='store_true',
|
|
||||||
help='Pass --quiet to git rebase')
|
|
||||||
p.add_option('--autosquash',
|
p.add_option('--autosquash',
|
||||||
dest='autosquash', action='store_true',
|
dest='autosquash', action='store_true',
|
||||||
help='Pass --autosquash to git rebase')
|
help='Pass --autosquash to git rebase')
|
||||||
|
@ -38,7 +38,8 @@ The '%prog' command stages files to prepare the next commit.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
p.add_option('-i', '--interactive',
|
g = p.get_option_group('--quiet')
|
||||||
|
g.add_option('-i', '--interactive',
|
||||||
dest='interactive', action='store_true',
|
dest='interactive', action='store_true',
|
||||||
help='use interactive staging')
|
help='use interactive staging')
|
||||||
|
|
||||||
|
@ -38,7 +38,6 @@ revision specified in the manifest.
|
|||||||
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
super()._Options(p)
|
|
||||||
p.add_option('--all',
|
p.add_option('--all',
|
||||||
dest='all', action='store_true',
|
dest='all', action='store_true',
|
||||||
help='begin branch in all projects')
|
help='begin branch in all projects')
|
||||||
|
@ -80,12 +80,9 @@ the following meanings:
|
|||||||
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
PARALLEL_JOBS = DEFAULT_LOCAL_JOBS
|
||||||
|
|
||||||
def _Options(self, p):
|
def _Options(self, p):
|
||||||
super()._Options(p)
|
|
||||||
p.add_option('-o', '--orphans',
|
p.add_option('-o', '--orphans',
|
||||||
dest='orphans', action='store_true',
|
dest='orphans', action='store_true',
|
||||||
help="include objects in working directory outside of repo projects")
|
help="include objects in working directory outside of repo projects")
|
||||||
p.add_option('-q', '--quiet', action='store_true',
|
|
||||||
help="only print the name of modified projects")
|
|
||||||
|
|
||||||
def _StatusHelper(self, quiet, project):
|
def _StatusHelper(self, quiet, project):
|
||||||
"""Obtains the status for a specific project.
|
"""Obtains the status for a specific project.
|
||||||
|
@ -167,13 +167,14 @@ later is required to fix a server side protocol bug.
|
|||||||
"""
|
"""
|
||||||
PARALLEL_JOBS = 1
|
PARALLEL_JOBS = 1
|
||||||
|
|
||||||
def _Options(self, p, show_smart=True):
|
def _CommonOptions(self, p):
|
||||||
try:
|
try:
|
||||||
self.PARALLEL_JOBS = self.manifest.default.sync_j
|
self.PARALLEL_JOBS = self.manifest.default.sync_j
|
||||||
except ManifestParseError:
|
except ManifestParseError:
|
||||||
pass
|
pass
|
||||||
super()._Options(p)
|
super()._CommonOptions(p)
|
||||||
|
|
||||||
|
def _Options(self, p, show_smart=True):
|
||||||
p.add_option('--jobs-network', default=None, type=int, metavar='JOBS',
|
p.add_option('--jobs-network', default=None, type=int, metavar='JOBS',
|
||||||
help='number of network jobs to run in parallel (defaults to --jobs)')
|
help='number of network jobs to run in parallel (defaults to --jobs)')
|
||||||
p.add_option('--jobs-checkout', default=None, type=int, metavar='JOBS',
|
p.add_option('--jobs-checkout', default=None, type=int, metavar='JOBS',
|
||||||
@ -211,12 +212,6 @@ later is required to fix a server side protocol bug.
|
|||||||
p.add_option('-c', '--current-branch',
|
p.add_option('-c', '--current-branch',
|
||||||
dest='current_branch_only', action='store_true',
|
dest='current_branch_only', action='store_true',
|
||||||
help='fetch only current branch from server')
|
help='fetch only current branch from server')
|
||||||
p.add_option('-v', '--verbose',
|
|
||||||
dest='output_mode', action='store_true',
|
|
||||||
help='show all sync output')
|
|
||||||
p.add_option('-q', '--quiet',
|
|
||||||
dest='output_mode', action='store_false',
|
|
||||||
help='only show errors')
|
|
||||||
p.add_option('-m', '--manifest-name',
|
p.add_option('-m', '--manifest-name',
|
||||||
dest='manifest_name',
|
dest='manifest_name',
|
||||||
help='temporary manifest to use for this sync', metavar='NAME.xml')
|
help='temporary manifest to use for this sync', metavar='NAME.xml')
|
||||||
@ -770,9 +765,6 @@ later is required to fix a server side protocol bug.
|
|||||||
soft_limit, _ = _rlimit_nofile()
|
soft_limit, _ = _rlimit_nofile()
|
||||||
self.jobs = min(self.jobs, (soft_limit - 5) // 3)
|
self.jobs = min(self.jobs, (soft_limit - 5) // 3)
|
||||||
|
|
||||||
opt.quiet = opt.output_mode is False
|
|
||||||
opt.verbose = opt.output_mode is True
|
|
||||||
|
|
||||||
if opt.manifest_name:
|
if opt.manifest_name:
|
||||||
self.manifest.Override(opt.manifest_name)
|
self.manifest.Override(opt.manifest_name)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user