1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-02-21 04:18:55 +00:00

Merge branch 'master' of https://github.com/ds-forks/thefuck into ds-forks-master

This commit is contained in:
Vladimir Iakovlev 2017-03-13 13:47:56 +01:00
commit c2b597f22b
4 changed files with 57 additions and 1 deletions

View File

@ -203,6 +203,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
* `has_exists_script` – prepends `./` when script/binary exists;
* `heroku_not_command` – fixes wrong `heroku` commands like `heroku log`;
* `history` – tries to replace command with most similar command from history;
* `hostscli` – tries to fix `hostscli` usage;
* `ifconfig_device_not_found` – fixes wrong device names like `wlan0` to `wlp2s0`;
* `java` – removes `.java` extension when running Java programs;
* `javac` – appends missing `.java` when compiling Java files;

View File

@ -0,0 +1,31 @@
import pytest
from thefuck.rules.hostscli import no_website, get_new_command, match
from tests.utils import Command
no_website_long = '''
%s:
No Domain list found for website: a_website_that_does_not_exist
Please raise a Issue here: https://github.com/dhilipsiva/hostscli/issues/new
if you think we should add domains for this website.
type `hostscli websites` to see a list of websites that you can block/unblock
''' % no_website
@pytest.mark.parametrize('command', [
Command(
'sudo hostscli block a_website_that_does_not_exist',
stderr=no_website_long)])
def test_match(command):
assert match(command)
@pytest.mark.parametrize('command, result', [(
Command(
'sudo hostscli block a_website_that_does_not_exist',
stderr=no_website_long), ['hostscli websites'])])
def test_get_new_command(command, result):
assert get_new_command(command) == result

23
thefuck/rules/hostscli.py Normal file
View File

@ -0,0 +1,23 @@
import re
from thefuck.utils import replace_command
no_command = "Error: No such command"
no_website = "hostscli.errors.WebsiteImportError"
def match(command):
errors = [no_command, no_website]
for error in errors:
if error in command.stderr:
return True
return False
def get_new_command(command):
if no_website in command.stderr:
return ['hostscli websites']
misspelled_command = re.findall(
r'Error: No such command ".*"', command.stderr)[0]
commands = ['block', 'unblock', 'websites', 'block_all', 'unblock_all']
return replace_command(command, misspelled_command, commands)

View File

@ -20,7 +20,8 @@ patterns = ['permission denied',
'authentication is required',
'edspermissionerror',
'you don\'t have write permissions',
'use `sudo`']
'use `sudo`',
'SudoRequiredError']
def match(command):