mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 10:11:14 +00:00
#580: Use bashlex in generic shell
This commit is contained in:
parent
d1b9492085
commit
a6f63c0568
@ -1,5 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import bashlex
|
|
||||||
from ..conf import settings
|
from ..conf import settings
|
||||||
from ..utils import memoize
|
from ..utils import memoize
|
||||||
from .generic import Generic
|
from .generic import Generic
|
||||||
@ -46,13 +45,3 @@ class Bash(Generic):
|
|||||||
else:
|
else:
|
||||||
config = 'bash config'
|
config = 'bash config'
|
||||||
return 'eval $(thefuck --alias)', config
|
return 'eval $(thefuck --alias)', config
|
||||||
|
|
||||||
def split_command(self, command):
|
|
||||||
generic = Generic()
|
|
||||||
|
|
||||||
# If bashlex fails for some reason, fallback to shlex
|
|
||||||
# See https://github.com/idank/bashlex#limitations
|
|
||||||
try:
|
|
||||||
return generic.decode_utf8(list(bashlex.split(generic.encode_utf8(command))))
|
|
||||||
except:
|
|
||||||
return generic.split_command(command)
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
|
import bashlex
|
||||||
import six
|
import six
|
||||||
from ..utils import memoize
|
from ..utils import memoize
|
||||||
from ..conf import settings
|
from ..conf import settings
|
||||||
@ -64,8 +65,19 @@ class Generic(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def split_command(self, command):
|
def split_command(self, command):
|
||||||
"""Split the command using shell-like syntax."""
|
"""Split the command using shell-like syntax.
|
||||||
return self.decode_utf8(shlex.split(self.encode_utf8(command)))
|
|
||||||
|
If bashlex fails for some reason, fallback to shlex
|
||||||
|
See https://github.com/idank/bashlex#limitations
|
||||||
|
"""
|
||||||
|
encoded = self.encode_utf8(command)
|
||||||
|
|
||||||
|
try:
|
||||||
|
splitted = list(bashlex.split(encoded))
|
||||||
|
except Exception:
|
||||||
|
splitted = shlex.split(encoded)
|
||||||
|
|
||||||
|
return self.decode_utf8(splitted)
|
||||||
|
|
||||||
def encode_utf8(self, command):
|
def encode_utf8(self, command):
|
||||||
if six.PY2:
|
if six.PY2:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user