mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 22:54:14 +00:00 
			
		
		
		
	Merge branch 'ds-forks-master'
This commit is contained in:
		| @@ -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; | * `has_exists_script` – prepends `./` when script/binary exists; | ||||||
| * `heroku_not_command` – fixes wrong `heroku` commands like `heroku log`; | * `heroku_not_command` – fixes wrong `heroku` commands like `heroku log`; | ||||||
| * `history` – tries to replace command with most similar command from history; | * `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`; | * `ifconfig_device_not_found` – fixes wrong device names like `wlan0` to `wlp2s0`; | ||||||
| * `java` – removes `.java` extension when running Java programs; | * `java` – removes `.java` extension when running Java programs; | ||||||
| * `javac` – appends missing `.java` when compiling Java files; | * `javac` – appends missing `.java` when compiling Java files; | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								tests/rules/test_hostscli.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								tests/rules/test_hostscli.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | import pytest | ||||||
|  | from thefuck.rules.hostscli import no_website, get_new_command, match | ||||||
|  | from tests.utils import Command | ||||||
|  |  | ||||||
|  | no_website_long = ''' | ||||||
|  | {}: | ||||||
|  |  | ||||||
|  | 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 | ||||||
|  | '''.format(no_website) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.parametrize('command', [ | ||||||
|  |     Command('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('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 | ||||||
							
								
								
									
										27
									
								
								thefuck/rules/hostscli.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								thefuck/rules/hostscli.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | import re | ||||||
|  | from thefuck.specific.sudo import sudo_support | ||||||
|  | from thefuck.utils import replace_command, for_app | ||||||
|  |  | ||||||
|  | no_command = "Error: No such command" | ||||||
|  | no_website = "hostscli.errors.WebsiteImportError" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @sudo_support | ||||||
|  | @for_app('hostscli') | ||||||
|  | def match(command): | ||||||
|  |     errors = [no_command, no_website] | ||||||
|  |     for error in errors: | ||||||
|  |         if error in command.stderr: | ||||||
|  |             return True | ||||||
|  |     return False | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @sudo_support | ||||||
|  | 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) | ||||||
| @@ -20,7 +20,8 @@ patterns = ['permission denied', | |||||||
|             'authentication is required', |             'authentication is required', | ||||||
|             'edspermissionerror', |             'edspermissionerror', | ||||||
|             'you don\'t have write permissions', |             'you don\'t have write permissions', | ||||||
|             'use `sudo`'] |             'use `sudo`', | ||||||
|  |             'SudoRequiredError'] | ||||||
|  |  | ||||||
|  |  | ||||||
| def match(command): | def match(command): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user