mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 10:11:14 +00:00
Merge pull request #478 from MattKotsenas/feature/powershell-shell
Add Powershell as shell
This commit is contained in:
commit
3a39deb485
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():
|
||||||
|
proc = Process(os.getpid())
|
||||||
|
|
||||||
|
while (proc is not None):
|
||||||
|
name = None
|
||||||
try:
|
try:
|
||||||
shell_name = Process(os.getpid()).parent().name()
|
name = proc.name()
|
||||||
except TypeError:
|
except TypeError:
|
||||||
shell_name = Process(os.getpid()).parent.name
|
name = proc.name
|
||||||
return shells.get(shell_name, Generic)()
|
|
||||||
|
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':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user