mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-10 10:59:16 +00:00
refactor resolve_path
This commit is contained in:
@@ -46,7 +46,6 @@ class CfgAggregator:
|
|||||||
|
|
||||||
# settings
|
# settings
|
||||||
self.settings = Settings.parse(None, self.cfgyaml.settings)
|
self.settings = Settings.parse(None, self.cfgyaml.settings)
|
||||||
self.settings.resolve_paths(self.cfgyaml.resolve_path)
|
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('settings: {}'.format(self.settings))
|
self.log.dbg('settings: {}'.format(self.settings))
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,11 @@ class CfgYaml:
|
|||||||
self.ori_settings = self._get_entry(self.yaml_dict, self.key_settings)
|
self.ori_settings = self._get_entry(self.yaml_dict, self.key_settings)
|
||||||
self.settings = Settings(None).serialize().get(self.key_settings)
|
self.settings = Settings(None).serialize().get(self.key_settings)
|
||||||
self.settings.update(self.ori_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:
|
if self.debug:
|
||||||
self.log.dbg('settings: {}'.format(self.settings))
|
self.log.dbg('settings: {}'.format(self.settings))
|
||||||
|
|
||||||
@@ -149,9 +154,9 @@ class CfgYaml:
|
|||||||
for dotfile in self.dotfiles.values():
|
for dotfile in self.dotfiles.values():
|
||||||
src = dotfile[self.key_dotfile_src]
|
src = dotfile[self.key_dotfile_src]
|
||||||
src = os.path.join(self.settings[self.key_settings_dotpath], 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]
|
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):
|
def _merge_and_apply_variables(self):
|
||||||
"""
|
"""
|
||||||
@@ -286,11 +291,11 @@ class CfgYaml:
|
|||||||
variables['profile'] = profile
|
variables['profile'] = profile
|
||||||
# add some more variables
|
# add some more variables
|
||||||
p = self.settings.get(self.key_settings_dotpath)
|
p = self.settings.get(self.key_settings_dotpath)
|
||||||
p = self.resolve_path(p)
|
p = self._resolve_path(p)
|
||||||
variables['_dotdrop_dotpath'] = 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.settings.get(self.key_settings_workdir)
|
||||||
p = self.resolve_path(p)
|
p = self._resolve_path(p)
|
||||||
variables['_dotdrop_workdir'] = p
|
variables['_dotdrop_workdir'] = p
|
||||||
|
|
||||||
# variables
|
# variables
|
||||||
@@ -369,7 +374,7 @@ class CfgYaml:
|
|||||||
return
|
return
|
||||||
paths = self._glob_paths(paths)
|
paths = self._glob_paths(paths)
|
||||||
for p in paths:
|
for p in paths:
|
||||||
path = self.resolve_path(p)
|
path = self._resolve_path(p)
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('import variables from {}'.format(path))
|
self.log.dbg('import variables from {}'.format(path))
|
||||||
self.variables = self._import_sub(path, self.key_variables,
|
self.variables = self._import_sub(path, self.key_variables,
|
||||||
@@ -385,7 +390,7 @@ class CfgYaml:
|
|||||||
return
|
return
|
||||||
paths = self._glob_paths(paths)
|
paths = self._glob_paths(paths)
|
||||||
for p in paths:
|
for p in paths:
|
||||||
path = self.resolve_path(p)
|
path = self._resolve_path(p)
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('import actions from {}'.format(path))
|
self.log.dbg('import actions from {}'.format(path))
|
||||||
self.actions = self._import_sub(path, self.key_actions,
|
self.actions = self._import_sub(path, self.key_actions,
|
||||||
@@ -412,7 +417,7 @@ class CfgYaml:
|
|||||||
paths = self._glob_paths(imp)
|
paths = self._glob_paths(imp)
|
||||||
for p in paths:
|
for p in paths:
|
||||||
current = v.get(self.key_dotfiles, [])
|
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 = self._import_sub(path, self.key_dotfiles,
|
||||||
current, mandatory=False,
|
current, mandatory=False,
|
||||||
path_func=self._norm_dotfiles)
|
path_func=self._norm_dotfiles)
|
||||||
@@ -426,7 +431,7 @@ class CfgYaml:
|
|||||||
return
|
return
|
||||||
paths = self._glob_paths(imp)
|
paths = self._glob_paths(imp)
|
||||||
for path in paths:
|
for path in paths:
|
||||||
path = self.resolve_path(path)
|
path = self._resolve_path(path)
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('import config from {}'.format(path))
|
self.log.dbg('import config from {}'.format(path))
|
||||||
sub = CfgYaml(path, debug=self.debug)
|
sub = CfgYaml(path, debug=self.debug)
|
||||||
@@ -481,7 +486,7 @@ class CfgYaml:
|
|||||||
values[self.key_profiles_dotfiles] = list(set(current))
|
values[self.key_profiles_dotfiles] = list(set(current))
|
||||||
return values.get(self.key_profiles_dotfiles, [])
|
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"""
|
"""resolve a path either absolute or relative to config path"""
|
||||||
path = os.path.expanduser(path)
|
path = os.path.expanduser(path)
|
||||||
if not os.path.isabs(path):
|
if not os.path.isabs(path):
|
||||||
|
|||||||
@@ -60,11 +60,6 @@ class Settings(DictParser):
|
|||||||
self.link_dotfile_default = LinkTypes.get(link_dotfile_default)
|
self.link_dotfile_default = LinkTypes.get(link_dotfile_default)
|
||||||
self.link_on_import = LinkTypes.get(link_on_import)
|
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):
|
def _serialize_seq(self, name, dic):
|
||||||
"""serialize attribute 'name' into 'dic'"""
|
"""serialize attribute 'name' into 'dic'"""
|
||||||
seq = getattr(self, name)
|
seq = getattr(self, name)
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ class TestConfig(SubsetTestCase):
|
|||||||
self.assertTrue(opts != {})
|
self.assertTrue(opts != {})
|
||||||
self.assertTrue(opts['backup'] == self.CONFIG_BACKUP)
|
self.assertTrue(opts['backup'] == self.CONFIG_BACKUP)
|
||||||
self.assertTrue(opts['create'] == self.CONFIG_CREATE)
|
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() != '')
|
self.assertTrue(conf.dump() != '')
|
||||||
|
|
||||||
def test_def_link(self):
|
def test_def_link(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user