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.util import set_value_by_path @dataclass class UpdateOptions: flake: Flake meta: Meta @API.register def update_clan_meta(options: UpdateOptions) -> InventorySnapshot: 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