From 1f61699ca437ae374b6098941e172e3fa998fa21 Mon Sep 17 00:00:00 2001 From: deadc0de6 Date: Mon, 9 Nov 2020 21:56:13 +0100 Subject: [PATCH] fix chmod install --- dotdrop/cfg_yaml.py | 5 +++-- dotdrop/installer.py | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dotdrop/cfg_yaml.py b/dotdrop/cfg_yaml.py index 75b8cbc..432f3a4 100644 --- a/dotdrop/cfg_yaml.py +++ b/dotdrop/cfg_yaml.py @@ -342,7 +342,7 @@ class CfgYaml: if chmod: lnkval = df_dict.get(self.key_dotfile_link, None) if lnkval != self.lnk_children: - df_dict[self.key_dotfile_chmod] = format(chmod, 'o') + df_dict[self.key_dotfile_chmod] = str(format(chmod, 'o')) # add to global dict self._yaml_dict[self.key_dotfiles][key] = df_dict @@ -639,7 +639,7 @@ class CfgYaml: v[self.key_dotfile_template] = val # validate value of chmod if defined if self.key_dotfile_chmod in v: - val = v[self.key_dotfile_chmod] + val = str(v[self.key_dotfile_chmod]) if len(val) < 3: err = 'bad format for chmod: {}'.format(val) self._log.err(err) @@ -661,6 +661,7 @@ class CfgYaml: err = 'incompatible use of chmod and link_children' self._log.err(err) raise YamlException('config content error: {}'.format(err)) + v[self.key_dotfile_chmod] = val return new diff --git a/dotdrop/installer.py b/dotdrop/installer.py index 8f670dc..5c520e1 100644 --- a/dotdrop/installer.py +++ b/dotdrop/installer.py @@ -73,7 +73,7 @@ class Installer: - False, error_msg : error - False, None : ignored """ - if not self._chmod_file(dst, chmod): + if not self._check_chmod(dst, chmod): err = 'ignoring "{}", nothing installed'.format(dst) return False, err @@ -83,8 +83,8 @@ class Installer: ignore=ignore, template=template) - if chmod: - os.chmod(dst, chmod) + if r and chmod: + os.chmod(dst, int(chmod, 8)) return self._log_install(r, err) @@ -142,7 +142,7 @@ class Installer: - False, error_msg : error - False, None : ignored """ - if not self._chmod_file(dst, chmod): + if not self._check_chmod(dst, chmod): err = 'ignoring "{}", nothing installed'.format(dst) return False, err @@ -150,7 +150,7 @@ class Installer: actionexec=actionexec, template=template) if chmod: - os.chmod(dst, chmod) + os.chmod(dst, int(chmod, 8)) return self._log_install(r, err) def _link(self, templater, src, dst, actionexec=None, @@ -681,7 +681,7 @@ class Installer: self.log.dbg('install: IGNORED') return boolean, err - def _chmod_file(self, path, chmod): + def _check_chmod(self, path, chmod): """chmod file if needed and return True to continue""" if chmod: return True