comparison mercurial/dispatch.py @ 30678:caf7e1c5efe4

py3: have a bytes version of shlex.split() shlex.split() only accepts unicodes on Python 3. After this patch we will be using pycompat.shlexsplit(). This patch also replaces existing occurences of shlex.split with pycompat.shlexsplit.
author Pulkit Goyal <7895pulkit@gmail.com>
date Sun, 25 Dec 2016 03:06:55 +0530
parents b2be4ccaff1d
children b35e05103641 77eaf9539499
comparison
equal deleted inserted replaced
30677:c80c16a8a0b0 30678:caf7e1c5efe4
12 import errno 12 import errno
13 import getopt 13 import getopt
14 import os 14 import os
15 import pdb 15 import pdb
16 import re 16 import re
17 import shlex
18 import signal 17 import signal
19 import sys 18 import sys
20 import time 19 import time
21 import traceback 20 import traceback
22 21
277 return givenargs[num] 276 return givenargs[num]
278 raise error.Abort(_('too few arguments for command alias')) 277 raise error.Abort(_('too few arguments for command alias'))
279 cmd = re.sub(r'\$(\d+|\$)', replacer, cmd) 278 cmd = re.sub(r'\$(\d+|\$)', replacer, cmd)
280 givenargs = [x for i, x in enumerate(givenargs) 279 givenargs = [x for i, x in enumerate(givenargs)
281 if i not in nums] 280 if i not in nums]
282 args = shlex.split(cmd) 281 args = pycompat.shlexsplit(cmd)
283 return args + givenargs 282 return args + givenargs
284 283
285 def aliasinterpolate(name, args, cmd): 284 def aliasinterpolate(name, args, cmd):
286 '''interpolate args into cmd for shell aliases 285 '''interpolate args into cmd for shell aliases
287 286
349 return ui.system(cmd, environ=env) 348 return ui.system(cmd, environ=env)
350 self.fn = fn 349 self.fn = fn
351 return 350 return
352 351
353 try: 352 try:
354 args = shlex.split(self.definition) 353 args = pycompat.shlexsplit(self.definition)
355 except ValueError as inst: 354 except ValueError as inst:
356 self.badalias = (_("error in definition for alias '%s': %s") 355 self.badalias = (_("error in definition for alias '%s': %s")
357 % (self.name, inst)) 356 % (self.name, inst))
358 return 357 return
359 self.cmdname = cmd = args.pop(0) 358 self.cmdname = cmd = args.pop(0)
459 ui.configbool("ui", "strict")) 458 ui.configbool("ui", "strict"))
460 cmd = aliases[0] 459 cmd = aliases[0]
461 args = aliasargs(entry[0], args) 460 args = aliasargs(entry[0], args)
462 defaults = ui.config("defaults", cmd) 461 defaults = ui.config("defaults", cmd)
463 if defaults: 462 if defaults:
464 args = map(util.expandpath, shlex.split(defaults)) + args 463 args = map(util.expandpath, pycompat.shlexsplit(defaults)) + args
465 c = list(entry[1]) 464 c = list(entry[1])
466 else: 465 else:
467 cmd = None 466 cmd = None
468 c = [] 467 c = []
469 468