mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 02:01:13 +00:00
Merge pull request #107 from kimtree/support-pip
Add a support for pip unknown commands
This commit is contained in:
commit
f5e9124327
13
README.md
13
README.md
@ -131,12 +131,12 @@ end
|
||||
Or in your Powershell `$PROFILE` on Windows:
|
||||
|
||||
```powershell
|
||||
function fuck {
|
||||
function fuck {
|
||||
$fuck = $(thefuck (get-history -count 1).commandline)
|
||||
if($fuck.startswith("echo")) {
|
||||
$fuck.substring(5)
|
||||
}
|
||||
else { iex "$fuck" }
|
||||
if($fuck.startswith("echo")) {
|
||||
$fuck.substring(5)
|
||||
}
|
||||
else { iex "$fuck" }
|
||||
}
|
||||
```
|
||||
|
||||
@ -162,6 +162,7 @@ using matched rule and run it. Rules enabled by default:
|
||||
* `lein_not_task` – fixes wrong `lein` tasks like `lein rpl`;
|
||||
* `mkdir_p` – adds `-p` when you trying to create directory without parent;
|
||||
* `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;
|
||||
* `sl_ls` – changes `sl` to `ls`;
|
||||
* `rm_dir` – adds `-rf` when you trying to remove directory;
|
||||
@ -204,7 +205,7 @@ def get_new_command(command, settings):
|
||||
The Fuck has a few settings parameters, they can be changed in `~/.thefuck/settings.py`:
|
||||
|
||||
* `rules` – list of enabled rules, by default `thefuck.conf.DEFAULT_RULES`;
|
||||
* `require_confirmation` – require confirmation before running new command, by default `False`;
|
||||
* `require_confirmation` – require confirmation before running new command, by default `False`;
|
||||
* `wait_command` – max amount of time in seconds for getting previous command output;
|
||||
* `no_colors` – disable colored output.
|
||||
|
||||
|
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