Commit generated code otherwise CI cannot check types

This commit is contained in:
Johannes Kirschbauer
2024-07-18 22:26:05 +02:00
parent a8bf83e849
commit a4b1a0eb47
4 changed files with 210 additions and 5 deletions

1
.gitignore vendored
View File

@@ -9,7 +9,6 @@ democlan
example_clan
result*
/pkgs/clan-cli/clan_cli/nixpkgs
/pkgs/clan-cli/clan_cli/inventory/classes.py
/pkgs/clan-cli/clan_cli/webui/assets
nixos.qcow2
**/*.glade~

View File

@@ -0,0 +1,176 @@
# DON NOT EDIT THIS FILE MANUALLY. IT IS GENERATED.
#
# ruff: noqa: N815
# ruff: noqa: N806
# ruff: noqa: F401
# fmt: off
from dataclasses import dataclass, field
from typing import Any
@dataclass
class MachineDeploy:
targetHost: str | None = field(default=None )
@dataclass
class Machine:
deploy: MachineDeploy
name: str
description: str | None = field(default=None )
icon: str | None = field(default=None )
system: str | None = field(default=None )
tags: list[str] = field(default_factory=list )
@dataclass
class Meta:
name: str
description: str | None = field(default=None )
icon: str | None = field(default=None )
@dataclass
class BorgbackupConfigDestination:
repo: str
name: str
@dataclass
class BorgbackupConfig:
destinations: dict[str, BorgbackupConfigDestination] = field(default_factory=dict )
@dataclass
class ServiceBorgbackupMachine:
config: BorgbackupConfig = field(default_factory=BorgbackupConfig )
imports: list[str] = field(default_factory=list )
@dataclass
class ServiceBorgbackupMeta:
name: str
description: str | None = field(default=None )
icon: str | None = field(default=None )
@dataclass
class ServiceBorgbackupRoleClient:
config: BorgbackupConfig = field(default_factory=BorgbackupConfig )
imports: list[str] = field(default_factory=list )
machines: list[str] = field(default_factory=list )
tags: list[str] = field(default_factory=list )
@dataclass
class ServiceBorgbackupRoleServer:
config: BorgbackupConfig = field(default_factory=BorgbackupConfig )
imports: list[str] = field(default_factory=list )
machines: list[str] = field(default_factory=list )
tags: list[str] = field(default_factory=list )
@dataclass
class ServiceBorgbackupRole:
client: ServiceBorgbackupRoleClient
server: ServiceBorgbackupRoleServer
@dataclass
class ServiceBorgbackup:
meta: ServiceBorgbackupMeta
roles: ServiceBorgbackupRole
config: BorgbackupConfig = field(default_factory=BorgbackupConfig )
machines: dict[str, ServiceBorgbackupMachine] = field(default_factory=dict )
@dataclass
class PackagesConfig:
packages: list[str] = field(default_factory=list )
@dataclass
class ServicePackageMachine:
config: PackagesConfig = field(default_factory=PackagesConfig )
imports: list[str] = field(default_factory=list )
@dataclass
class ServicePackageMeta:
name: str
description: str | None = field(default=None )
icon: str | None = field(default=None )
@dataclass
class ServicePackageRoleDefault:
config: PackagesConfig = field(default_factory=PackagesConfig )
imports: list[str] = field(default_factory=list )
machines: list[str] = field(default_factory=list )
tags: list[str] = field(default_factory=list )
@dataclass
class ServicePackageRole:
default: ServicePackageRoleDefault
@dataclass
class ServicePackage:
meta: ServicePackageMeta
roles: ServicePackageRole
config: PackagesConfig = field(default_factory=PackagesConfig )
machines: dict[str, ServicePackageMachine] = field(default_factory=dict )
@dataclass
class SingleDiskConfig:
device: str | None = field(default=None )
@dataclass
class ServiceSingleDiskMachine:
config: SingleDiskConfig = field(default_factory=SingleDiskConfig )
imports: list[str] = field(default_factory=list )
@dataclass
class ServiceSingleDiskMeta:
name: str
description: str | None = field(default=None )
icon: str | None = field(default=None )
@dataclass
class ServiceSingleDiskRoleDefault:
config: SingleDiskConfig = field(default_factory=SingleDiskConfig )
imports: list[str] = field(default_factory=list )
machines: list[str] = field(default_factory=list )
tags: list[str] = field(default_factory=list )
@dataclass
class ServiceSingleDiskRole:
default: ServiceSingleDiskRoleDefault
@dataclass
class ServiceSingleDisk:
meta: ServiceSingleDiskMeta
roles: ServiceSingleDiskRole
config: SingleDiskConfig = field(default_factory=SingleDiskConfig )
machines: dict[str, ServiceSingleDiskMachine] = field(default_factory=dict )
@dataclass
class Service:
borgbackup: dict[str, ServiceBorgbackup] = field(default_factory=dict )
packages: dict[str, ServicePackage] = field(default_factory=dict )
single_disk: dict[str, ServiceSingleDisk] = field(default_factory=dict , metadata={"original_name": "single-disk"})
@dataclass
class Inventory:
meta: Meta
services: Service
machines: dict[str, Machine] = field(default_factory=dict )

View File

@@ -89,6 +89,35 @@
default = self'.packages.clan-cli;
};
checks = self'.packages.clan-cli.tests;
checks = self'.packages.clan-cli.tests // {
inventory-classes-up-to-date = pkgs.stdenv.mkDerivation {
name = "inventory-classes-up-to-date";
src = ./clan_cli/inventory;
env = {
classFile = "classes.py";
};
installPhase = ''
${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema}/schema.json b_classes.py
file1=$classFile
file2=b_classes.py
echo "Comparing $file1 and $file2"
if cmp -s "$file1" "$file2"; then
echo "Files are identical"
echo "Classes file is up to date"
else
echo "Classes file is out of date or has been modified"
echo "run ./update.sh in the inventory directory to update the classes file"
echo "--------------------------------\n"
diff "$file1" "$file2"
echo "--------------------------------\n\n"
exit 1
fi
touch $out
'';
};
};
};
}

View File

@@ -179,11 +179,12 @@ def run_gen(args: argparse.Namespace) -> None:
with open(args.output, "w") as f:
f.write(
"""
# DON NOT EDIT THIS FILE MANUALLY. IT IS GENERATED.
# UPDATE
"""# DON NOT EDIT THIS FILE MANUALLY. IT IS GENERATED.
#
# ruff: noqa: N815
# ruff: noqa: N806
# ruff: noqa: F401
# fmt: off
from dataclasses import dataclass, field
from typing import Any\n\n
"""