Mercurial > hg
comparison mercurial/commands.py @ 1519:5b19dea9d4fd
Merge with TAH
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 09 Nov 2005 12:52:05 -0800 |
parents | 0b1b029b4de3 ac4ca6bf2383 |
children | 95ee4f12fbd9 d07d729ce306 |
comparison
equal
deleted
inserted
replaced
1516:0b1b029b4de3 | 1519:5b19dea9d4fd |
---|---|
13 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback") | 13 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback") |
14 demandload(globals(), "errno socket version struct atexit sets bz2") | 14 demandload(globals(), "errno socket version struct atexit sets bz2") |
15 | 15 |
16 class UnknownCommand(Exception): | 16 class UnknownCommand(Exception): |
17 """Exception raised if command is not in the command table.""" | 17 """Exception raised if command is not in the command table.""" |
18 class AmbiguousCommand(Exception): | |
19 """Exception raised if command shortcut matches more than one command.""" | |
18 | 20 |
19 def filterfiles(filters, files): | 21 def filterfiles(filters, files): |
20 l = [x for x in files if x in filters] | 22 l = [x for x in files if x in filters] |
21 | 23 |
22 for t in filters: | 24 for t in filters: |
385 option_lists = [] | 387 option_lists = [] |
386 if cmd and cmd != 'shortlist': | 388 if cmd and cmd != 'shortlist': |
387 if with_version: | 389 if with_version: |
388 show_version(ui) | 390 show_version(ui) |
389 ui.write('\n') | 391 ui.write('\n') |
390 key, i = find(cmd) | 392 aliases, i = find(cmd) |
391 # synopsis | 393 # synopsis |
392 ui.write("%s\n\n" % i[2]) | 394 ui.write("%s\n\n" % i[2]) |
393 | 395 |
394 # description | 396 # description |
395 doc = i[0].__doc__ | 397 doc = i[0].__doc__ |
397 doc = doc.splitlines(0)[0] | 399 doc = doc.splitlines(0)[0] |
398 ui.write("%s\n" % doc.rstrip()) | 400 ui.write("%s\n" % doc.rstrip()) |
399 | 401 |
400 if not ui.quiet: | 402 if not ui.quiet: |
401 # aliases | 403 # aliases |
402 aliases = ', '.join(key.split('|')[1:]) | 404 if len(aliases) > 1: |
403 if aliases: | 405 ui.write(_("\naliases: %s\n") % ', '.join(aliases[1:])) |
404 ui.write(_("\naliases: %s\n") % aliases) | |
405 | 406 |
406 # options | 407 # options |
407 if i[1]: | 408 if i[1]: |
408 option_lists.append(("options", i[1])) | 409 option_lists.append(("options", i[1])) |
409 | 410 |
2373 | 2374 |
2374 norepo = ("clone init version help debugancestor debugconfig debugdata" | 2375 norepo = ("clone init version help debugancestor debugconfig debugdata" |
2375 " debugindex debugindexdot paths") | 2376 " debugindex debugindexdot paths") |
2376 | 2377 |
2377 def find(cmd): | 2378 def find(cmd): |
2378 choice = [] | 2379 """Return (aliases, command table entry) for command string.""" |
2380 choice = None | |
2379 for e in table.keys(): | 2381 for e in table.keys(): |
2380 aliases = e.lstrip("^").split("|") | 2382 aliases = e.lstrip("^").split("|") |
2381 if cmd in aliases: | 2383 if cmd in aliases: |
2382 return e, table[e] | 2384 return aliases, table[e] |
2383 for a in aliases: | 2385 for a in aliases: |
2384 if a.startswith(cmd): | 2386 if a.startswith(cmd): |
2385 choice.append(e) | 2387 if choice: |
2386 if len(choice) == 1: | 2388 raise AmbiguousCommand(cmd) |
2387 e = choice[0] | 2389 else: |
2388 return e, table[e] | 2390 choice = aliases, table[e] |
2391 if choice: | |
2392 return choice | |
2389 | 2393 |
2390 raise UnknownCommand(cmd) | 2394 raise UnknownCommand(cmd) |
2391 | 2395 |
2392 class SignalInterrupt(Exception): | 2396 class SignalInterrupt(Exception): |
2393 """Exception raised on SIGTERM and SIGHUP.""" | 2397 """Exception raised on SIGTERM and SIGHUP.""" |
2421 except fancyopts.getopt.GetoptError, inst: | 2425 except fancyopts.getopt.GetoptError, inst: |
2422 raise ParseError(None, inst) | 2426 raise ParseError(None, inst) |
2423 | 2427 |
2424 cmd, args = args[0], args[1:] | 2428 cmd, args = args[0], args[1:] |
2425 | 2429 |
2426 i = find(cmd)[1] | 2430 aliases, i = find(cmd) |
2431 cmd = aliases[0] | |
2427 c = list(i[1]) | 2432 c = list(i[1]) |
2428 else: | 2433 else: |
2429 cmd = None | 2434 cmd = None |
2430 c = [] | 2435 c = [] |
2431 | 2436 |
2501 help_(u, inst.args[0]) | 2506 help_(u, inst.args[0]) |
2502 else: | 2507 else: |
2503 u.warn(_("hg: %s\n") % inst.args[1]) | 2508 u.warn(_("hg: %s\n") % inst.args[1]) |
2504 help_(u, 'shortlist') | 2509 help_(u, 'shortlist') |
2505 sys.exit(-1) | 2510 sys.exit(-1) |
2511 except AmbiguousCommand, inst: | |
2512 u.warn(_("hg: command '%s' is ambiguous.\n") % inst.args[0]) | |
2513 sys.exit(1) | |
2506 except UnknownCommand, inst: | 2514 except UnknownCommand, inst: |
2507 u.warn(_("hg: unknown command '%s'\n") % inst.args[0]) | 2515 u.warn(_("hg: unknown command '%s'\n") % inst.args[0]) |
2508 help_(u, 'shortlist') | 2516 help_(u, 'shortlist') |
2509 sys.exit(1) | 2517 sys.exit(1) |
2510 | 2518 |