From 80b803913fbc330441df3bf13a601e0e2bdea874 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Wed, 24 May 2023 06:58:11 -0400 Subject: [PATCH] feat: print extensions version on install/uninstall/reinstall (#1726) --- lnbits/app.py | 8 ++++++-- lnbits/core/views/api.py | 2 +- lnbits/extension_manager.py | 12 +++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lnbits/app.py b/lnbits/app.py index f8bfd4480..8348112b9 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -157,10 +157,14 @@ async def check_installed_extensions(app: FastAPI): installed = check_installed_extension(ext) if not installed: await restore_installed_extension(app, ext) - logger.info(f"✔️ Successfully re-installed extension: {ext.id}") + logger.info( + f"✔️ Successfully re-installed extension: {ext.id} ({ext.installed_version})" + ) except Exception as e: logger.warning(e) - logger.warning(f"Failed to re-install extension: {ext.id}") + logger.warning( + f"Failed to re-install extension: {ext.id} ({ext.installed_version})" + ) async def build_all_installed_extensions_list() -> List[InstallableExtension]: diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index 57541a3a0..0b273863d 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -820,7 +820,7 @@ async def api_install_extension( ext_info.clean_extension_files() raise HTTPException( status_code=HTTPStatus.INTERNAL_SERVER_ERROR, - detail="Failed to install extension.", + detail=f"Failed to install extension {ext_info.id} ({ext_info.installed_version}).", ) diff --git a/lnbits/extension_manager.py b/lnbits/extension_manager.py index 8d737f5b1..036d0e9bc 100644 --- a/lnbits/extension_manager.py +++ b/lnbits/extension_manager.py @@ -353,8 +353,14 @@ class InstallableExtension(BaseModel): return False return Path(self.ext_dir, "config.json").is_file() + @property + def installed_version(self) -> str: + if self.installed_release: + return self.installed_release.version + return "" + def download_archive(self): - logger.info(f"Downloading extension {self.name}.") + logger.info(f"Downloading extension {self.name} ({self.installed_version}).") ext_zip_file = self.zip_path if ext_zip_file.is_file(): os.remove(ext_zip_file) @@ -379,7 +385,7 @@ class InstallableExtension(BaseModel): ) def extract_archive(self): - logger.info(f"Extracting extension {self.name}.") + logger.info(f"Extracting extension {self.name} ({self.installed_version}).") Path("lnbits", "upgrades").mkdir(parents=True, exist_ok=True) shutil.rmtree(self.ext_upgrade_dir, True) with zipfile.ZipFile(self.zip_path, "r") as zip_ref: @@ -414,7 +420,7 @@ class InstallableExtension(BaseModel): Path(self.ext_upgrade_dir, self.id), Path(settings.lnbits_path, "extensions", self.id), ) - logger.success(f"Extension {self.name} installed.") + logger.success(f"Extension {self.name} ({self.installed_version}) installed.") def nofiy_upgrade(self) -> None: """Update the list of upgraded extensions. The middleware will perform redirects based on this"""