mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-07 04:10:41 +00:00
Merge branch 'extdotfiles'
This commit is contained in:
@@ -66,6 +66,7 @@ class Cfg:
|
||||
key_profiles = 'profiles'
|
||||
key_profiles_dots = 'dotfiles'
|
||||
key_profiles_incl = 'include'
|
||||
key_profiles_imp = 'import'
|
||||
|
||||
# settings defaults
|
||||
default_dotpath = 'dotfiles'
|
||||
@@ -359,10 +360,21 @@ class Cfg:
|
||||
return False
|
||||
self.prodots[k].extend(dots)
|
||||
|
||||
# handle "import" for each profile
|
||||
for k in self.lnk_profiles.keys():
|
||||
dots = self._get_imported_dotfiles_keys(k)
|
||||
for d in dots:
|
||||
if d not in self.dotfiles:
|
||||
msg = '(i) unknown dotfile \"{}\" for {}'.format(d, k)
|
||||
self.log.err(msg)
|
||||
continue
|
||||
self.prodots[k].append(self.dotfiles[d])
|
||||
|
||||
# remove duplicates if any
|
||||
for k in self.lnk_profiles.keys():
|
||||
self.prodots[k] = list(set(self.prodots[k]))
|
||||
|
||||
# print dotfiles for each profile
|
||||
if self.debug:
|
||||
for k in self.lnk_profiles.keys():
|
||||
df = ','.join([d.key for d in self.prodots[k]])
|
||||
@@ -416,6 +428,32 @@ class Cfg:
|
||||
return os.path.join(d, path)
|
||||
return path
|
||||
|
||||
def _get_imported_dotfiles_keys(self, profile):
|
||||
"""import dotfiles from external file"""
|
||||
keys = []
|
||||
if self.key_profiles_imp not in self.lnk_profiles[profile]:
|
||||
return keys
|
||||
variables = self.get_variables(profile, debug=self.debug)
|
||||
t = Templategen(variables=variables)
|
||||
paths = self.lnk_profiles[profile][self.key_profiles_imp]
|
||||
for path in paths:
|
||||
path = self._abs_path(path)
|
||||
path = t.generate_string(path)
|
||||
if self.debug:
|
||||
self.log.dbg('loading dotfiles from {}'.format(path))
|
||||
content = self._load_yaml(path)
|
||||
if not content:
|
||||
self.log.warn('\"{}\" does not exist'.format(path))
|
||||
continue
|
||||
if self.key_profiles_dots not in content:
|
||||
self.log.warn('not dotfiles in \"{}\"'.format(path))
|
||||
continue
|
||||
df = content[self.key_profiles_dots]
|
||||
if self.debug:
|
||||
self.log.dbg('imported dotfiles keys: {}'.format(df))
|
||||
keys.extend(df)
|
||||
return keys
|
||||
|
||||
def _get_included_dotfiles(self, profile, seen=[]):
|
||||
"""find all dotfiles for a specific profile
|
||||
when using the include keyword"""
|
||||
|
||||
Reference in New Issue
Block a user