From 6e6db21533076fd4efe751c5f9f6e27309ff63a5 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Sat, 23 May 2015 03:03:01 -0400 Subject: [PATCH] Migrate old config files (#12) --- gitup/config.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/gitup/config.py b/gitup/config.py index c0ed7ee..59f3c68 100644 --- a/gitup/config.py +++ b/gitup/config.py @@ -18,13 +18,28 @@ RED = Fore.RED + Style.BRIGHT INDENT1 = " " * 3 +def _ensure_dirs(path): + """Ensure the directories within the given pathname exist.""" + dirname = os.path.dirname(path) + if not os.path.exists(dirname): # Race condition, meh... + os.makedirs(dirname) + def _get_config_path(): """Return the path to the configuration file.""" xdg_cfg = os.environ.get("XDG_CONFIG_HOME") or os.path.join("~", ".config") return os.path.join(os.path.expanduser(xdg_cfg), "gitup", "config.ini") +def _migrate_old_config_path(): + """Migrate the old config location (~/.gitup) to the new one.""" + old_path = os.path.expanduser(os.path.join("~", ".gitup")) + if os.path.exists(old_path): + new_path = _get_config_path() + _ensure_dirs(new_path) + os.rename(old_path, new_path) + def _load_config_file(): """Read the config file and return a SafeConfigParser() object.""" + _migrate_old_config_path() config = configparser.SafeConfigParser() # Don't lowercase option names, because we are storing paths there: config.optionxform = str @@ -33,10 +48,9 @@ def _load_config_file(): def _save_config_file(config): """Save config changes to the config file returned by _get_config_path.""" + _migrate_old_config_path() cfg_path = _get_config_path() - if not os.path.exists(os.path.dirname(cfg_path)): # Race condition, meh... - os.makedirs(os.path.dirname(cfg_path)) - + _ensure_dirs(cfg_path) with open(cfg_path, "wb") as config_file: config.write(config_file)