52 |
52 |
53 # input/output/error streams |
53 # input/output/error streams |
54 self.fin = fin |
54 self.fin = fin |
55 self.fout = fout |
55 self.fout = fout |
56 self.ferr = ferr |
56 self.ferr = ferr |
|
57 |
|
58 # remember options pre-parsed by _earlyreqopt*() |
|
59 self.earlyoptions = {} |
57 |
60 |
58 # reposetups which run before extensions, useful for chg to pre-fill |
61 # reposetups which run before extensions, useful for chg to pre-fill |
59 # low-level repo state (for example, changelog) before extensions. |
62 # low-level repo state (for example, changelog) before extensions. |
60 self.prereposetups = prereposetups or [] |
63 self.prereposetups = prereposetups or [] |
61 |
64 |
705 >>> _earlyreqoptbool(req, b'debugger', [b'--debugger']) |
708 >>> _earlyreqoptbool(req, b'debugger', [b'--debugger']) |
706 True |
709 True |
707 |
710 |
708 >>> req = request([b'x', b'--', b'--debugger']) |
711 >>> req = request([b'x', b'--', b'--debugger']) |
709 >>> _earlyreqoptbool(req, b'debugger', [b'--debugger']) |
712 >>> _earlyreqoptbool(req, b'debugger', [b'--debugger']) |
710 False |
|
711 """ |
713 """ |
712 try: |
714 try: |
713 argcount = req.args.index("--") |
715 argcount = req.args.index("--") |
714 except ValueError: |
716 except ValueError: |
715 argcount = len(req.args) |
717 argcount = len(req.args) |
716 value = False |
718 value = None |
717 pos = 0 |
719 pos = 0 |
718 while pos < argcount: |
720 while pos < argcount: |
719 arg = req.args[pos] |
721 arg = req.args[pos] |
720 if arg in aliases: |
722 if arg in aliases: |
721 value = True |
723 value = True |
722 pos += 1 |
724 pos += 1 |
|
725 req.earlyoptions[name] = value |
723 return value |
726 return value |
724 |
727 |
725 def runcommand(lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions): |
728 def runcommand(lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions): |
726 # run pre-hook, and abort if it fails |
729 # run pre-hook, and abort if it fails |
727 hook.hook(lui, repo, "pre-%s" % cmd, True, args=" ".join(fullargs), |
730 hook.hook(lui, repo, "pre-%s" % cmd, True, args=" ".join(fullargs), |
847 raise error.Abort(_("option --cwd may not be abbreviated!")) |
850 raise error.Abort(_("option --cwd may not be abbreviated!")) |
848 if options["repository"]: |
851 if options["repository"]: |
849 raise error.Abort(_( |
852 raise error.Abort(_( |
850 "option -R has to be separated from other options (e.g. not " |
853 "option -R has to be separated from other options (e.g. not " |
851 "-qR) and --repository may only be abbreviated as --repo!")) |
854 "-qR) and --repository may only be abbreviated as --repo!")) |
|
855 if options["debugger"] != req.earlyoptions["debugger"]: |
|
856 raise error.Abort(_("option --debugger may not be abbreviated!")) |
|
857 # don't validate --profile/--traceback, which can be enabled from now |
852 |
858 |
853 if options["encoding"]: |
859 if options["encoding"]: |
854 encoding.encoding = options["encoding"] |
860 encoding.encoding = options["encoding"] |
855 if options["encodingmode"]: |
861 if options["encodingmode"]: |
856 encoding.encodingmode = options["encodingmode"] |
862 encoding.encodingmode = options["encodingmode"] |