mercurial/dispatch.py
branchstable
changeset 19099 fc081623f4bd
parent 19098 f01ae031f84c
child 19229 41e39a0299cb
equal deleted inserted replaced
19098:f01ae031f84c 19099:fc081623f4bd
   488 
   488 
   489     >>> args = ['x', '--cwd', 'foo', 'y']
   489     >>> args = ['x', '--cwd', 'foo', 'y']
   490     >>> _earlygetopt(['--cwd'], args), args
   490     >>> _earlygetopt(['--cwd'], args), args
   491     (['foo'], ['x', 'y'])
   491     (['foo'], ['x', 'y'])
   492 
   492 
       
   493     >>> args = ['x', '--cwd=bar', 'y']
       
   494     >>> _earlygetopt(['--cwd'], args), args
       
   495     (['bar'], ['x', 'y'])
       
   496 
   493     >>> args = ['x', '-R', 'foo', 'y']
   497     >>> args = ['x', '-R', 'foo', 'y']
   494     >>> _earlygetopt(['-R'], args), args
   498     >>> _earlygetopt(['-R'], args), args
   495     (['foo'], ['x', 'y'])
   499     (['foo'], ['x', 'y'])
   496 
   500 
   497     >>> args = ['x', '-Rbar', 'y']
   501     >>> args = ['x', '-Rbar', 'y']
   504         argcount = len(args)
   508         argcount = len(args)
   505     shortopts = [opt for opt in aliases if len(opt) == 2]
   509     shortopts = [opt for opt in aliases if len(opt) == 2]
   506     values = []
   510     values = []
   507     pos = 0
   511     pos = 0
   508     while pos < argcount:
   512     while pos < argcount:
   509         if args[pos] in aliases:
   513         fullarg = arg = args[pos]
   510             if pos + 1 >= argcount:
   514         equals = arg.find('=')
   511                 # ignore and let getopt report an error if there is no value
   515         if equals > -1:
   512                 break
   516             arg = arg[:equals]
       
   517         if arg in aliases:
   513             del args[pos]
   518             del args[pos]
   514             values.append(args.pop(pos))
   519             if equals > -1:
   515             argcount -= 2
   520                 values.append(fullarg[equals + 1:])
   516         elif args[pos][:2] in shortopts:
   521                 argcount -= 1
       
   522             else:
       
   523                 if pos + 1 >= argcount:
       
   524                     # ignore and let getopt report an error if there is no value
       
   525                     break
       
   526                 values.append(args.pop(pos))
       
   527                 argcount -= 2
       
   528         elif arg[:2] in shortopts:
   517             # short option can have no following space, e.g. hg log -Rfoo
   529             # short option can have no following space, e.g. hg log -Rfoo
   518             values.append(args.pop(pos)[2:])
   530             values.append(args.pop(pos)[2:])
   519             argcount -= 1
   531             argcount -= 1
   520         else:
   532         else:
   521             pos += 1
   533             pos += 1