mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 10:11:14 +00:00
Merge pull request #333 from mlk/master
basic support for the hdfs dfs <command> when the command misses the …
This commit is contained in:
commit
8037a17b73
@ -191,6 +191,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
|
||||
* `tsuru_login` – runs `tsuru login` if not authenticated or session expired;
|
||||
* `tsuru_not_command` – fixes wrong `tsuru` commands like `tsuru shell`;
|
||||
* `tmux` – fixes `tmux` commands;
|
||||
* `unknown_command` – fixes hadoop hdfs-style "unknown command" for example adds missing '-' to the command on `hdfs dfs ls`;
|
||||
* `whois` – fixes `whois` command.
|
||||
|
||||
Enabled by default only on specific platforms:
|
||||
|
35
tests/rules/test_unknown_command.py
Normal file
35
tests/rules/test_unknown_command.py
Normal file
@ -0,0 +1,35 @@
|
||||
import pytest
|
||||
from thefuck.rules.unknown_command import match, get_new_command
|
||||
from tests.utils import Command
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command', [
|
||||
Command(script='./bin/hdfs dfs ls', stderr='ls: Unknown command\nDid you mean -ls? This command begins with a dash.'),
|
||||
Command(script='hdfs dfs ls',
|
||||
stderr='ls: Unknown command\nDid you mean -ls? This command begins with a dash.'),
|
||||
Command(script='hdfs dfs ls /foo/bar', stderr='ls: Unknown command\nDid you mean -ls? This command begins with a dash.')])
|
||||
def test_match(command):
|
||||
assert match(command, None)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command', [
|
||||
Command(script='./bin/hdfs dfs -ls', stderr=''),
|
||||
Command(script='./bin/hdfs dfs -ls /foo/bar', stderr=''),
|
||||
Command(script='hdfs dfs -ls -R /foo/bar', stderr=''),
|
||||
Command()])
|
||||
def test_not_match(command):
|
||||
assert not match(command, None)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command, new_command', [
|
||||
(Command('hdfs dfs ls',
|
||||
stderr='ls: Unknown command\nDid you mean -ls? This command begins with a dash.'), ['hdfs dfs -ls']),
|
||||
(Command('hdfs dfs rm /foo/bar',
|
||||
stderr='rm: Unknown command\nDid you mean -rm? This command begins with a dash.'), ['hdfs dfs -rm /foo/bar']),
|
||||
(Command('./bin/hdfs dfs ls -R /foo/bar',
|
||||
stderr='ls: Unknown command\nDid you mean -ls? This command begins with a dash.'), ['./bin/hdfs dfs -ls -R /foo/bar']),
|
||||
(Command('./bin/hdfs dfs -Dtest=fred ls -R /foo/bar',
|
||||
stderr='ls: Unknown command\nDid you mean -ls? This command begins with a dash.'), ['./bin/hdfs dfs -Dtest=fred -ls -R /foo/bar'])])
|
||||
def test_get_new_command(command, new_command):
|
||||
assert get_new_command(command, None) == new_command
|
||||
|
13
thefuck/rules/unknown_command.py
Normal file
13
thefuck/rules/unknown_command.py
Normal file
@ -0,0 +1,13 @@
|
||||
import re
|
||||
from thefuck.utils import (replace_command, get_all_matched_commands)
|
||||
|
||||
def match(command, settings):
|
||||
return (re.search(r"([^:]*): Unknown command.*", command.stderr) != None
|
||||
and re.search(r"Did you mean ([^?]*)?", command.stderr) != None)
|
||||
|
||||
|
||||
def get_new_command(command, settings):
|
||||
broken_cmd = re.findall(r"([^:]*): Unknown command.*", command.stderr)[0]
|
||||
matched = re.findall(r"Did you mean ([^?]*)?", command.stderr)
|
||||
return replace_command(command, broken_cmd, matched)
|
||||
|
Loading…
x
Reference in New Issue
Block a user