Skip to content

Commit

Permalink
#385 Little refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
nvbn committed Oct 21, 2015
1 parent bbfedb8 commit 346cb99
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
16 changes: 10 additions & 6 deletions thefuck/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,20 @@ def _init_settings_file(self):
for setting in DEFAULT_SETTINGS.items():
settings_file.write(u'# {} = {}\n'.format(*setting))

def _setup_user_dir(self):
"""Returns user config dir, create it when it doesn't exist."""

def _get_user_dir_path(self):
# for backward compatibility, use `~/.thefuck` if it exists
user_dir = Path(os.path.expanduser('~/.thefuck'))
legacy_user_dir = Path(os.path.expanduser('~/.thefuck'))

if not user_dir.is_dir():
if legacy_user_dir.is_dir():
return legacy_user_dir
else:
default_xdg_config_dir = os.path.expanduser("~/.config")
xdg_config_dir = os.getenv("XDG_CONFIG_HOME", default_xdg_config_dir)
user_dir = Path(os.path.join(xdg_config_dir, 'thefuck'))
return Path(os.path.join(xdg_config_dir, 'thefuck'))

def _setup_user_dir(self):
"""Returns user config dir, create it when it doesn't exist."""
user_dir = self._get_user_dir_path()

rules_dir = user_dir.joinpath('rules')
if not rules_dir.is_dir():
Expand Down
14 changes: 9 additions & 5 deletions thefuck/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,11 +180,7 @@ def _get_mtime(name):
except OSError:
return '0'

@decorator
def _cache(fn, *args, **kwargs):
if cache.disabled:
return fn(*args, **kwargs)

def _get_cache_path():
default_xdg_cache_dir = os.path.expanduser("~/.cache")
cache_dir = os.getenv("XDG_CACHE_HOME", default_xdg_cache_dir)
cache_path = Path(cache_dir).joinpath('thefuck').as_posix()
Expand All @@ -197,11 +193,19 @@ def _cache(fn, *args, **kwargs):
if not os.path.isdir(cache_dir):
raise

return cache_path

@decorator
def _cache(fn, *args, **kwargs):
if cache.disabled:
return fn(*args, **kwargs)

# A bit obscure, but simplest way to generate unique key for
# functions and methods in python 2 and 3:
key = '{}.{}'.format(fn.__module__, repr(fn).split('at')[0])

etag = '.'.join(_get_mtime(name) for name in depends_on)
cache_path = _get_cache_path()

with closing(shelve.open(cache_path)) as db:
if db.get(key, {}).get('etag') == etag:
Expand Down

0 comments on commit 346cb99

Please sign in to comment.