changeset 4552:38cdee6b6675

dispatch: parse and apply cwd opt early
author Matt Mackall <mpm@selenic.com>
date Mon, 11 Jun 2007 21:09:24 -0500
parents 61e33f1d44a8
children 741f64dfc04d
files mercurial/cmdutil.py
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -238,7 +238,20 @@ def parseconfig(config):
             raise util.Abort(_('malformed --config option: %s') % cfg)
     return parsed
 
+def earlygetopt(aliases, args):
+    if "--" in args:
+        args = args[:args.index("--")]
+    for opt in aliases:
+        if opt in args:
+            return args[args.index(opt) + 1]
+    return None
+
 def dispatch(ui, args):
+    # check for cwd first
+    cwd = earlygetopt(['--cwd'], args)
+    if cwd:
+        os.chdir(cwd)
+
     extensions.loadall(ui)
     ui.addreadhook(extensions.loadall)
 
@@ -261,9 +274,6 @@ def dispatch(ui, args):
                 (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['cwd']:
-        os.chdir(options['cwd'])
-
     ui.updateopts(options["verbose"], options["debug"], options["quiet"],
                  not options["noninteractive"], options["traceback"],
                  parseconfig(options["config"]))