1
0
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:
Pablo Santiago Blum de Aguiar 2015-05-21 23:55:34 -03:00
parent 675317b247
commit 2bebfabf8d

View File

@ -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,12 +64,16 @@ 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,
shell=True)
self._aliases = dict(
self._parse_alias(alias) self._parse_alias(alias)
for alias in proc.stdout.read().decode('utf-8').split('\n') for alias in proc.stdout.read().decode('utf-8').split('\n')
if alias and '=' in alias) 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",
os.path.expanduser('~/.bash_history')) os.path.expanduser('~/.bash_history'))
@ -112,12 +118,16 @@ 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,
shell=True)
self._aliases = dict(
self._parse_alias(alias) self._parse_alias(alias)
for alias in proc.stdout.read().decode('utf-8').split('\n') for alias in proc.stdout.read().decode('utf-8').split('\n')
if alias and '=' in alias) 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",
os.path.expanduser('~/.zsh_history')) os.path.expanduser('~/.zsh_history'))
@ -135,12 +145,16 @@ 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,
shell=True)
self._aliases = dict(
self._parse_alias(alias) self._parse_alias(alias)
for alias in proc.stdout.read().decode('utf-8').split('\n') for alias in proc.stdout.read().decode('utf-8').split('\n')
if alias and '\t' in alias) 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",
os.path.expanduser('~/.history')) os.path.expanduser('~/.history'))