mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 02:01:13 +00:00
#N/A Add gulp_not_task
rule
This commit is contained in:
parent
469c5a60b0
commit
b15bc8c423
@ -158,6 +158,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
|
||||
* `git_stash` – stashes you local modifications before rebasing or switching branch;
|
||||
* `go_run` – appends `.go` extension when compiling/running Go programs
|
||||
* `grep_recursive` – adds `-r` when you trying to `grep` directory;
|
||||
* `gulp_not_task` – fixes misspelled gulp tasks;
|
||||
* `has_exists_script` – prepends `./` when script/binary exists;
|
||||
* `heroku_no_command` – fixes wrong `heroku` commands like `heroku log`;
|
||||
* `history` – tries to replace command with most similar command from history;
|
||||
|
28
tests/rules/test_gulp_not_task.py
Normal file
28
tests/rules/test_gulp_not_task.py
Normal file
@ -0,0 +1,28 @@
|
||||
import pytest
|
||||
from tests.utils import Command
|
||||
from thefuck.rules.gulp_not_task import match, get_new_command
|
||||
|
||||
|
||||
def stdout(task):
|
||||
return '''[00:41:11] Using gulpfile gulpfile.js
|
||||
[00:41:11] Task '{}' is not in your gulpfile
|
||||
[00:41:11] Please check the documentation for proper gulpfile formatting
|
||||
'''.format(task)
|
||||
|
||||
|
||||
def test_match():
|
||||
assert match(Command('gulp srve', stdout('srve')), None)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('script, stdout', [
|
||||
('gulp serve', ''),
|
||||
('cat srve', stdout('srve'))])
|
||||
def test_not_march(script, stdout):
|
||||
assert not match(Command(script, stdout), None)
|
||||
|
||||
|
||||
def test_get_new_command(mocker):
|
||||
mocker.patch('thefuck.rules.gulp_not_task.get_gulp_tasks', return_value=[
|
||||
'serve', 'build', 'default'])
|
||||
command = Command('gulp srve', stdout('srve'))
|
||||
assert get_new_command(command, None) == 'gulp serve'
|
22
thefuck/rules/gulp_not_task.py
Normal file
22
thefuck/rules/gulp_not_task.py
Normal file
@ -0,0 +1,22 @@
|
||||
import re
|
||||
import subprocess
|
||||
from thefuck.utils import get_closest, replace_argument
|
||||
|
||||
|
||||
def match(command, script):
|
||||
return command.script.startswith('gulp')\
|
||||
and 'is not in your gulpfile' in command.stdout
|
||||
|
||||
|
||||
def get_gulp_tasks():
|
||||
proc = subprocess.Popen(['gulp', '--tasks-simple'],
|
||||
stdout=subprocess.PIPE)
|
||||
return [line.decode('utf-8')[:-1]
|
||||
for line in proc.stdout.readlines()]
|
||||
|
||||
|
||||
def get_new_command(command, script):
|
||||
wrong_task = re.findall(r"Task '(\w+)' is not in your gulpfile",
|
||||
command.stdout)[0]
|
||||
fixed_task = get_closest(wrong_task, get_gulp_tasks())
|
||||
return replace_argument(command.script, wrong_task, fixed_task)
|
Loading…
x
Reference in New Issue
Block a user