mercurial/commands.py
changeset 592 74175ce83378
parent 591 eb46971fc57f
child 593 ca3c499e94c6
equal deleted inserted replaced
591:eb46971fc57f 592:74175ce83378
   976 
   976 
   977 def run():
   977 def run():
   978     sys.exit(dispatch(sys.argv[1:]))
   978     sys.exit(dispatch(sys.argv[1:]))
   979 
   979 
   980 def dispatch(args):
   980 def dispatch(args):
       
   981     signal.signal(signal.SIGTERM, catchterm)
       
   982 
       
   983     def get_ui():
       
   984         return ui.ui(options["verbose"], options["debug"], options["quiet"],
       
   985                      not options["noninteractive"])
       
   986 
   981     options = {}
   987     options = {}
   982     opts = [('v', 'verbose', None, 'verbose'),
   988     opts = [('v', 'verbose', None, 'verbose'),
   983             ('', 'debug', None, 'debug'),
   989             ('', 'debug', None, 'debug'),
   984             ('q', 'quiet', None, 'quiet'),
   990             ('q', 'quiet', None, 'quiet'),
   985             ('', 'profile', None, 'profile'),
   991             ('', 'profile', None, 'profile'),
   987             ('', 'traceback', None, 'print traceback on exception'),
   993             ('', 'traceback', None, 'print traceback on exception'),
   988             ('y', 'noninteractive', None, 'run non-interactively'),
   994             ('y', 'noninteractive', None, 'run non-interactively'),
   989             ('', 'version', None, 'output version information and exit'),
   995             ('', 'version', None, 'output version information and exit'),
   990             ]
   996             ]
   991 
   997 
   992     args = fancyopts.fancyopts(args, opts, options,
   998     try:
   993                                'hg [options] <command> [options] [files]')
   999         args = fancyopts.fancyopts(args, opts, options,
       
  1000                                    'hg [options] <command> [options] [files]')
       
  1001     except fancyopts.getopt.GetoptError, inst:
       
  1002         u = ui.ui()
       
  1003         u.warn("hg: %s\n" % (inst))
       
  1004         sys.exit(-1)
   994 
  1005 
   995     if not args:
  1006     if not args:
   996         cmd = "help"
  1007         cmd = "help"
   997     else:
  1008     else:
   998         cmd, args = args[0], args[1:]
  1009         cmd, args = args[0], args[1:]
   999 
  1010 
  1000     u = ui.ui(options["verbose"], options["debug"], options["quiet"],
       
  1001            not options["noninteractive"])
       
  1002 
       
  1003     if options["version"]:
  1011     if options["version"]:
  1004         show_version(u)
  1012         show_version(get_ui())
  1005         sys.exit(0)
  1013         sys.exit(0)
  1006 
  1014 
  1007     try:
  1015     try:
  1008         i = find(cmd)
  1016         i = find(cmd)
  1009     except UnknownCommand:
  1017     except UnknownCommand:
       
  1018         u = get_ui()
  1010         u.warn("hg: unknown command '%s'\n" % cmd)
  1019         u.warn("hg: unknown command '%s'\n" % cmd)
  1011         help(u)
  1020         help(u)
  1012         sys.exit(1)
  1021         sys.exit(1)
  1013 
  1022 
  1014     signal.signal(signal.SIGTERM, catchterm)
  1023     # combine global options into local
       
  1024     c = list(i[1])
       
  1025     l = len(c)
       
  1026     for o in opts:
       
  1027         c.append((o[0], o[1], options[o[1]], o[3]))
  1015 
  1028 
  1016     cmdoptions = {}
  1029     cmdoptions = {}
  1017     try:
  1030     try:
  1018         args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2])
  1031         args = fancyopts.fancyopts(args, c, cmdoptions, i[2])
  1019     except fancyopts.getopt.GetoptError, inst:
  1032     except fancyopts.getopt.GetoptError, inst:
       
  1033         u = get_ui()
  1020         u.warn("hg %s: %s\n" % (cmd, inst))
  1034         u.warn("hg %s: %s\n" % (cmd, inst))
  1021         help(u, cmd)
  1035         help(u, cmd)
  1022         sys.exit(-1)
  1036         sys.exit(-1)
       
  1037 
       
  1038     # separate global options back out
       
  1039     for o in opts:
       
  1040         n = o[1]
       
  1041         options[n] = cmdoptions[n]
       
  1042         del cmdoptions[n]
       
  1043 
       
  1044     u = get_ui()
  1023 
  1045 
  1024     try:
  1046     try:
  1025         try:
  1047         try:
  1026             if cmd not in norepo.split():
  1048             if cmd not in norepo.split():
  1027                 path = options["repository"] or ""
  1049                 path = options["repository"] or ""