mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 12:06:04 +00:00
Add terraform 'no command' rule (#1317)
* Add terraform 'no command' rule * Feedback from PR Co-authored-by: Joseph Daniel <jdn@logpoint.com>
This commit is contained in:
parent
77627a3140
commit
ceeaeab94b
@ -332,6 +332,7 @@ following rules are enabled by default:
|
||||
* `switch_lang` – switches command from your local layout to en;
|
||||
* `systemctl` – correctly orders parameters of confusing `systemctl`;
|
||||
* `terraform_init.py` – run `terraform init` before plan or apply;
|
||||
* `terraform_no_command.py` – fixes unrecognized `terraform` commands;
|
||||
* `test.py` – runs `py.test` instead of `test.py`;
|
||||
* `touch` – creates missing directories before "touching";
|
||||
* `tsuru_login` – runs `tsuru login` if not authenticated or session expired;
|
||||
|
27
tests/rules/test_terraform_no_command.py
Normal file
27
tests/rules/test_terraform_no_command.py
Normal file
@ -0,0 +1,27 @@
|
||||
import pytest
|
||||
from thefuck.rules.terraform_no_command import match, get_new_command
|
||||
from thefuck.types import Command
|
||||
|
||||
|
||||
@pytest.mark.parametrize('script, output', [
|
||||
('terraform appyl', 'Terraform has no command named "appyl". Did you mean "apply"?'),
|
||||
('terraform destory', 'Terraform has no command named "destory". Did you mean "destroy"?')])
|
||||
def test_match(script, output):
|
||||
assert match(Command(script, output))
|
||||
|
||||
|
||||
@pytest.mark.parametrize('script, output', [
|
||||
('terraform --version', 'Terraform v0.12.2'),
|
||||
('terraform plan', 'No changes. Infrastructure is up-to-date.'),
|
||||
('terraform apply', 'Apply complete! Resources: 0 added, 0 changed, 0 destroyed.'),
|
||||
])
|
||||
def test_not_match(script, output):
|
||||
assert not match(Command(script, output))
|
||||
|
||||
|
||||
@pytest.mark.parametrize('script, output, new_command', [
|
||||
('terraform appyl', 'Terraform has no command named "appyl". Did you mean "apply"?', 'terraform apply',),
|
||||
('terraform destory --some-other-option', 'Terraform has no command named "destory". Did you mean "destroy"?', 'terraform destroy --some-other-option',),
|
||||
])
|
||||
def test_get_new_command(script, output, new_command):
|
||||
assert get_new_command(Command(script, output)) == new_command
|
16
thefuck/rules/terraform_no_command.py
Normal file
16
thefuck/rules/terraform_no_command.py
Normal file
@ -0,0 +1,16 @@
|
||||
import re
|
||||
from thefuck.utils import for_app
|
||||
|
||||
MISTAKE = r'(?<=Terraform has no command named ")([^"]+)(?="\.)'
|
||||
FIX = r'(?<=Did you mean ")([^"]+)(?="\?)'
|
||||
|
||||
|
||||
@for_app('terraform')
|
||||
def match(command):
|
||||
return re.search(MISTAKE, command.output) and re.search(FIX, command.output)
|
||||
|
||||
|
||||
def get_new_command(command):
|
||||
mistake = re.search(MISTAKE, command.output).group(0)
|
||||
fix = re.search(FIX, command.output).group(0)
|
||||
return command.script.replace(mistake, fix)
|
Loading…
Reference in New Issue
Block a user