1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-01-19 04:21:14 +00:00

Merge pull request #418 from makalaaneesh/master

sudo sh execute for && in commands - preventing double sudo
This commit is contained in:
Vladimir Iakovlev 2015-12-30 00:57:50 +03:00
commit 25662ad737
2 changed files with 6 additions and 3 deletions

View File

@ -25,6 +25,7 @@ def test_not_match():
@pytest.mark.parametrize('before, after', [
('ls', 'sudo ls'),
('echo a > b', 'sudo sh -c "echo a > b"'),
('echo "a" >> b', 'sudo sh -c "echo \\"a\\" >> b"')])
('echo "a" >> b', 'sudo sh -c "echo \\"a\\" >> b"'),
('mkdir && touch a', 'sudo sh -c "mkdir && touch a"')])
def test_get_new_command(before, after):
assert get_new_command(Command(before)) == after

View File

@ -21,7 +21,7 @@ patterns = ['permission denied',
def match(command):
if command.script_parts and command.script_parts[0] == 'sudo':
if command.script_parts and '&&' not in command.script_parts and command.script_parts[0] == 'sudo':
return False
for pattern in patterns:
@ -32,7 +32,9 @@ def match(command):
def get_new_command(command):
if '>' in command.script:
if '&&' in command.script:
return u'sudo sh -c "{}"'.format(" ".join([part for part in command.script_parts if part != "sudo"]))
elif '>' in command.script:
return u'sudo sh -c "{}"'.format(command.script.replace('"', '\\"'))
else:
return u'sudo {}'.format(command.script)