1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-04 17:24:46 +00:00

refactor resolve_path

This commit is contained in:
deadc0de6
2019-06-02 11:26:30 +02:00
parent 805f15f7a2
commit 27e6a0da58
4 changed files with 17 additions and 17 deletions

View File

@@ -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))

View File

@@ -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):

View File

@@ -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)

View File

@@ -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):