feat: print extensions version on install/uninstall/reinstall (#1726)

This commit is contained in:
Vlad Stan 2023-05-24 06:58:11 -04:00 committed by GitHub
parent 6eab3dae01
commit 80b803913f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 6 deletions

View File

@ -157,10 +157,14 @@ async def check_installed_extensions(app: FastAPI):
installed = check_installed_extension(ext) installed = check_installed_extension(ext)
if not installed: if not installed:
await restore_installed_extension(app, ext) 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: except Exception as e:
logger.warning(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]: async def build_all_installed_extensions_list() -> List[InstallableExtension]:

View File

@ -820,7 +820,7 @@ async def api_install_extension(
ext_info.clean_extension_files() ext_info.clean_extension_files()
raise HTTPException( raise HTTPException(
status_code=HTTPStatus.INTERNAL_SERVER_ERROR, status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
detail="Failed to install extension.", detail=f"Failed to install extension {ext_info.id} ({ext_info.installed_version}).",
) )

View File

@ -353,8 +353,14 @@ class InstallableExtension(BaseModel):
return False return False
return Path(self.ext_dir, "config.json").is_file() 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): 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 ext_zip_file = self.zip_path
if ext_zip_file.is_file(): if ext_zip_file.is_file():
os.remove(ext_zip_file) os.remove(ext_zip_file)
@ -379,7 +385,7 @@ class InstallableExtension(BaseModel):
) )
def extract_archive(self): 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) Path("lnbits", "upgrades").mkdir(parents=True, exist_ok=True)
shutil.rmtree(self.ext_upgrade_dir, True) shutil.rmtree(self.ext_upgrade_dir, True)
with zipfile.ZipFile(self.zip_path, "r") as zip_ref: 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(self.ext_upgrade_dir, self.id),
Path(settings.lnbits_path, "extensions", 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: def nofiy_upgrade(self) -> None:
"""Update the list of upgraded extensions. The middleware will perform redirects based on this""" """Update the list of upgraded extensions. The middleware will perform redirects based on this"""