Mercurial > public > mercurial-scm > hg
comparison mercurial/cmdutil.py @ 4551:61e33f1d44a8
dispatch: rename variables after code motion
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 11 Jun 2007 21:09:24 -0500 |
parents | 6ed91894261e |
children | 38cdee6b6675 |
comparison
equal
deleted
inserted
replaced
4550:6ed91894261e | 4551:61e33f1d44a8 |
---|---|
18 class AmbiguousCommand(Exception): | 18 class AmbiguousCommand(Exception): |
19 """Exception raised if command shortcut matches more than one command.""" | 19 """Exception raised if command shortcut matches more than one command.""" |
20 class ParseError(Exception): | 20 class ParseError(Exception): |
21 """Exception raised on errors in parsing the command line.""" | 21 """Exception raised on errors in parsing the command line.""" |
22 | 22 |
23 def runcatch(u, args): | 23 def runcatch(ui, args): |
24 def catchterm(*args): | 24 def catchterm(*args): |
25 raise util.SignalInterrupt | 25 raise util.SignalInterrupt |
26 | 26 |
27 for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM': | 27 for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM': |
28 num = getattr(signal, name, None) | 28 num = getattr(signal, name, None) |
32 try: | 32 try: |
33 # enter the debugger before command execution | 33 # enter the debugger before command execution |
34 if '--debugger' in args: | 34 if '--debugger' in args: |
35 pdb.set_trace() | 35 pdb.set_trace() |
36 try: | 36 try: |
37 return dispatch(u, args) | 37 return dispatch(ui, args) |
38 finally: | 38 finally: |
39 u.flush() | 39 ui.flush() |
40 except: | 40 except: |
41 # enter the debugger when we hit an exception | 41 # enter the debugger when we hit an exception |
42 if '--debugger' in args: | 42 if '--debugger' in args: |
43 pdb.post_mortem(sys.exc_info()[2]) | 43 pdb.post_mortem(sys.exc_info()[2]) |
44 u.print_exc() | 44 ui.print_exc() |
45 raise | 45 raise |
46 | 46 |
47 except ParseError, inst: | 47 except ParseError, inst: |
48 if inst.args[0]: | 48 if inst.args[0]: |
49 u.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1])) | 49 ui.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1])) |
50 commands.help_(u, inst.args[0]) | 50 commands.help_(ui, inst.args[0]) |
51 else: | 51 else: |
52 u.warn(_("hg: %s\n") % inst.args[1]) | 52 ui.warn(_("hg: %s\n") % inst.args[1]) |
53 commands.help_(u, 'shortlist') | 53 commands.help_(ui, 'shortlist') |
54 except AmbiguousCommand, inst: | 54 except AmbiguousCommand, inst: |
55 u.warn(_("hg: command '%s' is ambiguous:\n %s\n") % | 55 ui.warn(_("hg: command '%s' is ambiguous:\n %s\n") % |
56 (inst.args[0], " ".join(inst.args[1]))) | 56 (inst.args[0], " ".join(inst.args[1]))) |
57 except UnknownCommand, inst: | 57 except UnknownCommand, inst: |
58 u.warn(_("hg: unknown command '%s'\n") % inst.args[0]) | 58 ui.warn(_("hg: unknown command '%s'\n") % inst.args[0]) |
59 commands.help_(u, 'shortlist') | 59 commands.help_(ui, 'shortlist') |
60 except hg.RepoError, inst: | 60 except hg.RepoError, inst: |
61 u.warn(_("abort: %s!\n") % inst) | 61 ui.warn(_("abort: %s!\n") % inst) |
62 except lock.LockHeld, inst: | 62 except lock.LockHeld, inst: |
63 if inst.errno == errno.ETIMEDOUT: | 63 if inst.errno == errno.ETIMEDOUT: |
64 reason = _('timed out waiting for lock held by %s') % inst.locker | 64 reason = _('timed out waiting for lock held by %s') % inst.locker |
65 else: | 65 else: |
66 reason = _('lock held by %s') % inst.locker | 66 reason = _('lock held by %s') % inst.locker |
67 u.warn(_("abort: %s: %s\n") % (inst.desc or inst.filename, reason)) | 67 ui.warn(_("abort: %s: %s\n") % (inst.desc or inst.filename, reason)) |
68 except lock.LockUnavailable, inst: | 68 except lock.LockUnavailable, inst: |
69 u.warn(_("abort: could not lock %s: %s\n") % | 69 ui.warn(_("abort: could not lock %s: %s\n") % |
70 (inst.desc or inst.filename, inst.strerror)) | 70 (inst.desc or inst.filename, inst.strerror)) |
71 except revlog.RevlogError, inst: | 71 except revlog.RevlogError, inst: |
72 u.warn(_("abort: %s!\n") % inst) | 72 ui.warn(_("abort: %s!\n") % inst) |
73 except util.SignalInterrupt: | 73 except util.SignalInterrupt: |
74 u.warn(_("killed!\n")) | 74 ui.warn(_("killed!\n")) |
75 except KeyboardInterrupt: | 75 except KeyboardInterrupt: |
76 try: | 76 try: |
77 u.warn(_("interrupted!\n")) | 77 ui.warn(_("interrupted!\n")) |
78 except IOError, inst: | 78 except IOError, inst: |
79 if inst.errno == errno.EPIPE: | 79 if inst.errno == errno.EPIPE: |
80 if u.debugflag: | 80 if ui.debugflag: |
81 u.warn(_("\nbroken pipe\n")) | 81 ui.warn(_("\nbroken pipe\n")) |
82 else: | 82 else: |
83 raise | 83 raise |
84 except socket.error, inst: | 84 except socket.error, inst: |
85 u.warn(_("abort: %s\n") % inst[1]) | 85 ui.warn(_("abort: %s\n") % inst[1]) |
86 except IOError, inst: | 86 except IOError, inst: |
87 if hasattr(inst, "code"): | 87 if hasattr(inst, "code"): |
88 u.warn(_("abort: %s\n") % inst) | 88 ui.warn(_("abort: %s\n") % inst) |
89 elif hasattr(inst, "reason"): | 89 elif hasattr(inst, "reason"): |
90 try: # usually it is in the form (errno, strerror) | 90 try: # usually it is in the form (errno, strerror) |
91 reason = inst.reason.args[1] | 91 reason = inst.reason.args[1] |
92 except: # it might be anything, for example a string | 92 except: # it might be anything, for example a string |
93 reason = inst.reason | 93 reason = inst.reason |
94 u.warn(_("abort: error: %s\n") % reason) | 94 ui.warn(_("abort: error: %s\n") % reason) |
95 elif hasattr(inst, "args") and inst[0] == errno.EPIPE: | 95 elif hasattr(inst, "args") and inst[0] == errno.EPIPE: |
96 if u.debugflag: | 96 if ui.debugflag: |
97 u.warn(_("broken pipe\n")) | 97 ui.warn(_("broken pipe\n")) |
98 elif getattr(inst, "strerror", None): | 98 elif getattr(inst, "strerror", None): |
99 if getattr(inst, "filename", None): | 99 if getattr(inst, "filename", None): |
100 u.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename)) | 100 ui.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename)) |
101 else: | 101 else: |
102 u.warn(_("abort: %s\n") % inst.strerror) | 102 ui.warn(_("abort: %s\n") % inst.strerror) |
103 else: | 103 else: |
104 raise | 104 raise |
105 except OSError, inst: | 105 except OSError, inst: |
106 if getattr(inst, "filename", None): | 106 if getattr(inst, "filename", None): |
107 u.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename)) | 107 ui.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename)) |
108 else: | 108 else: |
109 u.warn(_("abort: %s\n") % inst.strerror) | 109 ui.warn(_("abort: %s\n") % inst.strerror) |
110 except util.UnexpectedOutput, inst: | 110 except util.UnexpectedOutput, inst: |
111 u.warn(_("abort: %s") % inst[0]) | 111 ui.warn(_("abort: %s") % inst[0]) |
112 if not isinstance(inst[1], basestring): | 112 if not isinstance(inst[1], basestring): |
113 u.warn(" %r\n" % (inst[1],)) | 113 ui.warn(" %r\n" % (inst[1],)) |
114 elif not inst[1]: | 114 elif not inst[1]: |
115 u.warn(_(" empty string\n")) | 115 ui.warn(_(" empty string\n")) |
116 else: | 116 else: |
117 u.warn("\n%r\n" % util.ellipsis(inst[1])) | 117 ui.warn("\n%r\n" % util.ellipsis(inst[1])) |
118 except util.Abort, inst: | 118 except util.Abort, inst: |
119 u.warn(_("abort: %s\n") % inst) | 119 ui.warn(_("abort: %s\n") % inst) |
120 except TypeError, inst: | 120 except TypeError, inst: |
121 # was this an argument error? | 121 # was this an argument error? |
122 tb = traceback.extract_tb(sys.exc_info()[2]) | 122 tb = traceback.extract_tb(sys.exc_info()[2]) |
123 if len(tb) > 2: # no | 123 if len(tb) > 2: # no |
124 raise | 124 raise |
125 u.debug(inst, "\n") | 125 ui.debug(inst, "\n") |
126 u.warn(_("%s: invalid arguments\n") % cmd) | 126 ui.warn(_("%s: invalid arguments\n") % cmd) |
127 commands.help_(u, cmd) | 127 commands.help_(ui, cmd) |
128 except SystemExit, inst: | 128 except SystemExit, inst: |
129 # Commands shouldn't sys.exit directly, but give a return code. | 129 # Commands shouldn't sys.exit directly, but give a return code. |
130 # Just in case catch this and and pass exit code to caller. | 130 # Just in case catch this and and pass exit code to caller. |
131 return inst.code | 131 return inst.code |
132 except: | 132 except: |
133 u.warn(_("** unknown exception encountered, details follow\n")) | 133 ui.warn(_("** unknown exception encountered, details follow\n")) |
134 u.warn(_("** report bug details to " | 134 ui.warn(_("** report bug details to " |
135 "http://www.selenic.com/mercurial/bts\n")) | 135 "http://www.selenic.com/mercurial/bts\n")) |
136 u.warn(_("** or mercurial@selenic.com\n")) | 136 ui.warn(_("** or mercurial@selenic.com\n")) |
137 u.warn(_("** Mercurial Distributed SCM (version %s)\n") | 137 ui.warn(_("** Mercurial Distributed SCM (version %s)\n") |
138 % version.get_version()) | 138 % version.get_version()) |
139 raise | 139 raise |
140 | 140 |
141 return -1 | 141 return -1 |
142 | 142 |
236 parsed.append((section, name, value)) | 236 parsed.append((section, name, value)) |
237 except (IndexError, ValueError): | 237 except (IndexError, ValueError): |
238 raise util.Abort(_('malformed --config option: %s') % cfg) | 238 raise util.Abort(_('malformed --config option: %s') % cfg) |
239 return parsed | 239 return parsed |
240 | 240 |
241 def dispatch(u, args): | 241 def dispatch(ui, args): |
242 extensions.loadall(u) | 242 extensions.loadall(ui) |
243 u.addreadhook(extensions.loadall) | 243 ui.addreadhook(extensions.loadall) |
244 | 244 |
245 cmd, func, args, options, cmdoptions = parse(u, args) | 245 cmd, func, args, options, cmdoptions = parse(ui, args) |
246 | 246 |
247 if options["encoding"]: | 247 if options["encoding"]: |
248 util._encoding = options["encoding"] | 248 util._encoding = options["encoding"] |
249 if options["encodingmode"]: | 249 if options["encodingmode"]: |
250 util._encodingmode = options["encodingmode"] | 250 util._encodingmode = options["encodingmode"] |
255 t = (t[0], t[1], t[2], t[3], time.clock()) | 255 t = (t[0], t[1], t[2], t[3], time.clock()) |
256 return t | 256 return t |
257 s = get_times() | 257 s = get_times() |
258 def print_time(): | 258 def print_time(): |
259 t = get_times() | 259 t = get_times() |
260 u.warn(_("Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n") % | 260 ui.warn(_("Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n") % |
261 (t[4]-s[4], t[0]-s[0], t[2]-s[2], t[1]-s[1], t[3]-s[3])) | 261 (t[4]-s[4], t[0]-s[0], t[2]-s[2], t[1]-s[1], t[3]-s[3])) |
262 atexit.register(print_time) | 262 atexit.register(print_time) |
263 | 263 |
264 if options['cwd']: | 264 if options['cwd']: |
265 os.chdir(options['cwd']) | 265 os.chdir(options['cwd']) |
266 | 266 |
267 u.updateopts(options["verbose"], options["debug"], options["quiet"], | 267 ui.updateopts(options["verbose"], options["debug"], options["quiet"], |
268 not options["noninteractive"], options["traceback"], | 268 not options["noninteractive"], options["traceback"], |
269 parseconfig(options["config"])) | 269 parseconfig(options["config"])) |
270 | 270 |
271 path = u.expandpath(options["repository"]) or "" | 271 path = ui.expandpath(options["repository"]) or "" |
272 repo = path and hg.repository(u, path=path) or None | 272 repo = path and hg.repository(ui, path=path) or None |
273 if repo and not repo.local(): | 273 if repo and not repo.local(): |
274 raise util.Abort(_("repository '%s' is not local") % path) | 274 raise util.Abort(_("repository '%s' is not local") % path) |
275 | 275 |
276 if options['help']: | 276 if options['help']: |
277 return commands.help_(u, cmd, options['version']) | 277 return commands.help_(ui, cmd, options['version']) |
278 elif options['version']: | 278 elif options['version']: |
279 return commands.version_(u) | 279 return commands.version_(ui) |
280 elif not cmd: | 280 elif not cmd: |
281 return commands.help_(u, 'shortlist') | 281 return commands.help_(ui, 'shortlist') |
282 | 282 |
283 if cmd not in commands.norepo.split(): | 283 if cmd not in commands.norepo.split(): |
284 try: | 284 try: |
285 if not repo: | 285 if not repo: |
286 repo = hg.repository(u, path=path) | 286 repo = hg.repository(ui, path=path) |
287 u = repo.ui | 287 ui = repo.ui |
288 except hg.RepoError: | 288 except hg.RepoError: |
289 if cmd not in commands.optionalrepo.split(): | 289 if cmd not in commands.optionalrepo.split(): |
290 raise | 290 raise |
291 d = lambda: func(u, repo, *args, **cmdoptions) | 291 d = lambda: func(ui, repo, *args, **cmdoptions) |
292 else: | 292 else: |
293 d = lambda: func(u, *args, **cmdoptions) | 293 d = lambda: func(ui, *args, **cmdoptions) |
294 | 294 |
295 return runcommand(u, options, d) | 295 return runcommand(ui, options, d) |
296 | 296 |
297 def runcommand(u, options, d): | 297 def runcommand(ui, options, cmdfunc): |
298 if options['profile']: | 298 if options['profile']: |
299 import hotshot, hotshot.stats | 299 import hotshot, hotshot.stats |
300 prof = hotshot.Profile("hg.prof") | 300 prof = hotshot.Profile("hg.prof") |
301 try: | 301 try: |
302 try: | 302 try: |
303 return prof.runcall(d) | 303 return prof.runcall(cmdfunc) |
304 except: | 304 except: |
305 try: | 305 try: |
306 u.warn(_('exception raised - generating ' | 306 ui.warn(_('exception raised - generating ' |
307 'profile anyway\n')) | 307 'profile anyway\n')) |
308 except: | 308 except: |
309 pass | 309 pass |
310 raise | 310 raise |
311 finally: | 311 finally: |
322 'lsprof not available - install from ' | 322 'lsprof not available - install from ' |
323 'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/')) | 323 'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/')) |
324 p = lsprof.Profiler() | 324 p = lsprof.Profiler() |
325 p.enable(subcalls=True) | 325 p.enable(subcalls=True) |
326 try: | 326 try: |
327 return d() | 327 return cmdfunc() |
328 finally: | 328 finally: |
329 p.disable() | 329 p.disable() |
330 stats = lsprof.Stats(p.getstats()) | 330 stats = lsprof.Stats(p.getstats()) |
331 stats.sort() | 331 stats.sort() |
332 stats.pprint(top=10, file=sys.stderr, climit=5) | 332 stats.pprint(top=10, file=sys.stderr, climit=5) |
333 else: | 333 else: |
334 return d() | 334 return cmdfunc() |
335 | 335 |
336 def bail_if_changed(repo): | 336 def bail_if_changed(repo): |
337 modified, added, removed, deleted = repo.status()[:4] | 337 modified, added, removed, deleted = repo.status()[:4] |
338 if modified or added or removed or deleted: | 338 if modified or added or removed or deleted: |
339 raise util.Abort(_("outstanding uncommitted changes")) | 339 raise util.Abort(_("outstanding uncommitted changes")) |