forked from roots/phyllomeos
Replace the hardcoded TEMPLATES dict and the ksflatten-relative wrapper with a single data-driven pipeline: - recipe_templates.yaml becomes the single source of truth with three sections: base (always included), choices (exactly-one per category, the invariant pykickstart cannot check) and features (additive flags or one-of values) - generate_recipe.py is a pure YAML consumer: it resolves ingredients, renders dishes via pykickstart in-process (no ksflatten binary, no %include path munging), lints the invariants pykickstart cannot check (exactly-one per choice category, known keys, existing fragments, unique filenames) and validates every generated dish - dish names are derived by a generic rule with canonical category order from the templates, independent of YAML key order; no committed generated files means no name burn-in - recipes/ and dishes/ become gitignored build products; the 68 tracked generated files (already out of sync with the manifest) are removed - delete dead ingredients (section-data/, validation/, initial-setup/ desktop/, live/hypervisor.ks, rpmfusion-nonfree.ks), the stale all-ingredients.cfg (replaced by 'make inventory') and the bin/generate-recipe and bin/ksflatten-relative wrappers - Makefile: single 'make all' step plus lint, validate, inventory, test - add 16 pytest tests covering expansion, selection, naming, lint and flatten/validate round-trips
53 lines
1.5 KiB
Makefile
53 lines
1.5 KiB
Makefile
.PHONY: help generate lint validate inventory test install-deps clean clean-recipes clean-dishes all
|
|
|
|
PYTHON ?= python3
|
|
|
|
default: all
|
|
|
|
help:
|
|
@echo "Phyllome OS Recipe Generator"
|
|
@echo ""
|
|
@echo "Available targets:"
|
|
@echo " all - Generate recipes and dishes, lint, and validate (default)"
|
|
@echo " generate - Same as 'all'"
|
|
@echo " lint - Lint manifest and templates without writing files"
|
|
@echo " validate - Validate existing dishes without regenerating"
|
|
@echo " inventory - Print the ingredient inventory derived from recipe_templates.yaml"
|
|
@echo " test - Run the pytest test suite"
|
|
@echo " install-deps - Install Python dependencies"
|
|
@echo " clean - Remove generated recipes and dishes"
|
|
@echo " clean-recipes- Remove generated recipes only"
|
|
@echo " clean-dishes - Remove generated dishes only"
|
|
|
|
all: generate
|
|
|
|
generate:
|
|
@$(PYTHON) generate_recipe.py
|
|
|
|
lint:
|
|
@$(PYTHON) generate_recipe.py --no-generate --no-validate
|
|
|
|
validate:
|
|
@$(PYTHON) generate_recipe.py --no-generate --no-lint
|
|
|
|
inventory:
|
|
@$(PYTHON) generate_recipe.py --inventory
|
|
|
|
test:
|
|
@$(PYTHON) -m pytest tests
|
|
|
|
install-deps:
|
|
@pip install -r requirements.txt
|
|
|
|
clean:
|
|
@rm -f recipes/*.cfg dishes/*.cfg
|
|
@echo "Generated recipes and dishes removed. Run 'make all' to regenerate."
|
|
|
|
clean-recipes:
|
|
@rm -f recipes/*.cfg
|
|
@echo "Generated recipes removed. Run 'make generate' to regenerate."
|
|
|
|
clean-dishes:
|
|
@rm -f dishes/*.cfg
|
|
@echo "Generated dishes removed. Run 'make generate' to regenerate."
|