CLI: Save installed AddOns state more often to enable better error recovery. Sort list output alphabetically.

This commit is contained in:
Casper V. Kristensen 2021-03-24 11:39:09 +01:00
parent bedea2f983
commit d08e0bebcc
Signed by: caspervk
GPG key ID: 289CA03790535054

View file

@ -98,7 +98,7 @@ class CLI:
args.func(args)
def install(self, args) -> None:
already_installed_urls = {a.url for a in self.installed_addons}
already_installed_urls = {addon.url for addon in self.installed_addons}
for url in set(args.urls): # set removes duplicates
if url in already_installed_urls:
print(f"{url} is already installed")
@ -108,21 +108,16 @@ class CLI:
addon.download()
addon.install()
self.installed_addons.append(addon)
addons.save_installed_addons(self.installed_addons)
addons.save_installed_addons(self.installed_addons)
def remove(self, args) -> None:
if args.all:
remove = self.installed_addons.copy()
else:
remove = [addon
for addon in self.installed_addons
if addon.name in args.addons]
for addon in remove:
print(f"Removing {addon.name}")
addon.uninstall()
shutil.rmtree(addon.download_dir, ignore_errors=True)
self.installed_addons.remove(addon)
addons.save_installed_addons(self.installed_addons)
for addon in self.installed_addons:
if args.all or addon.name in args.addons:
print(f"Removing {addon.name}")
addon.uninstall()
shutil.rmtree(addon.download_dir, ignore_errors=True)
self.installed_addons.remove(addon)
addons.save_installed_addons(self.installed_addons)
def update(self, args) -> None:
for addon in self.installed_addons:
@ -132,11 +127,11 @@ class CLI:
addon.uninstall()
addon.install()
print("Done" if changed else "Already up to date")
addons.save_installed_addons(self.installed_addons)
addons.save_installed_addons(self.installed_addons)
def list(self, args) -> None:
table = []
for addon in self.installed_addons:
for addon in sorted(self.installed_addons, key=lambda a: a.name.lower()):
table.append({
"Name": addon.name,
"Provider": addon.get_provider().__name__,