mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +00:00 
			
		
		
		
	Merge pull request #478 from MattKotsenas/feature/powershell-shell
Add Powershell as shell
This commit is contained in:
		
							
								
								
									
										19
									
								
								tests/shells/test_powershell.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								tests/shells/test_powershell.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  |  | ||||||
|  | import pytest | ||||||
|  | from thefuck.shells import Powershell | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @pytest.mark.usefixtures('isfile', 'no_memoize', 'no_cache') | ||||||
|  | class TestPowershell(object): | ||||||
|  |     @pytest.fixture | ||||||
|  |     def shell(self): | ||||||
|  |         return Powershell() | ||||||
|  |  | ||||||
|  |     def test_and_(self, shell): | ||||||
|  |         assert shell.and_('ls', 'cd') == '(ls) -and (cd)' | ||||||
|  |  | ||||||
|  |     def test_app_alias(self, shell): | ||||||
|  |         assert 'function fuck' in shell.app_alias('fuck') | ||||||
|  |         assert 'function FUCK' in shell.app_alias('FUCK') | ||||||
|  |         assert 'thefuck' in shell.app_alias('fuck') | ||||||
| @@ -9,20 +9,37 @@ from .fish import Fish | |||||||
| from .generic import Generic | from .generic import Generic | ||||||
| from .tcsh import Tcsh | from .tcsh import Tcsh | ||||||
| from .zsh import Zsh | from .zsh import Zsh | ||||||
|  | from .powershell import Powershell | ||||||
|  |  | ||||||
| shells = {'bash': Bash, | shells = {'bash': Bash, | ||||||
|           'fish': Fish, |           'fish': Fish, | ||||||
|           'zsh': Zsh, |           'zsh': Zsh, | ||||||
|           'csh': Tcsh, |           'csh': Tcsh, | ||||||
|           'tcsh': Tcsh} |           'tcsh': Tcsh, | ||||||
|  |           'powershell': Powershell} | ||||||
|  |  | ||||||
|  |  | ||||||
| def _get_shell(): | def _get_shell(): | ||||||
|     try: |     proc = Process(os.getpid()) | ||||||
|         shell_name = Process(os.getpid()).parent().name() |  | ||||||
|     except TypeError: |     while (proc is not None): | ||||||
|         shell_name = Process(os.getpid()).parent.name |         name = None | ||||||
|     return shells.get(shell_name, Generic)() |         try: | ||||||
|  |             name = proc.name() | ||||||
|  |         except TypeError: | ||||||
|  |             name = proc.name | ||||||
|  |  | ||||||
|  |         name = os.path.splitext(name)[0] | ||||||
|  |  | ||||||
|  |         if name in shells: | ||||||
|  |             return shells[name]() | ||||||
|  |  | ||||||
|  |         try: | ||||||
|  |             proc = proc.parent() | ||||||
|  |         except TypeError: | ||||||
|  |             proc = proc.parent | ||||||
|  |  | ||||||
|  |     return Generic() | ||||||
|  |  | ||||||
|  |  | ||||||
| shell = _get_shell() | shell = _get_shell() | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								thefuck/shells/powershell.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								thefuck/shells/powershell.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | from .generic import Generic | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Powershell(Generic): | ||||||
|  |     def app_alias(self, fuck): | ||||||
|  |         return 'function ' + fuck + ' { \n' \ | ||||||
|  |                '    $fuck = $(thefuck (Get-History -Count 1).CommandLine)\n' \ | ||||||
|  |                '    if (-not [string]::IsNullOrWhiteSpace($fuck)) {\n' \ | ||||||
|  |                '        if ($fuck.StartsWith("echo")) { $fuck = $fuck.Substring(5) }\n' \ | ||||||
|  |                '        else { iex "$fuck" }\n' \ | ||||||
|  |                '    }\n' \ | ||||||
|  |                '}\n' | ||||||
|  |  | ||||||
|  |     def and_(self, *commands): | ||||||
|  |         return u' -and '.join('({0})'.format(c) for c in commands) | ||||||
|  |  | ||||||
|  |     def how_to_configure(self): | ||||||
|  |         return 'iex "thefuck --alias"', '$profile' | ||||||
| @@ -16,7 +16,7 @@ def get_key(): | |||||||
|         ch = msvcrt.getch()  # second call returns the actual key code |         ch = msvcrt.getch()  # second call returns the actual key code | ||||||
|  |  | ||||||
|     if ch == b'\x03': |     if ch == b'\x03': | ||||||
|         raise const.KEY_CTRL_C |         return const.KEY_CTRL_C | ||||||
|     if ch == b'H': |     if ch == b'H': | ||||||
|         return const.KEY_UP |         return const.KEY_UP | ||||||
|     if ch == b'P': |     if ch == b'P': | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user