feat: finish basic packer

- finish basic packer
- add basic jinja2 template
This commit is contained in:
2026-08-02 20:54:14 +08:00
parent 8098216a83
commit 3261a4cd4b
11 changed files with 203 additions and 32 deletions
@@ -0,0 +1,24 @@
from dataclasses import dataclass
from pathlib import Path
from . import common
@dataclass(frozen=True)
class CMakeProperties:
name: str
"""The identifier of project"""
class CMakeRender:
__render: common.BaseRender
__properties: CMakeProperties
def __init__(self, properties: CMakeProperties) -> None:
self.__render = common.BaseRender()
self.__properties = properties
def render_config(self) -> None:
pass
def render_config_version(self) -> None:
pass
@@ -0,0 +1,22 @@
from pathlib import Path
from typing import Any
import jinja2
from .. import utils
class BaseRender:
__loader: jinja2.BaseLoader
__environment: jinja2.Environment
def __init__(self) -> None:
self.__loader = jinja2.FileSystemLoader(utils.get_templates_dir())
self.__environment = jinja2.Environment(loader=self.__loader)
def render(
self, template_filename: str, dest_filepath: Path, payload: dict[str, Any]
) -> None:
# fetch template
template = self.__environment.get_template(template_filename)
# render template and save
with open(dest_filepath, "w", encoding="utf-8") as f:
f.write(template.render(**payload))
@@ -0,0 +1,20 @@
from dataclasses import dataclass
from pathlib import Path
from . import common
@dataclass(frozen=True)
class PkgConfigProperties:
pass
class PkgConfigRender:
__render: common.BaseRender
__properties: PkgConfigProperties
def __init__(self, properties: PkgConfigProperties) -> None:
self.__render = common.BaseRender()
self.__properties = properties
def render(self) -> None:
pass