Much cleaner build script

This commit is contained in:
Greg Hellings
2023-08-10 23:17:15 -05:00
parent f2c43c3cae
commit dc583c41eb
12 changed files with 171 additions and 8 deletions
View File
+22
View File
@@ -0,0 +1,22 @@
from provider import Provider
class Build:
def __init__(self, distro, version, provider: Provider):
self.distro: str = distro
self.version: str = str(version)
self.provider: str = provider
@property
def var_file(self):
return f"-var-file=distros/{self.distro}/{self.version}/{self.provider.arch}.pkrvars.hcl"
@property
def only(self):
return f"-only={self.provider}"
def __str__(self) -> str:
return f"{self.distro} {self.version}: {self.provider}"
def __repr__(self) -> str:
return str(self)
+26
View File
@@ -0,0 +1,26 @@
from provider import Provider
from build import Build
class Distro:
def __init__(self, name: str, support: map):
self.name = name
self.builds = []
for version, matrix in support.items():
for support in matrix:
provider = Provider(support["provider"], support["arch"])
build = Build(self.name, version, provider)
self.builds.append(build)
def __str__(self) -> str:
return f"{self.name}"
def __repr__(self) -> str:
return f"{self.name}: {' '.join(self.versions)}"
@property
def versions(self) -> set[str]:
return set([b.version for b in self.builds])
def builds_for_version(self, version: str) -> set[Build]:
return set(filter(lambda x: x.version == version, self.builds))
+7
View File
@@ -0,0 +1,7 @@
class Provider:
def __init__(self, name, arch):
self.name = name
self.arch = arch
def __str__(self) -> str:
return f"{self.name}.{self.arch}"
+23
View File
@@ -0,0 +1,23 @@
from distro import Distro
from provider import Provider
from pathlib import Path
from yaml import load, Loader
BASE = Path(__file__).parent.parent
class Support:
def __init__(self):
self.base = BASE
self.distros = self.__get_distros()
def __get_distros(self) -> map:
distros = {}
distros_dir = self.base / "distros"
for f in distros_dir.glob("**/supports.yml"):
name = f.parent.name
with open(f, "r") as fp:
support_yml = load(fp, Loader=Loader)
distros[name] = Distro(name, support_yml)
return distros