From 0f360410547ee9266ed6e99c142fb2e665ed33b1 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Tue, 10 Jun 2025 16:34:48 +0200 Subject: [PATCH] Chore(show_clan_meta): use data from inventoryStore --- pkgs/clan-cli/clan_lib/clan/get.py | 68 ++++-------------------------- 1 file changed, 9 insertions(+), 59 deletions(-) diff --git a/pkgs/clan-cli/clan_lib/clan/get.py b/pkgs/clan-cli/clan_lib/clan/get.py index 9f56c124d..3b8c58ef8 100644 --- a/pkgs/clan-cli/clan_lib/clan/get.py +++ b/pkgs/clan-cli/clan_lib/clan/get.py @@ -1,13 +1,8 @@ -import json -from pathlib import Path -from urllib.parse import urlparse - from clan_lib.api import API -from clan_lib.cmd import run -from clan_lib.errors import ClanCmdError, ClanError +from clan_lib.errors import ClanError from clan_lib.flake import Flake -from clan_lib.nix import nix_eval from clan_lib.nix_models.clan import InventoryMeta as Meta +from clan_lib.persist.inventory_store import InventoryStore @API.register @@ -15,57 +10,12 @@ def show_clan_meta(flake: Flake) -> Meta: if flake.is_local and not flake.path.exists(): msg = f"Path {flake} does not exist" raise ClanError(msg, description="clan directory does not exist") - cmd = nix_eval( - [ - f"{flake}#clanInternals.inventory.meta", - "--json", - ] - ) - res = "{}" + inventory_store = InventoryStore(flake) + inventory = inventory_store.read() - try: - proc = run(cmd) - res = proc.stdout.strip() - except ClanCmdError as e: - msg = "Evaluation failed on meta attribute" - raise ClanError( - msg, - location=f"show_clan {flake}", - description=str(e.cmd), - ) from e + meta = inventory.get("meta") + if not meta: + msg = f"Inventory of flake '{flake}' does not have a meta attribute" + raise ClanError(msg) - clan_meta = json.loads(res) - - # Check if icon is a URL such as http:// or https:// - # Check if icon is an relative path - # All other schemas such as file://, ftp:// are not yet supported. - icon_path: str | None = None - if meta_icon := clan_meta.get("icon"): - scheme = urlparse(meta_icon).scheme - if scheme in ["http", "https"]: - icon_path = meta_icon - elif scheme in [""]: - if Path(meta_icon).is_absolute(): - msg = "Invalid absolute path" - raise ClanError( - msg, - location=f"show_clan {flake}", - description="Icon path must be a URL or a relative path", - ) - - icon_path = str((flake.path / meta_icon).resolve()) - else: - msg = "Invalid schema" - raise ClanError( - msg, - location=f"show_clan {flake}", - description="Icon path must be a URL or a relative path", - ) - - return Meta( - { - "name": clan_meta.get("name"), - "description": clan_meta.get("description"), - "icon": icon_path if icon_path else "", - } - ) + return meta