1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-01-31 02:01:13 +00:00

A special case for 'Permission denied' error msg when trying to execute a

python scripy.

The script does not have execute permission and/or does not start with !#/usr/...
In that case, pre-pend the command with 'python' keyword.

Change-Id: Idf73ee9cf0a523f51c78672188a457b2fcedc1e6
This commit is contained in:
Sudeep Juvekar 2015-04-20 10:49:39 -04:00
parent 9ecda9a399
commit 411aea67f7
3 changed files with 22 additions and 1 deletions

View File

@ -0,0 +1,9 @@
from thefuck.main import Command
from thefuck.rules.sudo import match, get_new_command
def test_match():
assert match(Command('', '', 'Permission denied'), None)
assert not match(Command('', '', ''), None)
def test_get_new_command():
assert get_new_command(Command('./test_sudo.py', '', ''), None) == 'python ./test_sudo.py'

View File

@ -51,7 +51,7 @@ def get_rules(user_dir, settings):
.joinpath('rules')\
.glob('*.py')
user = user_dir.joinpath('rules').glob('*.py')
return [load_rule(rule) for rule in list(bundled) + list(user)
return [load_rule(rule) for rule in sorted(list(bundled)) + list(user)
if rule.name != '__init__.py' and is_rule_enabled(settings, rule)]

View File

@ -0,0 +1,12 @@
# add 'python' suffix to the command if
# 1) The script does not have execute permission or
# 2) is interpreted as shell script
def match(command, settings):
toks = command.script.split()
return (toks[0].endswith('.py')
and ('Permission denied' in command.stderr or
'command not found' in command.stderr))
def get_new_command(command, settings):
return 'python ' + command.script