From 67810c7a73909ee1f0fb67155281e274adafd141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 9 Oct 2024 13:18:25 +0200 Subject: [PATCH] old json schema code --- pkgs/clan-cli/api.py | 2 - pkgs/clan-cli/clan_cli/config/jsonschema | 1 - pkgs/clan-cli/clan_cli/config/schema.py | 115 ----------------------- pkgs/clan-cli/pyproject.toml | 5 - 4 files changed, 123 deletions(-) delete mode 120000 pkgs/clan-cli/clan_cli/config/jsonschema delete mode 100644 pkgs/clan-cli/clan_cli/config/schema.py diff --git a/pkgs/clan-cli/api.py b/pkgs/clan-cli/api.py index f0ed535d0..da92b9f12 100644 --- a/pkgs/clan-cli/api.py +++ b/pkgs/clan-cli/api.py @@ -1,7 +1,5 @@ import json -# some unused imports are needed to trigger registrations of api functions -import clan_cli.config.schema # noqa: F401 from clan_cli.api import API diff --git a/pkgs/clan-cli/clan_cli/config/jsonschema b/pkgs/clan-cli/clan_cli/config/jsonschema deleted file mode 120000 index 3df5a775c..000000000 --- a/pkgs/clan-cli/clan_cli/config/jsonschema +++ /dev/null @@ -1 +0,0 @@ -../../../../lib/jsonschema \ No newline at end of file diff --git a/pkgs/clan-cli/clan_cli/config/schema.py b/pkgs/clan-cli/clan_cli/config/schema.py deleted file mode 100644 index d0038bb6a..000000000 --- a/pkgs/clan-cli/clan_cli/config/schema.py +++ /dev/null @@ -1,115 +0,0 @@ -import json -import os -from pathlib import Path -from tempfile import NamedTemporaryFile -from typing import Any - -from clan_cli.api import API -from clan_cli.cmd import run -from clan_cli.dirs import nixpkgs_source -from clan_cli.errors import ClanError, ClanHttpError -from clan_cli.nix import nix_eval - - -# TODO: When moving the api to `clan-app`, the whole config module should be -# ported to the `clan-app`, because it is not used by the cli at all. -@API.register -def machine_schema( - flake_dir: Path, - config: dict[str, Any], - clan_imports: list[str] | None = None, - option_path: list[str] | None = None, -) -> dict[str, Any]: - if option_path is None: - option_path = ["clan"] - # use nix eval to lib.evalModules .#nixosConfigurations..options.clan - with NamedTemporaryFile(mode="w", dir=flake_dir) as clan_machine_settings_file: - env = os.environ.copy() - if clan_imports is not None: - config["clanImports"] = clan_imports - # dump config to file - json.dump(config, clan_machine_settings_file, indent=2) - clan_machine_settings_file.seek(0) - env["CLAN_MACHINE_SETTINGS_FILE"] = clan_machine_settings_file.name - # ensure that the requested clanImports exist - proc = run( - nix_eval( - flags=[ - "--impure", - "--show-trace", - "--expr", - f""" - let - b = builtins; - system = b.currentSystem; - flake = b.getFlake (toString {flake_dir}); - clan-core = flake.inputs.clan-core; - config = b.fromJSON (b.readFile (b.getEnv "CLAN_MACHINE_SETTINGS_FILE")); - modules_not_found = - b.filter - (modName: ! clan-core.clanModules ? ${{modName}}) - config.clanImports or []; - in - modules_not_found - """, - ] - ), - cwd=flake_dir, - env=env, - check=False, - ) - if proc.returncode != 0: - raise ClanHttpError( - status_code=400, - msg=f"Failed to check clanImports for existence:\n{proc.stderr}", - ) - modules_not_found = json.loads(proc.stdout) - if len(modules_not_found) > 0: - raise ClanHttpError( - msg="Some requested clan modules could not be found", status_code=400 - ) - - # get the schema - proc = run( - nix_eval( - flags=[ - "--impure", - "--show-trace", - "--expr", - f""" - let - system = builtins.currentSystem; - flake = builtins.getFlake (toString {flake_dir}); - clan-core = flake.inputs.clan-core; - nixpkgsSrc = flake.inputs.nixpkgs or {nixpkgs_source()}; - lib = import (nixpkgsSrc + /lib); - pkgs = import nixpkgsSrc {{ inherit system; }}; - config = lib.importJSON (builtins.getEnv "CLAN_MACHINE_SETTINGS_FILE"); - fakeMachine = pkgs.nixos {{ - imports = - [ - clan-core.nixosModules.clanCore - # potentially the config might affect submodule options, - # therefore we need to import it - config - {{ clan.core.name = "fakeClan"; }} - ] - # add all clan modules specified via clanImports - ++ (map (name: clan-core.clanModules.${{name}}) config.clanImports or []); - }}; - options = fakeMachine.options{"." + ".".join(option_path) if option_path else ""}; - jsonschemaLib = import {Path(__file__).parent / "jsonschema"} {{ inherit lib; }} {{}}; - jsonschema = jsonschemaLib.parseOptions options {{}}; - in - jsonschema - """, - ], - ), - check=False, - cwd=flake_dir, - env=env, - ) - if proc.returncode != 0: - msg = f"Failed to read schema:\n{proc.stderr}" - raise ClanError(msg) - return json.loads(proc.stdout) diff --git a/pkgs/clan-cli/pyproject.toml b/pkgs/clan-cli/pyproject.toml index d388d2a64..2d84cfdba 100644 --- a/pkgs/clan-cli/pyproject.toml +++ b/pkgs/clan-cli/pyproject.toml @@ -20,7 +20,6 @@ exclude = ["clan_cli.nixpkgs*", "result"] [tool.setuptools.package-data] clan_cli = [ "**/allowed-programs.json", - "config/jsonschema/*", "py.typed", "templates/**/*", "vms/mimetypes/**/*", @@ -50,10 +49,6 @@ exclude = "clan_cli.nixpkgs" module = "argcomplete.*" ignore_missing_imports = true -[[tool.mypy.overrides]] -module = "jsonschema.*" -ignore_missing_imports = true - [[tool.mypy.overrides]] module = "ipdb.*" ignore_missing_imports = true