From 6b1b73695c3d6e6bc1233f38244b235155b84497 Mon Sep 17 00:00:00 2001 From: "A.J. Venter" Date: Tue, 4 Oct 2016 20:13:40 +0200 Subject: [PATCH] Several bugfixes in mod upgrades --- libPyKAN/installed.py | 1 + libPyKAN/modmanager.py | 9 +++++---- pyKAN | 11 ++++++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libPyKAN/installed.py b/libPyKAN/installed.py index d4311a8..d946095 100644 --- a/libPyKAN/installed.py +++ b/libPyKAN/installed.py @@ -40,6 +40,7 @@ def __getitem__(self, key): for k in ['installed_modules','manual_modules','ckan_modules']: if key in self.installed_mods[k]: return self.installed_mods[k][key] + raise KeyError def list_modules(self): for i in ['installed_modules','manual_modules','ckan_modules']: diff --git a/libPyKAN/modmanager.py b/libPyKAN/modmanager.py index f7b2c7a..40b26f2 100644 --- a/libPyKAN/modmanager.py +++ b/libPyKAN/modmanager.py @@ -151,7 +151,7 @@ def uninstall_list(self): return remlist - def remove(self, modname): + def remove(self, modname, deregister=True): print "Removing module %s" % modname target = os.path.join(self.settings.KSPDIR,'GameData',modname) filelist = self.installed[modname].get('installed_files',[]) @@ -166,12 +166,13 @@ def remove(self, modname): if os.path.isdir(target): util.debug('Removing %s' % target) shutil.rmtree(target) - self.installed.remove_mod(modname) + if deregister: + self.installed.remove_mod(modname) def upgrade(self): for mod in [i['identifier'] for i in self.repoentries]: - self.remove(mod) - self.get_download_list() + self.remove(mod, False) + self.get_download_list('no','no') self.download() self.install() diff --git a/pyKAN b/pyKAN index d4c67e3..21d8833 100755 --- a/pyKAN +++ b/pyKAN @@ -258,12 +258,16 @@ if __name__ == '__main__': if options.module: mods = [i for i in repo.find_latest(options.module) if i in INSTALLED.all_modnames()] else: - mods = INSTALLED.all_modnames() + mods = list(INSTALLED.all_modnames()) upgradeables = [] for mod in mods: - if Version(repo.find_latest(mod).get('version','0.0.0')) > Version(INSTALLED[mod].get('version','0.0.0')): + m = repo.find_latest(mod)[mod] + print m.get('version') + if Version(m.get('version','0.0.0')) > Version(INSTALLED[mod].get('version','0.0.0')): upgradeables.append(mod) - print "Mods that can be upgraded: \n\t%s" %('\n\t'.join(upgradeables)) + print "Mods that can be upgraded: \n" + for u in upgradeables: + print '\t%s %s -> %s' %(u,INSTALLED[mod].get('version','0.0.0'),repo.find_latest(u).get('version','0.0.0')) return upgradeables def upgrade(): @@ -272,6 +276,7 @@ if __name__ == '__main__': sys.exit() MM = ModManager(uplist, settings,repo) MM.upgrade() + print "Modules upgraded"