Files
clan-core/pkgs/clan-cli/clan_lib/clan/update.py
2025-09-21 17:24:28 +02:00

36 lines
1.0 KiB
Python

from dataclasses import dataclass
from clan_lib.api import API
from clan_lib.flake import Flake
from clan_lib.nix_models.clan import InventoryMeta as Meta
from clan_lib.persist.inventory_store import InventorySnapshot, InventoryStore
from clan_lib.persist.path_utils import set_value_by_path
@dataclass
class UpdateOptions:
flake: Flake
meta: Meta
@API.register
def set_clan_details(options: UpdateOptions) -> InventorySnapshot:
"""Update the clan metadata in the inventory of a given flake.
Args:
options: UpdateOptions containing the flake and the new metadata.
Returns:
InventorySnapshot: The updated inventory snapshot after modifying the metadata.
Raises:
ClanError: If the flake does not exist or if the inventory is invalid (missing the meta attribute).
"""
inventory_store = InventoryStore(options.flake)
inventory = inventory_store.read()
set_value_by_path(inventory, "meta", options.meta)
inventory_store.write(inventory, message="Update clan metadata")
return inventory