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) args.func(args)
def install(self, args) -> None: 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 for url in set(args.urls): # set removes duplicates
if url in already_installed_urls: if url in already_installed_urls:
print(f"{url} is already installed") print(f"{url} is already installed")
@ -111,13 +111,8 @@ class CLI:
addons.save_installed_addons(self.installed_addons) addons.save_installed_addons(self.installed_addons)
def remove(self, args) -> None: def remove(self, args) -> None:
if args.all: for addon in self.installed_addons:
remove = self.installed_addons.copy() if args.all or addon.name in args.addons:
else:
remove = [addon
for addon in self.installed_addons
if addon.name in args.addons]
for addon in remove:
print(f"Removing {addon.name}") print(f"Removing {addon.name}")
addon.uninstall() addon.uninstall()
shutil.rmtree(addon.download_dir, ignore_errors=True) shutil.rmtree(addon.download_dir, ignore_errors=True)
@ -136,7 +131,7 @@ class CLI:
def list(self, args) -> None: def list(self, args) -> None:
table = [] table = []
for addon in self.installed_addons: for addon in sorted(self.installed_addons, key=lambda a: a.name.lower()):
table.append({ table.append({
"Name": addon.name, "Name": addon.name,
"Provider": addon.get_provider().__name__, "Provider": addon.get_provider().__name__,