summaryrefslogtreecommitdiff
path: root/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py
diff options
context:
space:
mode:
authorNishanth Amuluru2011-01-11 22:41:51 +0530
committerNishanth Amuluru2011-01-11 22:41:51 +0530
commitb03203c8cb991c16ac8a3d74c8c4078182d0bb48 (patch)
tree7cf13b2deacbfaaec99edb431b83ddd5ea734a52 /eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py
parent0c50203cd9eb94b819883c3110922e873f003138 (diff)
downloadpytask-b03203c8cb991c16ac8a3d74c8c4078182d0bb48.tar.gz
pytask-b03203c8cb991c16ac8a3d74c8c4078182d0bb48.tar.bz2
pytask-b03203c8cb991c16ac8a3d74c8c4078182d0bb48.zip
removed all the buildout files
Diffstat (limited to 'eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py')
-rw-r--r--eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py641
1 files changed, 0 insertions, 641 deletions
diff --git a/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py b/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py
deleted file mode 100644
index 97f0e3e..0000000
--- a/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/dispatch.py
+++ /dev/null
@@ -1,641 +0,0 @@
-# dispatch.py - command dispatching for mercurial
-#
-# Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
-#
-# This software may be used and distributed according to the terms of the
-# GNU General Public License version 2 or any later version.
-
-from i18n import _
-import os, sys, atexit, signal, pdb, socket, errno, shlex, time, traceback, re
-import util, commands, hg, fancyopts, extensions, hook, error
-import cmdutil, encoding
-import ui as uimod
-
-def run():
- "run the command in sys.argv"
- sys.exit(dispatch(sys.argv[1:]))
-
-def dispatch(args):
- "run the command specified in args"
- try:
- u = uimod.ui()
- if '--traceback' in args:
- u.setconfig('ui', 'traceback', 'on')
- except util.Abort, inst:
- sys.stderr.write(_("abort: %s\n") % inst)
- if inst.hint:
- sys.stderr.write(_("(%s)\n") % inst.hint)
- return -1
- except error.ParseError, inst:
- if len(inst.args) > 1:
- sys.stderr.write(_("hg: parse error at %s: %s\n") %
- (inst.args[1], inst.args[0]))
- else:
- sys.stderr.write(_("hg: parse error: %s\n") % inst.args[0])
- return -1
- return _runcatch(u, args)
-
-def _runcatch(ui, args):
- def catchterm(*args):
- raise error.SignalInterrupt
-
- try:
- for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM':
- num = getattr(signal, name, None)
- if num:
- signal.signal(num, catchterm)
- except ValueError:
- pass # happens if called in a thread
-
- try:
- try:
- # enter the debugger before command execution
- if '--debugger' in args:
- ui.warn(_("entering debugger - "
- "type c to continue starting hg or h for help\n"))
- pdb.set_trace()
- try:
- return _dispatch(ui, args)
- finally:
- ui.flush()
- except:
- # enter the debugger when we hit an exception
- if '--debugger' in args:
- traceback.print_exc()
- pdb.post_mortem(sys.exc_info()[2])
- ui.traceback()
- raise
-
- # Global exception handling, alphabetically
- # Mercurial-specific first, followed by built-in and library exceptions
- except error.AmbiguousCommand, inst:
- ui.warn(_("hg: command '%s' is ambiguous:\n %s\n") %
- (inst.args[0], " ".join(inst.args[1])))
- except error.ParseError, inst:
- if len(inst.args) > 1:
- ui.warn(_("hg: parse error at %s: %s\n") %
- (inst.args[1], inst.args[0]))
- else:
- ui.warn(_("hg: parse error: %s\n") % inst.args[0])
- return -1
- except error.LockHeld, inst:
- if inst.errno == errno.ETIMEDOUT:
- reason = _('timed out waiting for lock held by %s') % inst.locker
- else:
- reason = _('lock held by %s') % inst.locker
- ui.warn(_("abort: %s: %s\n") % (inst.desc or inst.filename, reason))
- except error.LockUnavailable, inst:
- ui.warn(_("abort: could not lock %s: %s\n") %
- (inst.desc or inst.filename, inst.strerror))
- except error.CommandError, inst:
- if inst.args[0]:
- ui.warn(_("hg %s: %s\n") % (inst.args[0], inst.args[1]))
- commands.help_(ui, inst.args[0])
- else:
- ui.warn(_("hg: %s\n") % inst.args[1])
- commands.help_(ui, 'shortlist')
- except error.RepoError, inst:
- ui.warn(_("abort: %s!\n") % inst)
- except error.ResponseError, inst:
- ui.warn(_("abort: %s") % inst.args[0])
- if not isinstance(inst.args[1], basestring):
- ui.warn(" %r\n" % (inst.args[1],))
- elif not inst.args[1]:
- ui.warn(_(" empty string\n"))
- else:
- ui.warn("\n%r\n" % util.ellipsis(inst.args[1]))
- except error.RevlogError, inst:
- ui.warn(_("abort: %s!\n") % inst)
- except error.SignalInterrupt:
- ui.warn(_("killed!\n"))
- except error.UnknownCommand, inst:
- ui.warn(_("hg: unknown command '%s'\n") % inst.args[0])
- try:
- # check if the command is in a disabled extension
- # (but don't check for extensions themselves)
- commands.help_(ui, inst.args[0], unknowncmd=True)
- except error.UnknownCommand:
- commands.help_(ui, 'shortlist')
- except util.Abort, inst:
- ui.warn(_("abort: %s\n") % inst)
- if inst.hint:
- ui.warn(_("(%s)\n") % inst.hint)
- except ImportError, inst:
- ui.warn(_("abort: %s!\n") % inst)
- m = str(inst).split()[-1]
- if m in "mpatch bdiff".split():
- ui.warn(_("(did you forget to compile extensions?)\n"))
- elif m in "zlib".split():
- ui.warn(_("(is your Python install correct?)\n"))
- except IOError, inst:
- if hasattr(inst, "code"):
- ui.warn(_("abort: %s\n") % inst)
- elif hasattr(inst, "reason"):
- try: # usually it is in the form (errno, strerror)
- reason = inst.reason.args[1]
- except: # it might be anything, for example a string
- reason = inst.reason
- ui.warn(_("abort: error: %s\n") % reason)
- elif hasattr(inst, "args") and inst.args[0] == errno.EPIPE:
- if ui.debugflag:
- ui.warn(_("broken pipe\n"))
- elif getattr(inst, "strerror", None):
- if getattr(inst, "filename", None):
- ui.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename))
- else:
- ui.warn(_("abort: %s\n") % inst.strerror)
- else:
- raise
- except OSError, inst:
- if getattr(inst, "filename", None):
- ui.warn(_("abort: %s: %s\n") % (inst.strerror, inst.filename))
- else:
- ui.warn(_("abort: %s\n") % inst.strerror)
- except KeyboardInterrupt:
- try:
- ui.warn(_("interrupted!\n"))
- except IOError, inst:
- if inst.errno == errno.EPIPE:
- if ui.debugflag:
- ui.warn(_("\nbroken pipe\n"))
- else:
- raise
- except MemoryError:
- ui.warn(_("abort: out of memory\n"))
- except SystemExit, inst:
- # Commands shouldn't sys.exit directly, but give a return code.
- # Just in case catch this and and pass exit code to caller.
- return inst.code
- except socket.error, inst:
- ui.warn(_("abort: %s\n") % inst.args[-1])
- except:
- ui.warn(_("** unknown exception encountered,"
- " please report by visiting\n"))
- ui.warn(_("** http://mercurial.selenic.com/wiki/BugTracker\n"))
- ui.warn(_("** Python %s\n") % sys.version.replace('\n', ''))
- ui.warn(_("** Mercurial Distributed SCM (version %s)\n")
- % util.version())
- ui.warn(_("** Extensions loaded: %s\n")
- % ", ".join([x[0] for x in extensions.extensions()]))
- raise
-
- return -1
-
-def aliasargs(fn):
- if hasattr(fn, 'args'):
- return fn.args
- return []
-
-class cmdalias(object):
- def __init__(self, name, definition, cmdtable):
- self.name = self.cmd = name
- self.cmdname = ''
- self.definition = definition
- self.args = []
- self.opts = []
- self.help = ''
- self.norepo = True
- self.badalias = False
-
- try:
- aliases, entry = cmdutil.findcmd(self.name, cmdtable)
- for alias, e in cmdtable.iteritems():
- if e is entry:
- self.cmd = alias
- break
- self.shadows = True
- except error.UnknownCommand:
- self.shadows = False
-
- if not self.definition:
- def fn(ui, *args):
- ui.warn(_("no definition for alias '%s'\n") % self.name)
- return 1
- self.fn = fn
- self.badalias = True
-
- return
-
- if self.definition.startswith('!'):
- self.shell = True
- def fn(ui, *args):
- env = {'HG_ARGS': ' '.join((self.name,) + args)}
- def _checkvar(m):
- if int(m.groups()[0]) <= len(args):
- return m.group()
- else:
- return ''
- cmd = re.sub(r'\$(\d+)', _checkvar, self.definition[1:])
- replace = dict((str(i + 1), arg) for i, arg in enumerate(args))
- replace['0'] = self.name
- replace['@'] = ' '.join(args)
- cmd = util.interpolate(r'\$', replace, cmd)
- return util.system(cmd, environ=env)
- self.fn = fn
- return
-
- args = shlex.split(self.definition)
- self.cmdname = cmd = args.pop(0)
- args = map(util.expandpath, args)
-
- for invalidarg in ("--cwd", "-R", "--repository", "--repo"):
- if _earlygetopt([invalidarg], args):
- def fn(ui, *args):
- ui.warn(_("error in definition for alias '%s': %s may only "
- "be given on the command line\n")
- % (self.name, invalidarg))
- return 1
-
- self.fn = fn
- self.badalias = True
- return
-
- try:
- tableentry = cmdutil.findcmd(cmd, cmdtable, False)[1]
- if len(tableentry) > 2:
- self.fn, self.opts, self.help = tableentry
- else:
- self.fn, self.opts = tableentry
-
- self.args = aliasargs(self.fn) + args
- if cmd not in commands.norepo.split(' '):
- self.norepo = False
- if self.help.startswith("hg " + cmd):
- # drop prefix in old-style help lines so hg shows the alias
- self.help = self.help[4 + len(cmd):]
- self.__doc__ = self.fn.__doc__
-
- except error.UnknownCommand:
- def fn(ui, *args):
- ui.warn(_("alias '%s' resolves to unknown command '%s'\n") \
- % (self.name, cmd))
- try:
- # check if the command is in a disabled extension
- commands.help_(ui, cmd, unknowncmd=True)
- except error.UnknownCommand:
- pass
- return 1
- self.fn = fn
- self.badalias = True
- except error.AmbiguousCommand:
- def fn(ui, *args):
- ui.warn(_("alias '%s' resolves to ambiguous command '%s'\n") \
- % (self.name, cmd))
- return 1
- self.fn = fn
- self.badalias = True
-
- def __call__(self, ui, *args, **opts):
- if self.shadows:
- ui.debug("alias '%s' shadows command '%s'\n" %
- (self.name, self.cmdname))
-
- if self.definition.startswith('!'):
- return self.fn(ui, *args, **opts)
- else:
- try:
- util.checksignature(self.fn)(ui, *args, **opts)
- except error.SignatureError:
- args = ' '.join([self.cmdname] + self.args)
- ui.debug("alias '%s' expands to '%s'\n" % (self.name, args))
- raise
-
-def addaliases(ui, cmdtable):
- # aliases are processed after extensions have been loaded, so they
- # may use extension commands. Aliases can also use other alias definitions,
- # but only if they have been defined prior to the current definition.
- for alias, definition in ui.configitems('alias'):
- aliasdef = cmdalias(alias, definition, cmdtable)
- cmdtable[aliasdef.cmd] = (aliasdef, aliasdef.opts, aliasdef.help)
- if aliasdef.norepo:
- commands.norepo += ' %s' % alias
-
-def _parse(ui, args):
- options = {}
- cmdoptions = {}
-
- try:
- args = fancyopts.fancyopts(args, commands.globalopts, options)
- except fancyopts.getopt.GetoptError, inst:
- raise error.CommandError(None, inst)
-
- if args:
- cmd, args = args[0], args[1:]
- aliases, entry = cmdutil.findcmd(cmd, commands.table,
- ui.config("ui", "strict"))
- cmd = aliases[0]
- args = aliasargs(entry[0]) + args
- defaults = ui.config("defaults", cmd)
- if defaults:
- args = map(util.expandpath, shlex.split(defaults)) + args
- c = list(entry[1])
- else:
- cmd = None
- c = []
-
- # combine global options into local
- for o in commands.globalopts:
- c.append((o[0], o[1], options[o[1]], o[3]))
-
- try:
- args = fancyopts.fancyopts(args, c, cmdoptions, True)
- except fancyopts.getopt.GetoptError, inst:
- raise error.CommandError(cmd, inst)
-
- # separate global options back out
- for o in commands.globalopts:
- n = o[1]
- options[n] = cmdoptions[n]
- del cmdoptions[n]
-
- return (cmd, cmd and entry[0] or None, args, options, cmdoptions)
-
-def _parseconfig(ui, config):
- """parse the --config options from the command line"""
- for cfg in config:
- try:
- name, value = cfg.split('=', 1)
- section, name = name.split('.', 1)
- if not section or not name:
- raise IndexError
- ui.setconfig(section, name, value)
- except (IndexError, ValueError):
- raise util.Abort(_('malformed --config option: %r '
- '(use --config section.name=value)') % cfg)
-
-def _earlygetopt(aliases, args):
- """Return list of values for an option (or aliases).
-
- The values are listed in the order they appear in args.
- The options and values are removed from args.
- """
- try:
- argcount = args.index("--")
- except ValueError:
- argcount = len(args)
- shortopts = [opt for opt in aliases if len(opt) == 2]
- values = []
- pos = 0
- while pos < argcount:
- if args[pos] in aliases:
- if pos + 1 >= argcount:
- # ignore and let getopt report an error if there is no value
- break
- del args[pos]
- values.append(args.pop(pos))
- argcount -= 2
- elif args[pos][:2] in shortopts:
- # short option can have no following space, e.g. hg log -Rfoo
- values.append(args.pop(pos)[2:])
- argcount -= 1
- else:
- pos += 1
- return values
-
-def runcommand(lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions):
- # run pre-hook, and abort if it fails
- ret = hook.hook(lui, repo, "pre-%s" % cmd, False, args=" ".join(fullargs),
- pats=cmdpats, opts=cmdoptions)
- if ret:
- return ret
- ret = _runcommand(ui, options, cmd, d)
- # run post-hook, passing command result
- hook.hook(lui, repo, "post-%s" % cmd, False, args=" ".join(fullargs),
- result=ret, pats=cmdpats, opts=cmdoptions)
- return ret
-
-def _getlocal(ui, rpath):
- """Return (path, local ui object) for the given target path.
-
- Takes paths in [cwd]/.hg/hgrc into account."
- """
- try:
- wd = os.getcwd()
- except OSError, e:
- raise util.Abort(_("error getting current working directory: %s") %
- e.strerror)
- path = cmdutil.findrepo(wd) or ""
- if not path:
- lui = ui
- else:
- lui = ui.copy()
- lui.readconfig(os.path.join(path, ".hg", "hgrc"), path)
-
- if rpath:
- path = lui.expandpath(rpath[-1])
- lui = ui.copy()
- lui.readconfig(os.path.join(path, ".hg", "hgrc"), path)
-
- return path, lui
-
-def _checkshellalias(ui, args):
- cwd = os.getcwd()
- norepo = commands.norepo
- options = {}
-
- try:
- args = fancyopts.fancyopts(args, commands.globalopts, options)
- except fancyopts.getopt.GetoptError:
- return
-
- if not args:
- return
-
- _parseconfig(ui, options['config'])
- if options['cwd']:
- os.chdir(options['cwd'])
-
- path, lui = _getlocal(ui, [options['repository']])
-
- cmdtable = commands.table.copy()
- addaliases(lui, cmdtable)
-
- cmd = args[0]
- try:
- aliases, entry = cmdutil.findcmd(cmd, cmdtable, lui.config("ui", "strict"))
- except (error.AmbiguousCommand, error.UnknownCommand):
- commands.norepo = norepo
- os.chdir(cwd)
- return
-
- cmd = aliases[0]
- fn = entry[0]
-
- if cmd and hasattr(fn, 'shell'):
- d = lambda: fn(ui, *args[1:])
- return lambda: runcommand(lui, None, cmd, args[:1], ui, options, d, [], {})
-
- commands.norepo = norepo
- os.chdir(cwd)
-
-_loaded = set()
-def _dispatch(ui, args):
- shellaliasfn = _checkshellalias(ui, args)
- if shellaliasfn:
- return shellaliasfn()
-
- # read --config before doing anything else
- # (e.g. to change trust settings for reading .hg/hgrc)
- _parseconfig(ui, _earlygetopt(['--config'], args))
-
- # check for cwd
- cwd = _earlygetopt(['--cwd'], args)
- if cwd:
- os.chdir(cwd[-1])
-
- rpath = _earlygetopt(["-R", "--repository", "--repo"], args)
- path, lui = _getlocal(ui, rpath)
-
- # Configure extensions in phases: uisetup, extsetup, cmdtable, and
- # reposetup. Programs like TortoiseHg will call _dispatch several
- # times so we keep track of configured extensions in _loaded.
- extensions.loadall(lui)
- exts = [ext for ext in extensions.extensions() if ext[0] not in _loaded]
- # Propagate any changes to lui.__class__ by extensions
- ui.__class__ = lui.__class__
-
- # (uisetup and extsetup are handled in extensions.loadall)
-
- for name, module in exts:
- cmdtable = getattr(module, 'cmdtable', {})
- overrides = [cmd for cmd in cmdtable if cmd in commands.table]
- if overrides:
- ui.warn(_("extension '%s' overrides commands: %s\n")
- % (name, " ".join(overrides)))
- commands.table.update(cmdtable)
- _loaded.add(name)
-
- # (reposetup is handled in hg.repository)
-
- addaliases(lui, commands.table)
-
- # check for fallback encoding
- fallback = lui.config('ui', 'fallbackencoding')
- if fallback:
- encoding.fallbackencoding = fallback
-
- fullargs = args
- cmd, func, args, options, cmdoptions = _parse(lui, args)
-
- if options["config"]:
- raise util.Abort(_("option --config may not be abbreviated!"))
- if options["cwd"]:
- raise util.Abort(_("option --cwd may not be abbreviated!"))
- if options["repository"]:
- raise util.Abort(_(
- "Option -R has to be separated from other options (e.g. not -qR) "
- "and --repository may only be abbreviated as --repo!"))
-
- if options["encoding"]:
- encoding.encoding = options["encoding"]
- if options["encodingmode"]:
- encoding.encodingmode = options["encodingmode"]
- if options["time"]:
- def get_times():
- t = os.times()
- if t[4] == 0.0: # Windows leaves this as zero, so use time.clock()
- t = (t[0], t[1], t[2], t[3], time.clock())
- return t
- s = get_times()
- def print_time():
- t = get_times()
- ui.warn(_("Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n") %
- (t[4]-s[4], t[0]-s[0], t[2]-s[2], t[1]-s[1], t[3]-s[3]))
- atexit.register(print_time)
-
- if options['verbose'] or options['debug'] or options['quiet']:
- ui.setconfig('ui', 'verbose', str(bool(options['verbose'])))
- ui.setconfig('ui', 'debug', str(bool(options['debug'])))
- ui.setconfig('ui', 'quiet', str(bool(options['quiet'])))
- if options['traceback']:
- ui.setconfig('ui', 'traceback', 'on')
- if options['noninteractive']:
- ui.setconfig('ui', 'interactive', 'off')
-
- if options['help']:
- return commands.help_(ui, cmd, options['version'])
- elif options['version']:
- return commands.version_(ui)
- elif not cmd:
- return commands.help_(ui, 'shortlist')
-
- repo = None
- cmdpats = args[:]
- if cmd not in commands.norepo.split():
- try:
- repo = hg.repository(ui, path=path)
- ui = repo.ui
- if not repo.local():
- raise util.Abort(_("repository '%s' is not local") % path)
- ui.setconfig("bundle", "mainreporoot", repo.root)
- except error.RepoError:
- if cmd not in commands.optionalrepo.split():
- if args and not path: # try to infer -R from command args
- repos = map(cmdutil.findrepo, args)
- guess = repos[0]
- if guess and repos.count(guess) == len(repos):
- return _dispatch(ui, ['--repository', guess] + fullargs)
- if not path:
- raise error.RepoError(_("There is no Mercurial repository"
- " here (.hg not found)"))
- raise
- args.insert(0, repo)
- elif rpath:
- ui.warn(_("warning: --repository ignored\n"))
-
- msg = ' '.join(' ' in a and repr(a) or a for a in fullargs)
- ui.log("command", msg + "\n")
- d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
- return runcommand(lui, repo, cmd, fullargs, ui, options, d,
- cmdpats, cmdoptions)
-
-def _runcommand(ui, options, cmd, cmdfunc):
- def checkargs():
- try:
- return cmdfunc()
- except error.SignatureError:
- raise error.CommandError(cmd, _("invalid arguments"))
-
- if options['profile']:
- format = ui.config('profiling', 'format', default='text')
-
- if not format in ['text', 'kcachegrind']:
- ui.warn(_("unrecognized profiling format '%s'"
- " - Ignored\n") % format)
- format = 'text'
-
- output = ui.config('profiling', 'output')
-
- if output:
- path = ui.expandpath(output)
- ostream = open(path, 'wb')
- else:
- ostream = sys.stderr
-
- try:
- from mercurial import lsprof
- except ImportError:
- raise util.Abort(_(
- 'lsprof not available - install from '
- 'http://codespeak.net/svn/user/arigo/hack/misc/lsprof/'))
- p = lsprof.Profiler()
- p.enable(subcalls=True)
- try:
- return checkargs()
- finally:
- p.disable()
-
- if format == 'kcachegrind':
- import lsprofcalltree
- calltree = lsprofcalltree.KCacheGrind(p)
- calltree.output(ostream)
- else:
- # format == 'text'
- stats = lsprof.Stats(p.getstats())
- stats.sort()
- stats.pprint(top=10, file=ostream, climit=5)
-
- if output:
- ostream.close()
- else:
- return checkargs()