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

Side by Side Diff: git_cl.py

Issue 22824018: Convert gclient to use subcommand.py (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: fix non-determinism in gclient_smoketest.py Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gclient.py ('k') | subcommand.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # Copyright (C) 2008 Evan Martin <martine@danga.com> 6 # Copyright (C) 2008 Evan Martin <martine@danga.com>
7 7
8 """A git-command for integrating reviews on Rietveld.""" 8 """A git-command for integrating reviews on Rietveld."""
9 9
10 from distutils.version import LooseVersion 10 from distutils.version import LooseVersion
(...skipping 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after
1070 - Red not sent for review or broken 1070 - Red not sent for review or broken
1071 - Cyan was committed, branch can be deleted 1071 - Cyan was committed, branch can be deleted
1072 1072
1073 Also see 'git cl comments'. 1073 Also see 'git cl comments'.
1074 """ 1074 """
1075 parser.add_option('--field', 1075 parser.add_option('--field',
1076 help='print only specific field (desc|id|patch|url)') 1076 help='print only specific field (desc|id|patch|url)')
1077 parser.add_option('-f', '--fast', action='store_true', 1077 parser.add_option('-f', '--fast', action='store_true',
1078 help='Do not retrieve review status') 1078 help='Do not retrieve review status')
1079 (options, args) = parser.parse_args(args) 1079 (options, args) = parser.parse_args(args)
1080 if args:
1081 parser.error('Unsupported args: %s' % args)
1080 1082
1081 if options.field: 1083 if options.field:
1082 cl = Changelist() 1084 cl = Changelist()
1083 if options.field.startswith('desc'): 1085 if options.field.startswith('desc'):
1084 print cl.GetDescription() 1086 print cl.GetDescription()
1085 elif options.field == 'id': 1087 elif options.field == 'id':
1086 issueid = cl.GetIssue() 1088 issueid = cl.GetIssue()
1087 if issueid: 1089 if issueid:
1088 print issueid 1090 print issueid
1089 elif options.field == 'patch': 1091 elif options.field == 'patch':
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1176 if not cl.GetIssue(): 1178 if not cl.GetIssue():
1177 print 'no issue assigned.' 1179 print 'no issue assigned.'
1178 return 0 1180 return 0
1179 print cl.GetBranch() 1181 print cl.GetBranch()
1180 print 'Issue number: %s (%s)' % (cl.GetIssue(), cl.GetIssueURL()) 1182 print 'Issue number: %s (%s)' % (cl.GetIssue(), cl.GetIssueURL())
1181 print 'Issue description:' 1183 print 'Issue description:'
1182 print cl.GetDescription(pretty=True) 1184 print cl.GetDescription(pretty=True)
1183 return 0 1185 return 0
1184 1186
1185 1187
1188 def colorize_CMDstatus_doc():
1189 """To be called once in main() to add colors to git cl status help."""
1190 colors = [i for i in dir(Fore) if i[0].isupper()]
1191
1192 def colorize_line(line):
1193 for color in colors:
1194 if color in line.upper():
1195 # Extract whitespaces first and the leading '-'.
1196 indent = len(line) - len(line.lstrip(' ')) + 1
1197 return line[:indent] + getattr(Fore, color) + line[indent:] + Fore.RESET
1198 return line
1199
1200 lines = CMDstatus.__doc__.splitlines()
1201 CMDstatus.__doc__ = '\n'.join(colorize_line(l) for l in lines)
1202
1203
1186 @subcommand.usage('[issue_number]') 1204 @subcommand.usage('[issue_number]')
1187 def CMDissue(parser, args): 1205 def CMDissue(parser, args):
1188 """Sets or displays the current code review issue number. 1206 """Sets or displays the current code review issue number.
1189 1207
1190 Pass issue number 0 to clear the current issue. 1208 Pass issue number 0 to clear the current issue.
1191 """ 1209 """
1192 _, args = parser.parse_args(args) 1210 _, args = parser.parse_args(args)
1193 1211
1194 cl = Changelist() 1212 cl = Changelist()
1195 if len(args) > 0: 1213 if len(args) > 0:
(...skipping 953 matching lines...) Expand 10 before | Expand all | Expand 10 after
2149 self.add_option( 2167 self.add_option(
2150 '-v', '--verbose', action='count', default=0, 2168 '-v', '--verbose', action='count', default=0,
2151 help='Use 2 times for more debugging info') 2169 help='Use 2 times for more debugging info')
2152 2170
2153 def parse_args(self, args=None, values=None): 2171 def parse_args(self, args=None, values=None):
2154 options, args = optparse.OptionParser.parse_args(self, args, values) 2172 options, args = optparse.OptionParser.parse_args(self, args, values)
2155 levels = [logging.WARNING, logging.INFO, logging.DEBUG] 2173 levels = [logging.WARNING, logging.INFO, logging.DEBUG]
2156 logging.basicConfig(level=levels[min(options.verbose, len(levels) - 1)]) 2174 logging.basicConfig(level=levels[min(options.verbose, len(levels) - 1)])
2157 return options, args 2175 return options, args
2158 2176
2159 def format_description(self, _):
2160 """Disables automatic reformatting."""
2161 lines = self.description.rstrip().splitlines()
2162 lines_fixed = [lines[0]] + [l[2:] if len(l) >= 2 else l for l in lines[1:]]
2163 description = ''.join(l + '\n' for l in lines_fixed)
2164 return description[0].upper() + description[1:]
2165
2166 2177
2167 def main(argv): 2178 def main(argv):
2168 if sys.hexversion < 0x02060000: 2179 if sys.hexversion < 0x02060000:
2169 print >> sys.stderr, ( 2180 print >> sys.stderr, (
2170 '\nYour python version %s is unsupported, please upgrade.\n' % 2181 '\nYour python version %s is unsupported, please upgrade.\n' %
2171 sys.version.split(' ', 1)[0]) 2182 sys.version.split(' ', 1)[0])
2172 return 2 2183 return 2
2173 2184
2174 # Reload settings. 2185 # Reload settings.
2175 global settings 2186 global settings
2176 settings = Settings() 2187 settings = Settings()
2177 2188
2189 colorize_CMDstatus_doc()
2178 dispatcher = subcommand.CommandDispatcher(__name__) 2190 dispatcher = subcommand.CommandDispatcher(__name__)
2179 try: 2191 try:
2180 return dispatcher.execute(OptionParser(), argv) 2192 return dispatcher.execute(OptionParser(), argv)
2181 except urllib2.HTTPError, e: 2193 except urllib2.HTTPError, e:
2182 if e.code != 500: 2194 if e.code != 500:
2183 raise 2195 raise
2184 DieWithError( 2196 DieWithError(
2185 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' 2197 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith '
2186 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) 2198 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e)))
2187 2199
2188 2200
2189 if __name__ == '__main__': 2201 if __name__ == '__main__':
2190 # These affect sys.stdout so do it outside of main() to simplify mocks in 2202 # These affect sys.stdout so do it outside of main() to simplify mocks in
2191 # unit testing. 2203 # unit testing.
2192 fix_encoding.fix_encoding() 2204 fix_encoding.fix_encoding()
2193 colorama.init() 2205 colorama.init()
2194 sys.exit(main(sys.argv[1:])) 2206 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « gclient.py ('k') | subcommand.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698