Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: gclient.py

Issue 19552004: Improve description layout. Improve coloring and add legend in help. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: cleaner Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « commit_queue.py ('k') | git_cl.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient.py
diff --git a/gclient.py b/gclient.py
index 789d89b9dd78c5603f0597ab1babdb12ce406009..50bed88ac5edb299dba8bf22f17544285c7665b7 100755
--- a/gclient.py
+++ b/gclient.py
@@ -1379,7 +1379,7 @@ def CMDfetch(parser, args):
Completely git-specific. Simply runs 'git fetch [args ...]' for each module.
"""
(options, args) = parser.parse_args(args)
- return CMDrecurse(Parser(), [
+ return CMDrecurse(OptionParser(), [
'--jobs=%d' % options.jobs, '--scm=git', 'git', 'fetch'] + args)
@@ -1735,52 +1735,57 @@ def GenUsage(parser, command):
parser.epilog = getattr(obj, 'epilog', None)
-def Parser():
- """Returns the default parser."""
- parser = optparse.OptionParser(version='%prog ' + __version__)
- # some arm boards have issues with parallel sync.
- if platform.machine().startswith('arm'):
- jobs = 1
- else:
- jobs = max(8, gclient_utils.NumLocalCpus())
- # cmp: 2013/06/19
- # Temporary workaround to lower bot-load on SVN server.
- if os.environ.get('CHROME_HEADLESS') == '1':
- jobs = 4
+class OptionParser(optparse.OptionParser):
gclientfile_default = os.environ.get('GCLIENT_FILE', '.gclient')
- parser.add_option('-j', '--jobs', default=jobs, type='int',
- help='Specify how many SCM commands can run in parallel; '
- 'defaults to number of cpu cores (%default)')
- parser.add_option('-v', '--verbose', action='count', default=0,
- help='Produces additional output for diagnostics. Can be '
- 'used up to three times for more logging info.')
- parser.add_option('--gclientfile', dest='config_filename',
- default=None,
- help='Specify an alternate %s file' % gclientfile_default)
- parser.add_option('--spec',
- default=None,
- help='create a gclient file containing the provided '
- 'string. Due to Cygwin/Python brokenness, it '
- 'probably can\'t contain any newlines.')
- parser.add_option('--no-nag-max', default=False, action='store_true',
- help='If a subprocess runs for too long without generating'
- ' terminal output, generate warnings, but do not kill'
- ' the process.')
- # Integrate standard options processing.
- old_parser = parser.parse_args
- def Parse(args):
- (options, args) = old_parser(args)
- level = [logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG][
- min(options.verbose, 3)]
- logging.basicConfig(level=level,
+
+ def __init__(self, **kwargs):
+ optparse.OptionParser.__init__(
+ self, version='%prog ' + __version__, **kwargs)
+
+ # Some arm boards have issues with parallel sync.
+ if platform.machine().startswith('arm'):
+ jobs = 1
+ else:
+ jobs = max(8, gclient_utils.NumLocalCpus())
+ # cmp: 2013/06/19
+ # Temporary workaround to lower bot-load on SVN server.
+ if os.environ.get('CHROME_HEADLESS') == '1':
+ jobs = 4
+
+ self.add_option(
+ '-j', '--jobs', default=jobs, type='int',
+ help='Specify how many SCM commands can run in parallel; defaults to '
+ 'number of cpu cores (%default)')
+ self.add_option(
+ '-v', '--verbose', action='count', default=0,
+ help='Produces additional output for diagnostics. Can be used up to '
+ 'three times for more logging info.')
+ self.add_option(
+ '--gclientfile', dest='config_filename',
+ help='Specify an alternate %s file' % self.gclientfile_default)
+ self.add_option(
+ '--spec',
+ help='create a gclient file containing the provided string. Due to '
+ 'Cygwin/Python brokenness, it can\'t contain any newlines.')
+ self.add_option(
+ '--no-nag-max', default=False, action='store_true',
+ help='If a subprocess runs for too long without generating terminal '
+ 'output, generate warnings, but do not kill the process.')
+
+ def parse_args(self, args=None, values=None):
+ """Integrates standard options processing."""
+ options, args = optparse.OptionParser.parse_args(self, args, values)
+ levels = [logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG]
+ logging.basicConfig(
+ level=levels[min(options.verbose, len(levels) - 1)],
format='%(module)s(%(lineno)d) %(funcName)s:%(message)s')
if options.config_filename and options.spec:
- parser.error('Cannot specifiy both --gclientfile and --spec')
+ self.error('Cannot specifiy both --gclientfile and --spec')
if not options.config_filename:
- options.config_filename = gclientfile_default
+ options.config_filename = self.gclientfile_default
options.entries_filename = options.config_filename + '_entries'
if options.jobs < 1:
- parser.error('--jobs must be 1 or higher')
+ self.error('--jobs must be 1 or higher')
# These hacks need to die.
if not hasattr(options, 'revisions'):
@@ -1799,10 +1804,10 @@ def Parser():
if options.no_nag_max:
gclient_scm.SCMWrapper.nag_max = None
return (options, args)
- parser.parse_args = Parse
- # We don't want wordwrapping in epilog (usually examples)
- parser.format_epilog = lambda _: parser.epilog or ''
- return parser
+
+ def format_epilog(self, _):
+ """Disables wordwrapping in epilog (usually examples)."""
+ return self.epilog or ''
def Main(argv):
@@ -1835,7 +1840,7 @@ def Main(argv):
to_str(fn) for fn in dir(sys.modules[__name__]) if fn.startswith('CMD')
)
CMDhelp.usage = '\n\nCommands are:\n' + '\n'.join(cmds)
- parser = Parser()
+ parser = OptionParser()
if argv:
command = Command(argv[0])
if command:
« no previous file with comments | « commit_queue.py ('k') | git_cl.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698