mirror of
https://github.com/d9pouces/id_configurator.git
synced 2026-11-09 01:47:21 +01:00
feat: new configurations for APK/Java/Python/Yum
Signed-off-by: d9pouces <github@19pouces.net>
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import datetime
|
||||
import pathlib
|
||||
import re
|
||||
import subprocess
|
||||
import tomllib
|
||||
|
||||
|
||||
class SourceConfig:
|
||||
site_url = "https://interdiode.fr/"
|
||||
documentation_url = "https://interdiode.fr/static/latest/index.html"
|
||||
cosign_key_url = "https://interdiode.fr/static/cosign.interdiode.fr.pub"
|
||||
docker_user = "nonroot"
|
||||
docker_group = "nonroot"
|
||||
# noinspection SpellCheckingInspection
|
||||
docker_env = """ PATH=/usr/local/bin/:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/interdiode/bin \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=on \
|
||||
PIP_NO_CACHE_DIR=on \
|
||||
PYTHONUSERBASE=/usr/local/interdiode \
|
||||
PYTHONFAULTHANDLER=1 \
|
||||
PYTHONHASHSEED=random \
|
||||
PYTHONUNBUFFERED=1
|
||||
"""
|
||||
|
||||
# noinspection SpellCheckingInspection
|
||||
def __init__(self, docker_version: str = "debian13-dev"):
|
||||
self.source_dir = pathlib.Path(__file__).parent.parent
|
||||
with open(self.source_dir / "pyproject.toml", "rb") as fd:
|
||||
self.raw_metadata = tomllib.load(fd)
|
||||
self.docker_version = docker_version
|
||||
|
||||
def get_python_versions(self) -> list[str]:
|
||||
"""Return the list of Python versions supported by the project."""
|
||||
python_versions = []
|
||||
for classifier in self.raw_metadata["project"]["classifiers"]:
|
||||
if matcher := re.match(
|
||||
r"Programming Language :: Python :: (\d\.\d+)", classifier
|
||||
):
|
||||
python_versions.append(matcher.group(1))
|
||||
return python_versions
|
||||
|
||||
def get_project_version(self) -> str:
|
||||
"""Get the version of InterDiode from the pyproject.toml file."""
|
||||
return self.raw_metadata["project"]["version"]
|
||||
|
||||
def get_git_project_revision(self) -> str:
|
||||
"""Get the git revision of the project."""
|
||||
out = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=self.source_dir) # nosec B607
|
||||
return out.decode().strip()
|
||||
|
||||
def get_parameters(self, python_version: str | None = None) -> dict[str, str]:
|
||||
python_version = python_version or self.get_python_versions()[-1]
|
||||
return {
|
||||
"build_date": datetime.datetime.now(tz=datetime.UTC).isoformat(),
|
||||
"build_year": str(datetime.datetime.now(tz=datetime.UTC).year),
|
||||
"docker_env": self.docker_env,
|
||||
"docker_user": self.docker_user,
|
||||
"docker_group": self.docker_group,
|
||||
"docker_version": self.docker_version,
|
||||
"documentation_url": self.documentation_url,
|
||||
"interdiode_url": self.site_url,
|
||||
"id_configurator_version": self.get_project_version(),
|
||||
"python_version": python_version,
|
||||
"vcs_revision": self.get_git_project_revision(),
|
||||
}
|
||||
|
||||
def get_project_author_and_emails(self) -> list[dict[str, str]]:
|
||||
"""Get the authors of InterDiode from the pyproject.toml file."""
|
||||
return self.raw_metadata["project"]["authors"]
|
||||
|
||||
def get_project_authors(self) -> list[str]:
|
||||
"""Get the authors of InterDiode from the pyproject.toml file."""
|
||||
return [author["name"] for author in self.raw_metadata["project"]["authors"]]
|
||||
Reference in New Issue
Block a user