Mercurial > hg
changeset 19099:fc081623f4bd stable
dispatch: add support for --option=value to _earlygetopt
This fixes a very confusing error message:
$ hg --config=pager.enabled=off st
abort: option --config may not be abbreviated!
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Mon, 29 Apr 2013 14:14:42 -0700 |
parents | f01ae031f84c |
children | da4175159dac |
files | mercurial/dispatch.py |
diffstat | 1 files changed, 19 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/dispatch.py Mon Apr 29 14:14:41 2013 -0700 +++ b/mercurial/dispatch.py Mon Apr 29 14:14:42 2013 -0700 @@ -490,6 +490,10 @@ >>> _earlygetopt(['--cwd'], args), args (['foo'], ['x', 'y']) + >>> args = ['x', '--cwd=bar', 'y'] + >>> _earlygetopt(['--cwd'], args), args + (['bar'], ['x', 'y']) + >>> args = ['x', '-R', 'foo', 'y'] >>> _earlygetopt(['-R'], args), args (['foo'], ['x', 'y']) @@ -506,14 +510,22 @@ 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 + fullarg = arg = args[pos] + equals = arg.find('=') + if equals > -1: + arg = arg[:equals] + if arg in aliases: del args[pos] - values.append(args.pop(pos)) - argcount -= 2 - elif args[pos][:2] in shortopts: + if equals > -1: + values.append(fullarg[equals + 1:]) + argcount -= 1 + else: + if pos + 1 >= argcount: + # ignore and let getopt report an error if there is no value + break + values.append(args.pop(pos)) + argcount -= 2 + elif arg[:2] in shortopts: # short option can have no following space, e.g. hg log -Rfoo values.append(args.pop(pos)[2:]) argcount -= 1