comparison mercurial/commands.py @ 1848:bb70ffebe77b

show choices on ambiguous commands
author TK Soh <teekaysoh@yahoo.com>
date Tue, 07 Mar 2006 08:05:17 +0100
parents d17f19d84fd3
children 360d0f8d9d6f
comparison
equal deleted inserted replaced
1846:4d2791f4ef80 1848:bb70ffebe77b
2676 norepo = ("clone init version help debugancestor debugconfig debugdata" 2676 norepo = ("clone init version help debugancestor debugconfig debugdata"
2677 " debugindex debugindexdot paths") 2677 " debugindex debugindexdot paths")
2678 2678
2679 def find(cmd): 2679 def find(cmd):
2680 """Return (aliases, command table entry) for command string.""" 2680 """Return (aliases, command table entry) for command string."""
2681 choice = None 2681 choice = []
2682 count = 0
2683 for e in table.keys(): 2682 for e in table.keys():
2684 aliases = e.lstrip("^").split("|") 2683 aliases = e.lstrip("^").split("|")
2685 if cmd in aliases: 2684 if cmd in aliases:
2686 return aliases, table[e] 2685 return aliases, table[e]
2687 for a in aliases: 2686 for a in aliases:
2688 if a.startswith(cmd): 2687 if a.startswith(cmd):
2689 count += 1 2688 choice.append([aliases, table[e]])
2690 choice = aliases, table[e]
2691 break 2689 break
2692 2690
2693 if count > 1: 2691 if len(choice) > 1:
2694 raise AmbiguousCommand(cmd) 2692 clist = [x[0][0] for x in choice]
2693 raise AmbiguousCommand(cmd, clist)
2695 2694
2696 if choice: 2695 if choice:
2697 return choice 2696 return choice[0]
2698 2697
2699 raise UnknownCommand(cmd) 2698 raise UnknownCommand(cmd)
2700 2699
2701 class SignalInterrupt(Exception): 2700 class SignalInterrupt(Exception):
2702 """Exception raised on SIGTERM and SIGHUP.""" 2701 """Exception raised on SIGTERM and SIGHUP."""
2804 else: 2803 else:
2805 u.warn(_("hg: %s\n") % inst.args[1]) 2804 u.warn(_("hg: %s\n") % inst.args[1])
2806 help_(u, 'shortlist') 2805 help_(u, 'shortlist')
2807 sys.exit(-1) 2806 sys.exit(-1)
2808 except AmbiguousCommand, inst: 2807 except AmbiguousCommand, inst:
2809 u.warn(_("hg: command '%s' is ambiguous.\n") % inst.args[0]) 2808 u.warn(_("hg: command '%s' is ambiguous:\n %s\n") %
2809 (inst.args[0], " ".join(inst.args[1])))
2810 sys.exit(1) 2810 sys.exit(1)
2811 except UnknownCommand, inst: 2811 except UnknownCommand, inst:
2812 u.warn(_("hg: unknown command '%s'\n") % inst.args[0]) 2812 u.warn(_("hg: unknown command '%s'\n") % inst.args[0])
2813 help_(u, 'shortlist') 2813 help_(u, 'shortlist')
2814 sys.exit(1) 2814 sys.exit(1)
2939 raise 2939 raise
2940 u.debug(inst, "\n") 2940 u.debug(inst, "\n")
2941 u.warn(_("%s: invalid arguments\n") % cmd) 2941 u.warn(_("%s: invalid arguments\n") % cmd)
2942 help_(u, cmd) 2942 help_(u, cmd)
2943 except AmbiguousCommand, inst: 2943 except AmbiguousCommand, inst:
2944 u.warn(_("hg: command '%s' is ambiguous.\n") % inst.args[0]) 2944 u.warn(_("hg: command '%s' is ambiguous:\n %s\n") %
2945 (inst.args[0], " ".join(inst.args[1])))
2945 help_(u, 'shortlist') 2946 help_(u, 'shortlist')
2946 except UnknownCommand, inst: 2947 except UnknownCommand, inst:
2947 u.warn(_("hg: unknown command '%s'\n") % inst.args[0]) 2948 u.warn(_("hg: unknown command '%s'\n") % inst.args[0])
2948 help_(u, 'shortlist') 2949 help_(u, 'shortlist')
2949 except SystemExit: 2950 except SystemExit: