mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +00:00 
			
		
		
		
	refact(shells): add and_ method to assemble expressions involving AND
				
					
				
			Signed-off-by: Pablo Santiago Blum de Aguiar <scorphus@gmail.com>
This commit is contained in:
		
							
								
								
									
										0
									
								
								tests/rules/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/rules/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										6
									
								
								tests/rules/conftest.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tests/rules/conftest.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | import pytest | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.fixture(autouse=True) | ||||||
|  | def generic_shell(monkeypatch): | ||||||
|  |     monkeypatch.setattr('thefuck.shells.and_', lambda *x: ' && '.join(x)) | ||||||
| @@ -1,3 +1,5 @@ | |||||||
|  | from thefuck import shells | ||||||
|  |  | ||||||
| try: | try: | ||||||
|     import CommandNotFound |     import CommandNotFound | ||||||
| except ImportError: | except ImportError: | ||||||
| @@ -20,4 +22,5 @@ def get_new_command(command, settings): | |||||||
|     c = CommandNotFound.CommandNotFound() |     c = CommandNotFound.CommandNotFound() | ||||||
|     pkgs = c.getPackages(command.script.split(" ")[0]) |     pkgs = c.getPackages(command.script.split(" ")[0]) | ||||||
|     name, _ = pkgs[0] |     name, _ = pkgs[0] | ||||||
|     return "sudo apt-get install {} && {}".format(name, command.script) |     formatme = shells.and_('sudo apt-get install {}', '{}') | ||||||
|  |     return formatme.format(name, command.script) | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| import re | import re | ||||||
|  | from thefuck import shells | ||||||
| from thefuck.utils import sudo_support | from thefuck.utils import sudo_support | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -11,4 +12,5 @@ def match(command, settings): | |||||||
|  |  | ||||||
| @sudo_support | @sudo_support | ||||||
| def get_new_command(command, settings): | def get_new_command(command, settings): | ||||||
|     return re.sub(r'^cd (.*)', 'mkdir -p \\1 && cd \\1', command.script) |     repl = shells.and_('mkdir -p \\1', 'cd \\1') | ||||||
|  |     return re.sub(r'^cd (.*)', repl, command.script) | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| import re | import re | ||||||
|  | from thefuck import shells | ||||||
|  |  | ||||||
|  |  | ||||||
| def match(command, settings): | def match(command, settings): | ||||||
| @@ -12,4 +13,5 @@ def get_new_command(command, settings): | |||||||
|             r"error: pathspec '([^']*)' " |             r"error: pathspec '([^']*)' " | ||||||
|             "did not match any file\(s\) known to git.", command.stderr)[0] |             "did not match any file\(s\) known to git.", command.stderr)[0] | ||||||
|  |  | ||||||
|     return 'git add -- {} && {}'.format(missing_file, command.script) |     formatme = shells.and_('git add -- {}', '{}') | ||||||
|  |     return formatme.format(missing_file, command.script) | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| import re | import re | ||||||
|  | from thefuck import shells | ||||||
|  |  | ||||||
|  |  | ||||||
| def match(command, settings): | def match(command, settings): | ||||||
| @@ -12,4 +13,5 @@ def get_new_command(command, settings): | |||||||
|             r"error: pathspec '([^']*)' " |             r"error: pathspec '([^']*)' " | ||||||
|             "did not match any file\(s\) known to git.", command.stderr)[0] |             "did not match any file\(s\) known to git.", command.stderr)[0] | ||||||
|  |  | ||||||
|     return 'git branch {} && {}'.format(missing_file, command.script) |     formatme = shells.and_('git branch {}', '{}') | ||||||
|  |     return formatme.format(missing_file, command.script) | ||||||
|   | |||||||
| @@ -1,3 +1,6 @@ | |||||||
|  | from thefuck import shells | ||||||
|  |  | ||||||
|  |  | ||||||
| def match(command, settings): | def match(command, settings): | ||||||
|     # catches "Please commit or stash them" and "Please, commit your changes or |     # catches "Please commit or stash them" and "Please, commit your changes or | ||||||
|     # stash them before you can switch branches." |     # stash them before you can switch branches." | ||||||
| @@ -5,4 +8,5 @@ def match(command, settings): | |||||||
|  |  | ||||||
|  |  | ||||||
| def get_new_command(command, settings): | def get_new_command(command, settings): | ||||||
|     return 'git stash && ' + command.script |     formatme = shells.and_('git stash', '{}') | ||||||
|  |     return formatme.format(command.script) | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| import re | import re | ||||||
|  | from thefuck import shells | ||||||
|  |  | ||||||
|  |  | ||||||
| patterns = ( | patterns = ( | ||||||
| @@ -25,4 +26,5 @@ def get_new_command(command, settings): | |||||||
|             file = file[0] |             file = file[0] | ||||||
|             dir = file[0:file.rfind('/')] |             dir = file[0:file.rfind('/')] | ||||||
|  |  | ||||||
|             return 'mkdir -p {} && {}'.format(dir, command.script) |             formatme = shells.and_('mkdir -p {}', '{}') | ||||||
|  |             return formatme.format(dir, command.script) | ||||||
|   | |||||||
| @@ -1,4 +1,5 @@ | |||||||
| import subprocess | import subprocess | ||||||
|  | from thefuck import shells | ||||||
| from thefuck.utils import DEVNULL | from thefuck.utils import DEVNULL | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -30,7 +31,8 @@ def match(command, settings): | |||||||
| def get_new_command(command, settings): | def get_new_command(command, settings): | ||||||
|     package = __get_pkgfile(command)[0] |     package = __get_pkgfile(command)[0] | ||||||
|  |  | ||||||
|     return '{} -S {} && {}'.format(pacman, package, command.script) |     formatme = shells.and_('{} -S {}', '{}') | ||||||
|  |     return formatme.format(pacman, package, command.script) | ||||||
|  |  | ||||||
|  |  | ||||||
| if not __command_available('pkgfile'): | if not __command_available('pkgfile'): | ||||||
|   | |||||||
| @@ -47,6 +47,9 @@ class Generic(object): | |||||||
|             with open(history_file_name, 'a') as history: |             with open(history_file_name, 'a') as history: | ||||||
|                 history.write(self._get_history_line(command_script)) |                 history.write(self._get_history_line(command_script)) | ||||||
|  |  | ||||||
|  |     def and_(self, *commands): | ||||||
|  |         return ' && '.join(commands) | ||||||
|  |  | ||||||
|  |  | ||||||
| class Bash(Generic): | class Bash(Generic): | ||||||
|     def app_alias(self): |     def app_alias(self): | ||||||
| @@ -150,3 +153,7 @@ def app_alias(): | |||||||
|  |  | ||||||
| def put_to_history(command): | def put_to_history(command): | ||||||
|     return _get_shell().put_to_history(command) |     return _get_shell().put_to_history(command) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def and_(*commands): | ||||||
|  |     return _get_shell().and_(*commands) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user