From 133866b2c65ae45ca72132cd54aaf23cb54bc1a1 Mon Sep 17 00:00:00 2001 From: Joao Mario Lago Date: Wed, 31 Jul 2024 15:03:10 -0300 Subject: [PATCH] extension: Add img encoding in readmes --- blueos_repository/extension/extension.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/blueos_repository/extension/extension.py b/blueos_repository/extension/extension.py index 25a0e60..b0e5198 100644 --- a/blueos_repository/extension/extension.py +++ b/blueos_repository/extension/extension.py @@ -17,6 +17,7 @@ Image, Platform, ) +from extension.utils.markdown_img_encoder import MarkdownImageEncoder from logger import Logger from utils import valid_semver @@ -74,6 +75,11 @@ async def fetch_readme(url: str) -> str: raise Exception(f"Could not get readme, expected type to be text/plain but got {resp.content_type}") return await resp.text() + @staticmethod + async def process_readme_md(readme: str, resources_url: str) -> str: + encoder = MarkdownImageEncoder(readme, resources_url) + return str(await encoder.get_processed_markdown()) + def __extract_images_from_tag(self, tag: Tag) -> List[Image]: active_images = [ image @@ -156,9 +162,14 @@ async def __create_version_from_tag_blob(self, version_tag: Tag, blob: Blob) -> readme = labels.get("readme", None) if readme is not None: - readme = readme.replace(r"{tag}", version_tag.name) + url = readme.replace(r"{tag}", version_tag.name) try: - readme = await Extension.fetch_readme(readme) + readme = await Extension.fetch_readme(url) + try: + url = url.rsplit("/", 1)[0] + readme = await Extension.process_readme_md(readme, url) + except Exception as error: # pylint: disable=broad-except + Logger.warning(self.identifier, str(error)) except Exception as error: # pylint: disable=broad-except Logger.warning(self.identifier, str(error)) readme = str(error)