clan-config: unbreak + include data files
All checks were successful
build / test (pull_request) Successful in 27s

This commit is contained in:
DavHau 2023-08-09 17:59:07 +02:00
parent 3d3dcc800b
commit f9aaa5ad39
5 changed files with 23 additions and 21 deletions

View File

@ -1,7 +1,7 @@
import argparse import argparse
import sys import sys
from . import admin, secrets from . import admin, config, secrets
from .errors import ClanError from .errors import ClanError
from .ssh import cli as ssh_cli from .ssh import cli as ssh_cli
@ -20,12 +20,8 @@ def main() -> None:
parser_admin = subparsers.add_parser("admin") parser_admin = subparsers.add_parser("admin")
admin.register_parser(parser_admin) admin.register_parser(parser_admin)
# Currently broken parser_config = subparsers.add_parser("config")
# parser_config = subparsers.add_parser("config") config.register_parser(parser_config)
# try:
# config.register_parser(parser_config)
# except subprocess.CalledProcessError as e:
# warn(f"The config command does not work in the nix sandbox: {e}")
parser_ssh = subparsers.add_parser("ssh", help="ssh to a remote machine") parser_ssh = subparsers.add_parser("ssh", help="ssh to a remote machine")
ssh_cli.register_parser(parser_ssh) ssh_cli.register_parser(parser_ssh)

View File

@ -1,7 +1,6 @@
# !/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
@ -9,7 +8,7 @@ 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") script_dir = Path(__file__).parent
class Kwargs: class Kwargs:
@ -23,14 +22,14 @@ class Kwargs:
def schema_from_module_file( def schema_from_module_file(
file: Union[str, Path] = "./tests/config/example-interface.nix", file: Union[str, Path] = f"{script_dir}/jsonschema/example-schema.json",
) -> dict[str, Any]: ) -> dict[str, Any]:
absolute_path = Path(file).absolute() absolute_path = Path(file).absolute()
# define a nix expression that loads the given module file using lib.evalModules # define a nix expression that loads the given module file using lib.evalModules
nix_expr = f""" nix_expr = f"""
let let
lib = import <nixpkgs/lib>; lib = import <nixpkgs/lib>;
slib = import {CLAN_FLAKE}/lib/jsonschema.nix {{inherit lib;}}; slib = import {script_dir}/jsonschema {{inherit lib;}};
in in
slib.parseModule {absolute_path} slib.parseModule {absolute_path}
""" """
@ -44,7 +43,7 @@ def schema_from_module_file(
def register_parser( def register_parser(
parser: argparse.ArgumentParser, parser: argparse.ArgumentParser,
file: Path = Path("./tests/config/example-interface.nix"), file: Path = Path(f"{script_dir}/jsonschema/example-schema.json"),
) -> None: ) -> None:
if file.name.endswith(".nix"): if file.name.endswith(".nix"):
schema = schema_from_module_file(file) schema = schema_from_module_file(file)
@ -74,7 +73,8 @@ def _register_parser(
"string": str, "string": str,
} }
parser = argparse.ArgumentParser(description=schema.get("description")) if parser is None:
parser = argparse.ArgumentParser(description=schema.get("description"))
subparsers = parser.add_subparsers( subparsers = parser.add_subparsers(
title="more options", title="more options",

View File

@ -0,0 +1 @@
../../../../lib/jsonschema

View File

@ -40,11 +40,16 @@ python3.pkgs.buildPythonPackage {
]; ];
propagatedBuildInputs = dependencies; propagatedBuildInputs = dependencies;
preBuild = ''
rm ./clan_cli/config/jsonschema
cp -r ${self}/lib/jsonschema ./clan_cli/config/jsonschema
'';
passthru.tests = { passthru.tests = {
clan-mypy = runCommand "clan-mypy" { } '' clan-mypy = runCommand "clan-mypy" { } ''
cp -r ${./.} ./src cp -r ${self} ./flake
chmod +w -R ./src chmod +w -R ./flake
cd src cd ./flake/pkgs/clan-cli
${checkPython}/bin/mypy . ${checkPython}/bin/mypy .
touch $out touch $out
''; '';
@ -52,9 +57,9 @@ python3.pkgs.buildPythonPackage {
{ {
nativeBuildInputs = [ age zerotierone bubblewrap sops nix ]; nativeBuildInputs = [ age zerotierone bubblewrap sops nix ];
} '' } ''
cp -r ${./.} ./src cp -r ${self} ./flake
chmod +w -R ./src chmod +w -R ./flake
cd src cd ./flake/pkgs/clan-cli
${checkPython}/bin/python -m pytest ./tests ${checkPython}/bin/python -m pytest ./tests
touch $out touch $out
''; '';

View File

@ -8,8 +8,8 @@ description = "cLAN CLI tool"
dynamic = [ "version" ] dynamic = [ "version" ]
scripts = { clan = "clan_cli:main" } scripts = { clan = "clan_cli:main" }
[tool.setuptools.packages] [tool.setuptools.package-data]
find = {} clan_cli = ["config/jsonschema/*"]
[tool.pytest.ini_options] [tool.pytest.ini_options]
addopts = "--cov . --cov-report term --cov-report html:.reports/html --no-cov-on-fail" addopts = "--cov . --cov-report term --cov-report html:.reports/html --no-cov-on-fail"