From 27e6a0da587779e7db9b1df25a935d1c6261e724 Mon Sep 17 00:00:00 2001 From: deadc0de6 Date: Sun, 2 Jun 2019 11:26:30 +0200 Subject: [PATCH] refactor resolve_path --- dotdrop/cfg_aggregator.py | 1 - dotdrop/cfg_yaml.py | 25 +++++++++++++++---------- dotdrop/settings.py | 5 ----- tests/test_yamlcfg.py | 3 ++- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/dotdrop/cfg_aggregator.py b/dotdrop/cfg_aggregator.py index 3370282..3134c30 100644 --- a/dotdrop/cfg_aggregator.py +++ b/dotdrop/cfg_aggregator.py @@ -46,7 +46,6 @@ class CfgAggregator: # settings self.settings = Settings.parse(None, self.cfgyaml.settings) - self.settings.resolve_paths(self.cfgyaml.resolve_path) if self.debug: self.log.dbg('settings: {}'.format(self.settings)) diff --git a/dotdrop/cfg_yaml.py b/dotdrop/cfg_yaml.py index 8410d51..b0314a3 100644 --- a/dotdrop/cfg_yaml.py +++ b/dotdrop/cfg_yaml.py @@ -99,6 +99,11 @@ class CfgYaml: self.ori_settings = self._get_entry(self.yaml_dict, self.key_settings) self.settings = Settings(None).serialize().get(self.key_settings) self.settings.update(self.ori_settings) + # resolve settings paths + p = self._resolve_path(self.settings[self.key_settings_dotpath]) + self.settings[self.key_settings_dotpath] = p + p = self._resolve_path(self.settings[self.key_settings_workdir]) + self.settings[self.key_settings_workdir] = p if self.debug: self.log.dbg('settings: {}'.format(self.settings)) @@ -149,9 +154,9 @@ class CfgYaml: for dotfile in self.dotfiles.values(): src = dotfile[self.key_dotfile_src] src = os.path.join(self.settings[self.key_settings_dotpath], src) - dotfile[self.key_dotfile_src] = self.resolve_path(src) + dotfile[self.key_dotfile_src] = self._resolve_path(src) dst = dotfile[self.key_dotfile_dst] - dotfile[self.key_dotfile_dst] = self.resolve_path(dst) + dotfile[self.key_dotfile_dst] = self._resolve_path(dst) def _merge_and_apply_variables(self): """ @@ -286,11 +291,11 @@ class CfgYaml: variables['profile'] = profile # add some more variables p = self.settings.get(self.key_settings_dotpath) - p = self.resolve_path(p) + p = self._resolve_path(p) variables['_dotdrop_dotpath'] = p - variables['_dotdrop_cfgpath'] = self.resolve_path(self.path) + variables['_dotdrop_cfgpath'] = self._resolve_path(self.path) p = self.settings.get(self.key_settings_workdir) - p = self.resolve_path(p) + p = self._resolve_path(p) variables['_dotdrop_workdir'] = p # variables @@ -369,7 +374,7 @@ class CfgYaml: return paths = self._glob_paths(paths) for p in paths: - path = self.resolve_path(p) + path = self._resolve_path(p) if self.debug: self.log.dbg('import variables from {}'.format(path)) self.variables = self._import_sub(path, self.key_variables, @@ -385,7 +390,7 @@ class CfgYaml: return paths = self._glob_paths(paths) for p in paths: - path = self.resolve_path(p) + path = self._resolve_path(p) if self.debug: self.log.dbg('import actions from {}'.format(path)) self.actions = self._import_sub(path, self.key_actions, @@ -412,7 +417,7 @@ class CfgYaml: paths = self._glob_paths(imp) for p in paths: current = v.get(self.key_dotfiles, []) - path = self.resolve_path(p) + path = self._resolve_path(p) current = self._import_sub(path, self.key_dotfiles, current, mandatory=False, path_func=self._norm_dotfiles) @@ -426,7 +431,7 @@ class CfgYaml: return paths = self._glob_paths(imp) for path in paths: - path = self.resolve_path(path) + path = self._resolve_path(path) if self.debug: self.log.dbg('import config from {}'.format(path)) sub = CfgYaml(path, debug=self.debug) @@ -481,7 +486,7 @@ class CfgYaml: values[self.key_profiles_dotfiles] = list(set(current)) return values.get(self.key_profiles_dotfiles, []) - def resolve_path(self, path): + def _resolve_path(self, path): """resolve a path either absolute or relative to config path""" path = os.path.expanduser(path) if not os.path.isabs(path): diff --git a/dotdrop/settings.py b/dotdrop/settings.py index 1d2a5dc..51ef59f 100644 --- a/dotdrop/settings.py +++ b/dotdrop/settings.py @@ -60,11 +60,6 @@ class Settings(DictParser): self.link_dotfile_default = LinkTypes.get(link_dotfile_default) self.link_on_import = LinkTypes.get(link_on_import) - def resolve_paths(self, resolver): - """resolve path using resolver function""" - self.dotpath = resolver(self.dotpath) - self.workdir = resolver(self.workdir) - def _serialize_seq(self, name, dic): """serialize attribute 'name' into 'dic'""" seq = getattr(self, name) diff --git a/tests/test_yamlcfg.py b/tests/test_yamlcfg.py index 78f8dd8..0a22420 100644 --- a/tests/test_yamlcfg.py +++ b/tests/test_yamlcfg.py @@ -46,7 +46,8 @@ class TestConfig(SubsetTestCase): self.assertTrue(opts != {}) self.assertTrue(opts['backup'] == self.CONFIG_BACKUP) self.assertTrue(opts['create'] == self.CONFIG_CREATE) - self.assertTrue(opts['dotpath'] == self.CONFIG_DOTPATH) + dpath = os.path.basename(opts['dotpath']) + self.assertTrue(dpath == self.CONFIG_DOTPATH) self.assertTrue(conf.dump() != '') def test_def_link(self):