mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 15:12:20 +00:00 
			
		
		
		
	#380 merge cd_mkdir and cd_correction rules
				
					
				
			This commit is contained in:
		| @@ -141,8 +141,8 @@ using the matched rule and runs it. Rules enabled by default are as follows: | |||||||
|  |  | ||||||
| * `cargo` – runs `cargo build` instead of `cargo`; | * `cargo` – runs `cargo build` instead of `cargo`; | ||||||
| * `cargo_no_command` – fixes wrongs commands like `cargo buid`; | * `cargo_no_command` – fixes wrongs commands like `cargo buid`; | ||||||
| * `cd_correction` – spellchecks and correct failed cd commands; | * `cd_correction` – spellchecks and correct failed cd commands, when it's not possible | ||||||
| * `cd_mkdir` – creates directories before cd'ing into them; | creates directories before cd'ing into them; | ||||||
| * `cd_parent` – changes `cd..` to `cd ..`; | * `cd_parent` – changes `cd..` to `cd ..`; | ||||||
| * `composer_not_command` – fixes composer command name; | * `composer_not_command` – fixes composer command name; | ||||||
| * `cp_omitting_directory` – adds `-a` when you `cp` directory; | * `cp_omitting_directory` – adds `-a` when you `cp` directory; | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| import pytest | import pytest | ||||||
| from thefuck.rules.cd_mkdir import match, get_new_command | from thefuck.rules.cd_correction import match, get_new_command | ||||||
| from tests.utils import Command | from tests.utils import Command | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -2,9 +2,10 @@ | |||||||
|  |  | ||||||
| import os | import os | ||||||
| from difflib import get_close_matches | from difflib import get_close_matches | ||||||
|  | import re | ||||||
| from thefuck.specific.sudo import sudo_support | from thefuck.specific.sudo import sudo_support | ||||||
| from thefuck.rules import cd_mkdir |  | ||||||
| from thefuck.utils import for_app | from thefuck.utils import for_app | ||||||
|  | from thefuck import shells | ||||||
|  |  | ||||||
| __author__ = "mmussomele" | __author__ = "mmussomele" | ||||||
|  |  | ||||||
| @@ -43,11 +44,13 @@ def get_new_command(command): | |||||||
|         elif directory == "..": |         elif directory == "..": | ||||||
|             cwd = os.path.split(cwd)[0] |             cwd = os.path.split(cwd)[0] | ||||||
|             continue |             continue | ||||||
|         best_matches = get_close_matches(directory, _get_sub_dirs(cwd), cutoff=MAX_ALLOWED_DIFF) |         best_matches = get_close_matches( | ||||||
|  |             directory, _get_sub_dirs(cwd), cutoff=MAX_ALLOWED_DIFF) | ||||||
|         if best_matches: |         if best_matches: | ||||||
|             cwd = os.path.join(cwd, best_matches[0]) |             cwd = os.path.join(cwd, best_matches[0]) | ||||||
|         else: |         else: | ||||||
|             return cd_mkdir.get_new_command(command) |             repl = shells.and_('mkdir -p \\1', 'cd \\1') | ||||||
|  |             return re.sub(r'^cd (.*)', repl, command.script) | ||||||
|     return 'cd "{0}"'.format(cwd) |     return 'cd "{0}"'.format(cwd) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,17 +0,0 @@ | |||||||
| import re |  | ||||||
| from thefuck import shells |  | ||||||
| from thefuck.utils import for_app |  | ||||||
| from thefuck.specific.sudo import sudo_support |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @sudo_support |  | ||||||
| @for_app('cd') |  | ||||||
| def match(command): |  | ||||||
|     return (('no such file or directory' in command.stderr.lower() |  | ||||||
|              or 'cd: can\'t cd to' in command.stderr.lower())) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @sudo_support |  | ||||||
| def get_new_command(command): |  | ||||||
|     repl = shells.and_('mkdir -p \\1', 'cd \\1') |  | ||||||
|     return re.sub(r'^cd (.*)', repl, command.script) |  | ||||||
		Reference in New Issue
	
	Block a user