mirror of
https://github.com/nvbn/thefuck.git
synced 2025-02-20 20:09:07 +00:00
Add a cargo_no_command
rule
This commit is contained in:
parent
01cf199866
commit
f6c013d033
@ -146,7 +146,8 @@ sudo pip install thefuck --upgrade
|
||||
The Fuck tries to match a rule for the previous command, creates a new command
|
||||
using the matched rule and runs it. Rules enabled by default are as follows:
|
||||
|
||||
* `cargo` – run `cargo build` instead of `cargo`;
|
||||
* `cargo` – runs `cargo build` instead of `cargo`;
|
||||
* `cargo_no_command` – fixes wrongs commands like `cargo buid`;
|
||||
* `cd_correction` – spellchecks and correct failed cd commands;
|
||||
* `cd_mkdir` – creates directories before cd'ing into them;
|
||||
* `cd_parent` – changes `cd..` to `cd ..`;
|
||||
|
21
tests/rules/test_cargo_no_command.py
Normal file
21
tests/rules/test_cargo_no_command.py
Normal file
@ -0,0 +1,21 @@
|
||||
import pytest
|
||||
from thefuck.rules.cargo_no_command import match, get_new_command
|
||||
from tests.utils import Command
|
||||
|
||||
|
||||
no_such_subcommand = """No such subcommand
|
||||
|
||||
Did you mean `build`?
|
||||
"""
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command', [
|
||||
Command(script='cargo buid', stderr=no_such_subcommand)])
|
||||
def test_match(command):
|
||||
assert match(command, None)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command, new_command', [
|
||||
(Command('cargo buid', stderr=no_such_subcommand), 'cargo build')])
|
||||
def test_get_new_command(command, new_command):
|
||||
assert get_new_command(command, None) == new_command
|
14
thefuck/rules/cargo_no_command.py
Normal file
14
thefuck/rules/cargo_no_command.py
Normal file
@ -0,0 +1,14 @@
|
||||
import re
|
||||
|
||||
|
||||
def match(command, settings):
|
||||
return ('cargo' in command.script
|
||||
and 'No such subcommand' in command.stderr
|
||||
and 'Did you mean' in command.stderr)
|
||||
|
||||
|
||||
def get_new_command(command, settings):
|
||||
broken = command.script.split()[1]
|
||||
fix = re.findall(r'Did you mean `([^`]*)`', command.stderr)[0]
|
||||
|
||||
return command.script.replace(broken, fix, 1)
|
Loading…
x
Reference in New Issue
Block a user