diff --git a/README.md b/README.md index 57ca6234..350b1a58 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,7 @@ following rules are enabled by default: * `git_fix_stash` – fixes `git stash` commands (misspelled subcommand and missing `save`); * `git_flag_after_filename` – fixes `fatal: bad flag '...' after filename` * `git_help_aliased` – fixes `git help ` commands replacing with the aliased command; +* `git_lfs_mistype` – fixes mistyped `git lfs ` commands; * `git_merge` – adds remote to branch names; * `git_merge_unrelated` – adds `--allow-unrelated-histories` when required * `git_not_command` – fixes wrong git commands like `git brnch`; diff --git a/tests/rules/test_git_lfs_mistype.py b/tests/rules/test_git_lfs_mistype.py new file mode 100644 index 00000000..1aae66fc --- /dev/null +++ b/tests/rules/test_git_lfs_mistype.py @@ -0,0 +1,29 @@ +import pytest + +from thefuck.rules.git_lfs_mistype import match, get_new_command +from thefuck.types import Command + + +@pytest.fixture +def mistype_response(): + return """ +Error: unknown command "evn" for "git-lfs" + +Did you mean this? + env + ext + +Run 'git-lfs --help' for usage. + """ + + +def test_match(mistype_response): + assert match(Command('git lfs evn', mistype_response)) + err_response = 'bash: git: command not found' + assert not match(Command('git lfs env', err_response)) + assert not match(Command('docker lfs env', mistype_response)) + + +def test_get_new_command(mistype_response): + assert (get_new_command(Command('git lfs evn', mistype_response)) + == ['git lfs env', 'git lfs ext']) diff --git a/thefuck/rules/git_lfs_mistype.py b/thefuck/rules/git_lfs_mistype.py new file mode 100644 index 00000000..afa3d5b7 --- /dev/null +++ b/thefuck/rules/git_lfs_mistype.py @@ -0,0 +1,18 @@ +import re +from thefuck.utils import get_all_matched_commands, replace_command +from thefuck.specific.git import git_support + + +@git_support +def match(command): + ''' + Match a mistyped command + ''' + return 'lfs' in command.script and 'Did you mean this?' in command.output + + +@git_support +def get_new_command(command): + broken_cmd = re.findall(r'Error: unknown command "([^"]*)" for "git-lfs"', command.output)[0] + matched = get_all_matched_commands(command.output, ['Did you mean', ' for usage.']) + return replace_command(command, broken_cmd, matched)