mirror of
https://github.com/nvbn/thefuck.git
synced 2025-03-20 09:39:01 +00:00
refact(shells): cache aliases to speed up subsequent calls
Signed-off-by: Pablo Santiago Blum de Aguiar <scorphus@gmail.com>
This commit is contained in:
parent
675317b247
commit
2bebfabf8d
@ -12,8 +12,10 @@ from .utils import DEVNULL
|
|||||||
|
|
||||||
|
|
||||||
class Generic(object):
|
class Generic(object):
|
||||||
|
_aliases = {}
|
||||||
|
|
||||||
def get_aliases(self):
|
def get_aliases(self):
|
||||||
return {}
|
return self._aliases
|
||||||
|
|
||||||
def _expand_aliases(self, command_script):
|
def _expand_aliases(self, command_script):
|
||||||
aliases = self.get_aliases()
|
aliases = self.get_aliases()
|
||||||
@ -62,11 +64,15 @@ class Bash(Generic):
|
|||||||
return name, value
|
return name, value
|
||||||
|
|
||||||
def get_aliases(self):
|
def get_aliases(self):
|
||||||
proc = Popen('bash -ic alias', stdout=PIPE, stderr=DEVNULL, shell=True)
|
if not self._aliases:
|
||||||
return dict(
|
proc = Popen('bash -ic alias', stdout=PIPE, stderr=DEVNULL,
|
||||||
self._parse_alias(alias)
|
shell=True)
|
||||||
for alias in proc.stdout.read().decode('utf-8').split('\n')
|
self._aliases = dict(
|
||||||
if alias and '=' in alias)
|
self._parse_alias(alias)
|
||||||
|
for alias in proc.stdout.read().decode('utf-8').split('\n')
|
||||||
|
if alias and '=' in alias)
|
||||||
|
|
||||||
|
return self._aliases
|
||||||
|
|
||||||
def _get_history_file_name(self):
|
def _get_history_file_name(self):
|
||||||
return os.environ.get("HISTFILE",
|
return os.environ.get("HISTFILE",
|
||||||
@ -112,11 +118,15 @@ class Zsh(Generic):
|
|||||||
return name, value
|
return name, value
|
||||||
|
|
||||||
def get_aliases(self):
|
def get_aliases(self):
|
||||||
proc = Popen('zsh -ic alias', stdout=PIPE, stderr=DEVNULL, shell=True)
|
if not self._aliases:
|
||||||
return dict(
|
proc = Popen('zsh -ic alias', stdout=PIPE, stderr=DEVNULL,
|
||||||
self._parse_alias(alias)
|
shell=True)
|
||||||
for alias in proc.stdout.read().decode('utf-8').split('\n')
|
self._aliases = dict(
|
||||||
if alias and '=' in alias)
|
self._parse_alias(alias)
|
||||||
|
for alias in proc.stdout.read().decode('utf-8').split('\n')
|
||||||
|
if alias and '=' in alias)
|
||||||
|
|
||||||
|
return self._aliases
|
||||||
|
|
||||||
def _get_history_file_name(self):
|
def _get_history_file_name(self):
|
||||||
return os.environ.get("HISTFILE",
|
return os.environ.get("HISTFILE",
|
||||||
@ -135,11 +145,15 @@ class Tcsh(Generic):
|
|||||||
return name, value
|
return name, value
|
||||||
|
|
||||||
def get_aliases(self):
|
def get_aliases(self):
|
||||||
proc = Popen('tcsh -ic alias', stdout=PIPE, stderr=DEVNULL, shell=True)
|
if not self._aliases:
|
||||||
return dict(
|
proc = Popen('tcsh -ic alias', stdout=PIPE, stderr=DEVNULL,
|
||||||
self._parse_alias(alias)
|
shell=True)
|
||||||
for alias in proc.stdout.read().decode('utf-8').split('\n')
|
self._aliases = dict(
|
||||||
if alias and '\t' in alias)
|
self._parse_alias(alias)
|
||||||
|
for alias in proc.stdout.read().decode('utf-8').split('\n')
|
||||||
|
if alias and '\t' in alias)
|
||||||
|
|
||||||
|
return self._aliases
|
||||||
|
|
||||||
def _get_history_file_name(self):
|
def _get_history_file_name(self):
|
||||||
return os.environ.get("HISTFILE",
|
return os.environ.get("HISTFILE",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user