mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 10:11:14 +00:00
Merge pull request #107 from kimtree/support-pip
Add a support for pip unknown commands
This commit is contained in:
commit
f5e9124327
@ -162,6 +162,7 @@ using matched rule and run it. Rules enabled by default:
|
|||||||
* `lein_not_task` – fixes wrong `lein` tasks like `lein rpl`;
|
* `lein_not_task` – fixes wrong `lein` tasks like `lein rpl`;
|
||||||
* `mkdir_p` – adds `-p` when you trying to create directory without parent;
|
* `mkdir_p` – adds `-p` when you trying to create directory without parent;
|
||||||
* `no_command` – fixes wrong console commands, for example `vom/vim`;
|
* `no_command` – fixes wrong console commands, for example `vom/vim`;
|
||||||
|
* `pip_unknown_command` – fixes wrong pip commands, for example `pip instatl/pip install`;
|
||||||
* `python_command` – prepends `python` when you trying to run not executable/without `./` python script;
|
* `python_command` – prepends `python` when you trying to run not executable/without `./` python script;
|
||||||
* `sl_ls` – changes `sl` to `ls`;
|
* `sl_ls` – changes `sl` to `ls`;
|
||||||
* `rm_dir` – adds `-rf` when you trying to remove directory;
|
* `rm_dir` – adds `-rf` when you trying to remove directory;
|
||||||
|
24
tests/rules/test_pip_unknown_command.py
Normal file
24
tests/rules/test_pip_unknown_command.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import pytest
|
||||||
|
from thefuck.types import Command
|
||||||
|
from thefuck.rules.pip_unknown_command import match, get_new_command
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def pip_unknown_cmd():
|
||||||
|
return '''ERROR: unknown command "instatl" - maybe you meant "install"'''
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def pip_unknown_cmd_without_recommend():
|
||||||
|
return '''ERROR: unknown command "i"'''
|
||||||
|
|
||||||
|
|
||||||
|
def test_match(pip_unknown_cmd, pip_unknown_cmd_without_recommend):
|
||||||
|
assert match(Command('pip instatl', '', pip_unknown_cmd), None)
|
||||||
|
assert not match(Command('pip i', '', pip_unknown_cmd_without_recommend),
|
||||||
|
None)
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_new_command(pip_unknown_cmd):
|
||||||
|
assert get_new_command(Command('pip instatl', '', pip_unknown_cmd), None)\
|
||||||
|
== 'pip install'
|
15
thefuck/rules/pip_unknown_command.py
Normal file
15
thefuck/rules/pip_unknown_command.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def match(command, settings):
|
||||||
|
return ('pip' in command.script and
|
||||||
|
'unknown command' in command.stderr and
|
||||||
|
'maybe you meant' in command.stderr)
|
||||||
|
|
||||||
|
|
||||||
|
def get_new_command(command, settings):
|
||||||
|
broken_cmd = re.findall(r'ERROR: unknown command \"([a-z]+)\"',
|
||||||
|
command.stderr)[0]
|
||||||
|
new_cmd = re.findall(r'maybe you meant \"([a-z]+)\"', command.stderr)[0]
|
||||||
|
|
||||||
|
return command.script.replace(broken_cmd, new_cmd, 1)
|
Loading…
x
Reference in New Issue
Block a user