From 5deb75f5c489fd8acf7564b9ceacda2b18d10b17 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 10 Sep 2017 18:53:47 +1000 Subject: [PATCH] preserve user_files folder in add-ons --- aqt/addons.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/aqt/addons.py b/aqt/addons.py index 72035c16c..4b9cb2003 100644 --- a/aqt/addons.py +++ b/aqt/addons.py @@ -108,15 +108,22 @@ When loading '%(name)s': meta = self.addonMeta(sid) base = self.addonsFolder(sid) if os.path.exists(base): + self.backupUserFiles(sid) self.deleteAddon(sid) - # extract os.mkdir(base) + self.restoreUserFiles(sid) + + # extract for n in z.namelist(): if n.endswith("/"): # folder; ignore continue - # write + + path = os.path.join(base, n) + # skip existing user files + if os.path.exists(path) and n.startswith("user_files/"): + continue z.extract(n, base) # update metadata @@ -238,6 +245,28 @@ When loading '%(name)s': meta['config'] = conf self.writeAddonMeta(addon, meta) + # user_files + ###################################################################### + + def _userFilesPath(self, sid): + return os.path.join(self.addonsFolder(sid), "user_files") + + def _userFilesBackupPath(self): + return os.path.join(self.addonsFolder(), "files_backup") + + def backupUserFiles(self, sid): + p = self._userFilesPath(sid) + if os.path.exists(p): + os.rename(p, self._userFilesBackupPath()) + + def restoreUserFiles(self, sid): + p = self._userFilesPath(sid) + bp = self._userFilesBackupPath() + # did we back up userFiles? + if not os.path.exists(bp): + return + os.rename(bp, p) + # Add-ons Dialog ######################################################################