Merge pull request 'clan-config: move jsonschema lib to clanLib' (#109) from DavHau-clan-config into main
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
];
|
];
|
||||||
imports = [
|
imports = [
|
||||||
|
# ./checks/flake-module.nix
|
||||||
./devShell.nix
|
./devShell.nix
|
||||||
./formatter.nix
|
./formatter.nix
|
||||||
./templates/flake-module.nix
|
./templates/flake-module.nix
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{ lib, ... }:
|
{ lib, ... }:
|
||||||
let
|
{
|
||||||
clanLib = {
|
|
||||||
findNixFiles = folder:
|
findNixFiles = folder:
|
||||||
lib.mapAttrs'
|
lib.mapAttrs'
|
||||||
(name: type:
|
(name: type:
|
||||||
@@ -12,6 +11,6 @@ let
|
|||||||
lib.nameValuePair (lib.removeSuffix ".nix" name) "${folder}/${name}"
|
lib.nameValuePair (lib.removeSuffix ".nix" name) "${folder}/${name}"
|
||||||
)
|
)
|
||||||
(builtins.readDir folder);
|
(builtins.readDir folder);
|
||||||
};
|
|
||||||
in
|
jsonschema = import ./jsonschema { inherit lib; };
|
||||||
clanLib
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, ...
|
, ...
|
||||||
}: {
|
}: {
|
||||||
|
imports = [
|
||||||
|
./jsonschema/flake-module.nix
|
||||||
|
];
|
||||||
flake.lib = import ./default.nix { inherit lib; };
|
flake.lib = import ./default.nix { inherit lib; };
|
||||||
}
|
}
|
||||||
|
|||||||
29
lib/jsonschema/flake-module.nix
Normal file
29
lib/jsonschema/flake-module.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
perSystem = { pkgs, self', ... }: {
|
||||||
|
checks = {
|
||||||
|
|
||||||
|
# check if the `clan config` example jsonschema and data is valid
|
||||||
|
lib-jsonschema-example-valid = pkgs.runCommand "lib-jsonschema-example-valid" { } ''
|
||||||
|
echo "Checking that example-schema.json is valid"
|
||||||
|
${pkgs.check-jsonschema}/bin/check-jsonschema \
|
||||||
|
--check-metaschema ${./.}/example-schema.json
|
||||||
|
|
||||||
|
echo "Checking that example-data.json is valid according to example-schema.json"
|
||||||
|
${pkgs.check-jsonschema}/bin/check-jsonschema \
|
||||||
|
--schemafile ${./.}/example-schema.json \
|
||||||
|
${./.}/example-data.json
|
||||||
|
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
# check if the `clan config` nix jsonschema converter unit tests succeed
|
||||||
|
lib-jsonschema-nix-unit-tests = pkgs.runCommand "lib-jsonschema-nix-unit-tests" { } ''
|
||||||
|
export NIX_PATH=nixpkgs=${pkgs.path}
|
||||||
|
${self'.packages.nix-unit}/bin/nix-unit \
|
||||||
|
${./.}/test.nix \
|
||||||
|
--eval-store $(realpath .)
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# run these tests via `nix-unit ./test.nix`
|
# run these tests via `nix-unit ./test.nix`
|
||||||
{ lib ? (import <nixpkgs> { }).lib
|
{ lib ? (import <nixpkgs> { }).lib
|
||||||
, slib ? import ../../clan_cli/config/schema-lib.nix { inherit lib; }
|
, slib ? import ./. { inherit lib; }
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
parseOption = import ./test_parseOption.nix { inherit lib slib; };
|
parseOption = import ./test_parseOption.nix { inherit lib slib; };
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# tests for the nixos options to jsonschema converter
|
# tests for the nixos options to jsonschema converter
|
||||||
# run these tests via `nix-unit ./test.nix`
|
# run these tests via `nix-unit ./test.nix`
|
||||||
{ lib ? (import <nixpkgs> { }).lib
|
{ lib ? (import <nixpkgs> { }).lib
|
||||||
, slib ? import ../../clan_cli/config/schema-lib.nix { inherit lib; }
|
, slib ? import ./. { inherit lib; }
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
description = "Test Description";
|
description = "Test Description";
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# tests for the nixos options to jsonschema converter
|
# tests for the nixos options to jsonschema converter
|
||||||
# run these tests via `nix-unit ./test.nix`
|
# run these tests via `nix-unit ./test.nix`
|
||||||
{ lib ? (import <nixpkgs> { }).lib
|
{ lib ? (import <nixpkgs> { }).lib
|
||||||
, slib ? import ../../clan_cli/config/schema-lib.nix { inherit lib; }
|
, slib ? import ./. { inherit lib; }
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
evaledOptions =
|
evaledOptions =
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
# !/usr/bin/env python3
|
# !/usr/bin/env python3
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -8,6 +9,8 @@ from typing import Any, Optional, Type, Union
|
|||||||
|
|
||||||
from clan_cli.errors import ClanError
|
from clan_cli.errors import ClanError
|
||||||
|
|
||||||
|
CLAN_FLAKE = os.getenv("CLAN_FLAKE")
|
||||||
|
|
||||||
|
|
||||||
class Kwargs:
|
class Kwargs:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
@@ -27,7 +30,7 @@ def schema_from_module_file(
|
|||||||
nix_expr = f"""
|
nix_expr = f"""
|
||||||
let
|
let
|
||||||
lib = import <nixpkgs/lib>;
|
lib = import <nixpkgs/lib>;
|
||||||
slib = import {__file__}/../schema-lib.nix {{inherit lib;}};
|
slib = import {CLAN_FLAKE}/lib/jsonschema.nix {{inherit lib;}};
|
||||||
in
|
in
|
||||||
slib.parseModule {absolute_path}
|
slib.parseModule {absolute_path}
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -27,30 +27,7 @@
|
|||||||
## End optional dependencies
|
## End optional dependencies
|
||||||
};
|
};
|
||||||
|
|
||||||
checks = self'.packages.clan-cli.tests // {
|
checks = self'.packages.clan-cli.tests;
|
||||||
# check if the `clan config` example jsonschema and data is valid
|
|
||||||
clan-config-example-schema-valid = pkgs.runCommand "clan-config-example-schema-valid" { } ''
|
|
||||||
echo "Checking that example-schema.json is valid"
|
|
||||||
${pkgs.check-jsonschema}/bin/check-jsonschema \
|
|
||||||
--check-metaschema ${./.}/tests/config/example-schema.json
|
|
||||||
|
|
||||||
echo "Checking that example-data.json is valid according to example-schema.json"
|
|
||||||
${pkgs.check-jsonschema}/bin/check-jsonschema \
|
|
||||||
--schemafile ${./.}/tests/config/example-schema.json \
|
|
||||||
${./.}/tests/config/example-data.json
|
|
||||||
|
|
||||||
touch $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
# check if the `clan config` nix jsonschema converter unit tests succeed
|
|
||||||
clan-config-nix-unit-tests = pkgs.runCommand "clan-edit-unit-tests" { } ''
|
|
||||||
export NIX_PATH=nixpkgs=${pkgs.path}
|
|
||||||
${self'.packages.nix-unit}/bin/nix-unit \
|
|
||||||
${./.}/tests/config/test.nix \
|
|
||||||
--eval-store $(realpath .)
|
|
||||||
touch $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ let
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
checkScript = pkgs.writeScriptBin "check" ''
|
checkScript = pkgs.writeScriptBin "check" ''
|
||||||
nix build -f . tests -L "$@"
|
nix build .#checks.${pkgs.system}.{treefmt,clan-mypy,clan-pytest} -L "$@"
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
|
|||||||
Reference in New Issue
Block a user