diff --git a/pkgs/clan-cli/clan_cli/vars/keygen.py b/pkgs/clan-cli/clan_cli/vars/keygen.py index f9a79d2c2..e375a7ad7 100644 --- a/pkgs/clan-cli/clan_cli/vars/keygen.py +++ b/pkgs/clan-cli/clan_cli/vars/keygen.py @@ -1,17 +1,19 @@ import argparse import logging import os +from pathlib import Path from clan_cli.errors import ClanError -from clan_cli.flake import Flake from clan_cli.secrets.key import generate_key from clan_cli.secrets.sops import maybe_get_admin_public_key from clan_cli.secrets.users import add_user +from clan_lib.api import API log = logging.getLogger(__name__) -def keygen(user: str | None, flake: Flake, force: bool) -> None: +@API.register +def keygen(flake_dir: Path, user: str | None = None, force: bool = False) -> None: if user is None: user = os.getenv("USER", None) if not user: @@ -22,7 +24,7 @@ def keygen(user: str | None, flake: Flake, force: bool) -> None: pub_key = generate_key() # TODO set flake_dir=flake.path / "vars" add_user( - flake_dir=flake.path, + flake_dir=flake_dir, name=user, keys=[pub_key], force=force, @@ -33,8 +35,8 @@ def _command( args: argparse.Namespace, ) -> None: keygen( + flake_dir=args.flake.path, user=args.user, - flake=args.flake, force=args.force, ) diff --git a/pkgs/clan-cli/clan_cli/vars/prompt.py b/pkgs/clan-cli/clan_cli/vars/prompt.py index ff925b705..bd47e53b6 100644 --- a/pkgs/clan-cli/clan_cli/vars/prompt.py +++ b/pkgs/clan-cli/clan_cli/vars/prompt.py @@ -33,7 +33,6 @@ class Prompt: description=data["description"], prompt_type=PromptType(data["type"]), persist=data.get("persist", data["persist"]), - previous_value=data.get("previousValue"), ) diff --git a/pkgs/webview-ui/app/src/routes/clans/create.tsx b/pkgs/webview-ui/app/src/routes/clans/create.tsx index 841eef57b..f8072fb15 100644 --- a/pkgs/webview-ui/app/src/routes/clans/create.tsx +++ b/pkgs/webview-ui/app/src/routes/clans/create.tsx @@ -7,7 +7,7 @@ import { SubmitHandler, } from "@modular-forms/solid"; import toast from "solid-toast"; -import { setActiveURI, setClanList } from "@/src/App"; +import { activeURI, setActiveURI, setClanList } from "@/src/App"; import { TextInput } from "@/src/Form/fields/TextInput"; import { useNavigate } from "@solidjs/router"; import { Button } from "@/src/components/button"; @@ -61,6 +61,17 @@ export const CreateClan = () => { toast.error("Failed to create clan"); return; } + + // Will generate a key if it doesn't exist, and add a user to the clan + const k = await callApi("keygen", { + flake_dir: target_dir[0], + }); + + if (k.status === "error") { + toast.error("Failed to generate key"); + return; + } + if (r.status === "success") { toast.success("Clan Successfully Created"); setActiveURI(target_dir[0]);