diff --git a/pkgs/clan-cli/clan_cli/webui/routers/flake.py b/pkgs/clan-cli/clan_cli/webui/routers/flake.py index 09541803f..7c5913430 100644 --- a/pkgs/clan-cli/clan_cli/webui/routers/flake.py +++ b/pkgs/clan-cli/clan_cli/webui/routers/flake.py @@ -1,4 +1,5 @@ import json +from json.decoder import JSONDecodeError from pathlib import Path from fastapi import APIRouter, HTTPException @@ -15,9 +16,21 @@ router = APIRouter() async def inspect_flake_attrs(url: str) -> FlakeAttrResponse: cmd = nix_flake_show(url) stdout = await run_cmd(cmd) - data = json.loads(stdout) - nixos_configs = data["nixosConfigurations"] + + data: dict[str,dict] = {} + try: + data = json.loads(stdout) + except JSONDecodeError: + raise HTTPException(status_code=422, detail=f"Could not load flake.") + + + nixos_configs = data.get("nixosConfigurations",{}) flake_attrs = list(nixos_configs.keys()) + + if not flake_attrs: + raise HTTPException(status_code=422, detail="No entry or no attribute: nixosConfigurations") + + return FlakeAttrResponse(flake_attrs=flake_attrs)