Mercurial > hg
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 |