51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
THIS_FILE = Path(__file__).resolve()
|
|
PROJECT_ROOT = THIS_FILE.parents[2]
|
|
PY_ROOT = PROJECT_ROOT / 'builder' / 'py'
|
|
if str(PY_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(PY_ROOT))
|
|
|
|
from retrobuilder.context import BuildContext
|
|
from retrobuilder.entrypoints import BaseEntry, cli_dispatch
|
|
from retrobuilder.model import BaseSpec
|
|
|
|
SPEC = BaseSpec(
|
|
description='Sample base used to validate the V2 builder flow.',
|
|
parent='retrodebian',
|
|
docker_overrides={
|
|
# 'pre-feature': {'image': 'retrodebian/custom-lenny:latest'},
|
|
# 'post-feature': {'dockerfile': 'bases/sample-base/Dockerfile.lenny'},
|
|
},
|
|
)
|
|
|
|
|
|
class Entry(BaseEntry):
|
|
def _marker(self, ctx: BuildContext, name: str) -> Path:
|
|
ctx.artifacts_root.mkdir(parents=True, exist_ok=True)
|
|
return ctx.artifacts_root / name
|
|
|
|
def pre_gen(self, ctx: BuildContext) -> None:
|
|
self._marker(ctx, 'pre-gen.txt').write_text('sample-base pre-gen\n', encoding='utf-8')
|
|
|
|
def post_gen(self, ctx: BuildContext) -> None:
|
|
self._marker(ctx, 'post-gen.txt').write_text('sample-base post-gen\n', encoding='utf-8')
|
|
|
|
def pre_feature(self, ctx: BuildContext) -> None:
|
|
notes = ctx.live_dir / 'builder-notes'
|
|
notes.mkdir(parents=True, exist_ok=True)
|
|
(notes / 'base-pre-feature.txt').write_text('sample-base pre-feature\n', encoding='utf-8')
|
|
|
|
def post_feature(self, ctx: BuildContext) -> None:
|
|
notes = ctx.live_dir / 'builder-notes'
|
|
notes.mkdir(parents=True, exist_ok=True)
|
|
(notes / 'base-post-feature.txt').write_text('sample-base post-feature\n', encoding='utf-8')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
raise SystemExit(cli_dispatch(SPEC, Entry))
|