#N/A Move get_all_executables (formerly get_all_callables) to utils

This commit is contained in:
nvbn
2015-07-20 21:04:49 +03:00
parent c67560864a
commit dee018e792
6 changed files with 48 additions and 48 deletions
+19
View File
@@ -1,5 +1,6 @@
from difflib import get_close_matches
from functools import wraps
from pathlib import Path
from shlex import split
import os
import pickle
@@ -121,3 +122,21 @@ def get_closest(word, possibilities, n=3, cutoff=0.6, fallback_to_first=True):
except IndexError:
if fallback_to_first:
return possibilities[0]
@memoize
def get_all_executables():
from thefuck.shells import thefuck_alias, get_aliases
def _safe(fn, fallback):
try:
return fn()
except OSError:
return fallback
tf_alias = thefuck_alias()
return [exe.name
for path in os.environ.get('PATH', '').split(':')
for exe in _safe(lambda: list(Path(path).iterdir()), [])
if not _safe(exe.is_dir, True)] + [
alias for alias in get_aliases() if alias != tf_alias]