comparison mercurial/commands.py @ 4542:af02e6078d08

dispatch: reorder functions
author Matt Mackall <mpm@selenic.com>
date Mon, 11 Jun 2007 21:09:23 -0500
parents cbabc9ac7424
children 6b4e8a75d5fc
comparison
equal deleted inserted replaced
4541:3f4555babe74 4542:af02e6078d08
3031 3031
3032 norepo = ("clone init version help debugancestor debugcomplete debugdata" 3032 norepo = ("clone init version help debugancestor debugcomplete debugdata"
3033 " debugindex debugindexdot debugdate debuginstall") 3033 " debugindex debugindexdot debugdate debuginstall")
3034 optionalrepo = ("paths serve showconfig") 3034 optionalrepo = ("paths serve showconfig")
3035 3035
3036 def run():
3037 sys.exit(dispatch(sys.argv[1:]))
3038
3036 def findpossible(ui, cmd): 3039 def findpossible(ui, cmd):
3037 """ 3040 """
3038 Return cmd -> (aliases, command table entry) 3041 Return cmd -> (aliases, command table entry)
3039 for each matching command. 3042 for each matching command.
3040 Return debug commands (or their aliases) only if no normal command matches. 3043 Return debug commands (or their aliases) only if no normal command matches.
3077 if choice: 3080 if choice:
3078 return choice.values()[0] 3081 return choice.values()[0]
3079 3082
3080 raise UnknownCommand(cmd) 3083 raise UnknownCommand(cmd)
3081 3084
3082 def catchterm(*args):
3083 raise util.SignalInterrupt
3084
3085 def run():
3086 sys.exit(dispatch(sys.argv[1:]))
3087
3088 class ParseError(Exception): 3085 class ParseError(Exception):
3089 """Exception raised on errors in parsing the command line.""" 3086 """Exception raised on errors in parsing the command line."""
3090 3087
3091 def parse(ui, args): 3088 def parse(ui, args):
3092 options = {} 3089 options = {}
3123 n = o[1] 3120 n = o[1]
3124 options[n] = cmdoptions[n] 3121 options[n] = cmdoptions[n]
3125 del cmdoptions[n] 3122 del cmdoptions[n]
3126 3123
3127 return (cmd, cmd and i[0] or None, args, options, cmdoptions) 3124 return (cmd, cmd and i[0] or None, args, options, cmdoptions)
3125
3126 def parseconfig(config):
3127 """parse the --config options from the command line"""
3128 parsed = []
3129 for cfg in config:
3130 try:
3131 name, value = cfg.split('=', 1)
3132 section, name = name.split('.', 1)
3133 if not section or not name:
3134 raise IndexError
3135 parsed.append((section, name, value))
3136 except (IndexError, ValueError):
3137 raise util.Abort(_('malformed --config option: %s') % cfg)
3138 return parsed
3128 3139
3129 external = {} 3140 external = {}
3130 3141
3131 def findext(name): 3142 def findext(name):
3132 '''return module with given extension name''' 3143 '''return module with given extension name'''
3183 if overrides: 3194 if overrides:
3184 ui.warn(_("extension '%s' overrides commands: %s\n") 3195 ui.warn(_("extension '%s' overrides commands: %s\n")
3185 % (name, " ".join(overrides))) 3196 % (name, " ".join(overrides)))
3186 table.update(cmdtable) 3197 table.update(cmdtable)
3187 3198
3188 def parseconfig(config): 3199 def catchterm(*args):
3189 """parse the --config options from the command line""" 3200 raise util.SignalInterrupt
3190 parsed = []
3191 for cfg in config:
3192 try:
3193 name, value = cfg.split('=', 1)
3194 section, name = name.split('.', 1)
3195 if not section or not name:
3196 raise IndexError
3197 parsed.append((section, name, value))
3198 except (IndexError, ValueError):
3199 raise util.Abort(_('malformed --config option: %s') % cfg)
3200 return parsed
3201 3201
3202 def dispatch(args): 3202 def dispatch(args):
3203 for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM': 3203 for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM':
3204 num = getattr(signal, name, None) 3204 num = getattr(signal, name, None)
3205 if num: signal.signal(num, catchterm) 3205 if num: signal.signal(num, catchterm)