refactor: rename fragments directory to ingredients and update all references
- Directory rename: fragments/ → ingredients/ (54 .ks files) - Updated all Python scripts: * tests/integration/conftest.py - fixture renames * tests/integration/test_integration.py - constant and path updates * tests/test_recipe_generator.py - updated test assertions * recipe-generator/validators.py - updated comments and error messages * recipe-generator/recipe_generator.py - updated comment - Updated all YAML files: * recipe-generator/recipe_templates.yaml - 66 path references * .gitea/workflows/validate-fragments.yaml → validate-ingredients.yaml * .gitea/workflows/test-generation.yaml - path patterns - Updated scripts: * bin/ksflatten-relative - updated path detection - Updated test file: * tests/integration/test_fragments.py → test_ingredients.py - Updated documentation: * DEVELOPMENT.md - simplified references * DEVELOPMENT_QUICK.md - updated examples * tests/container/README.md - test references - Regenerated all recipes (16 files) with ingredient paths - Updated test fixtures (7 files) - All integration tests pass (5/5) - All unit tests pass (29/31 - 2 pre-existing failures unrelated)
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -96,7 +96,7 @@ class RecipeGenerator:
|
||||
modifiers = modifiers.copy()
|
||||
modifiers['version'] = version
|
||||
|
||||
# Add required includes (all fragments listed under 'required')
|
||||
# Add required includes (all ingredients listed under 'required')
|
||||
for item in template.get('required', []):
|
||||
if isinstance(item, dict):
|
||||
fragment_path = list(item.values())[0]
|
||||
|
||||
@@ -8,96 +8,96 @@ templates:
|
||||
description: "An install recipe for desktop, server, or hypervisor"
|
||||
base: core
|
||||
required:
|
||||
- core: fragments/core/base.ks
|
||||
- version: fragments/repo/fedora-43-mirrors.ks
|
||||
- storage: fragments/storage/standard.ks
|
||||
- bootloader: fragments/bootloader/grub.ks
|
||||
- locale: fragments/core/locale.ks
|
||||
- services: fragments/core/services.ks
|
||||
- network: fragments/core/network.ks
|
||||
- packages: fragments/packages/core-group.ks
|
||||
- fedora-remix: fragments/packages/fedora-remix.ks
|
||||
- hand-picked: fragments/packages/hand-picked.ks
|
||||
- security: fragments/core/security/enabled.ks
|
||||
- initial-setup: fragments/initial-setup/server/config.ks
|
||||
- core: ingredients/core/base.ks
|
||||
- version: ingredients/repo/fedora-43-mirrors.ks
|
||||
- storage: ingredients/storage/standard.ks
|
||||
- bootloader: ingredients/bootloader/grub.ks
|
||||
- locale: ingredients/core/locale.ks
|
||||
- services: ingredients/core/services.ks
|
||||
- network: ingredients/core/network.ks
|
||||
- packages: ingredients/packages/core-group.ks
|
||||
- fedora-remix: ingredients/packages/fedora-remix.ks
|
||||
- hand-picked: ingredients/packages/hand-picked.ks
|
||||
- security: ingredients/core/security/enabled.ks
|
||||
- initial-setup: ingredients/initial-setup/server/config.ks
|
||||
optional:
|
||||
hardware-support: fragments/packages/hardware-support.ks
|
||||
guest-agents: fragments/guest-agents/base.ks
|
||||
hardware-support: ingredients/packages/hardware-support.ks
|
||||
guest-agents: ingredients/guest-agents/base.ks
|
||||
variant_type:
|
||||
desktop:
|
||||
server:
|
||||
hypervisor:
|
||||
modifiers:
|
||||
version:
|
||||
"43": fragments/repo/fedora-43-mirrors.ks
|
||||
"rawhide": fragments/repo/rawhide-mirrors.ks
|
||||
"43": ingredients/repo/fedora-43-mirrors.ks
|
||||
"rawhide": ingredients/repo/rawhide-mirrors.ks
|
||||
storage:
|
||||
standard: fragments/storage/standard.ks
|
||||
encrypted: fragments/storage/encrypted.ks
|
||||
standard: ingredients/storage/standard.ks
|
||||
encrypted: ingredients/storage/encrypted.ks
|
||||
desktop:
|
||||
gnome:
|
||||
- fragments/desktop/gnome/config.ks
|
||||
- fragments/desktop/gnome/packages.ks
|
||||
- fragments/desktop/gnome/post-scripts.ks
|
||||
- ingredients/desktop/gnome/config.ks
|
||||
- ingredients/desktop/gnome/packages.ks
|
||||
- ingredients/desktop/gnome/post-scripts.ks
|
||||
labwc:
|
||||
- fragments/desktop/labwc/config.ks
|
||||
- ingredients/desktop/labwc/config.ks
|
||||
security:
|
||||
secure: fragments/core/security/enabled.ks
|
||||
"off": fragments/core/security/disabled.ks
|
||||
secure: ingredients/core/security/enabled.ks
|
||||
"off": ingredients/core/security/disabled.ks
|
||||
initial-setup:
|
||||
server: fragments/initial-setup/server/config.ks
|
||||
desktop: fragments/initial-setup/desktop/config.ks
|
||||
gnome: fragments/initial-setup/gnome/config.ks
|
||||
generic-wayland: fragments/initial-setup/generic-wayland/config.ks
|
||||
server: ingredients/initial-setup/server/config.ks
|
||||
desktop: ingredients/initial-setup/desktop/config.ks
|
||||
gnome: ingredients/initial-setup/gnome/config.ks
|
||||
generic-wayland: ingredients/initial-setup/generic-wayland/config.ks
|
||||
hypervisor_type:
|
||||
amdcpu: fragments/hypervisor/amdcpu.ks
|
||||
intelcpu: fragments/hypervisor/intelcpu.ks
|
||||
intelgpu: fragments/hypervisor/intelgpu.ks
|
||||
amdcpu: ingredients/hypervisor/amdcpu.ks
|
||||
intelcpu: ingredients/hypervisor/intelcpu.ks
|
||||
intelgpu: ingredients/hypervisor/intelgpu.ks
|
||||
hypervisor:
|
||||
base:
|
||||
- fragments/hypervisor/base/packages.ks
|
||||
- fragments/hypervisor/base/services.ks
|
||||
- fragments/hypervisor/base/post-scripts.ks
|
||||
- ingredients/hypervisor/base/packages.ks
|
||||
- ingredients/hypervisor/base/services.ks
|
||||
- ingredients/hypervisor/base/post-scripts.ks
|
||||
desktop:
|
||||
- fragments/packages/virtual-machine-manager/packages.ks
|
||||
- fragments/packages/virtual-machine-manager/post-scripts.ks
|
||||
- ingredients/packages/virtual-machine-manager/packages.ks
|
||||
- ingredients/packages/virtual-machine-manager/post-scripts.ks
|
||||
bootloader:
|
||||
grub: fragments/bootloader/grub.ks
|
||||
systemd-boot: fragments/bootloader/systemd-boot.ks
|
||||
grub: ingredients/bootloader/grub.ks
|
||||
systemd-boot: ingredients/bootloader/systemd-boot.ks
|
||||
|
||||
# Live recipe - for live-desktop or live-server
|
||||
live:
|
||||
description: "A live recipe for live-desktop or live-server"
|
||||
base: live-core
|
||||
required:
|
||||
- live-core: fragments/live/core/base.ks
|
||||
- version: fragments/repo/fedora-43-mirrors.ks
|
||||
- storage: fragments/live/core/storage.ks
|
||||
- bootloader: fragments/live/core/bootloader/grub.ks
|
||||
- locale: fragments/core/locale.ks
|
||||
- services: fragments/core/services.ks
|
||||
- network: fragments/core/network.ks
|
||||
- packages: fragments/live/core/packages.ks
|
||||
- post: fragments/live/post/base.ks
|
||||
- session: fragments/live/post/session.ks
|
||||
- rpmfusion-nonfree: fragments/repo/rpmfusion-nonfree.ks
|
||||
- live-core: ingredients/live/core/base.ks
|
||||
- version: ingredients/repo/fedora-43-mirrors.ks
|
||||
- storage: ingredients/live/core/storage.ks
|
||||
- bootloader: ingredients/live/core/bootloader/grub.ks
|
||||
- locale: ingredients/core/locale.ks
|
||||
- services: ingredients/core/services.ks
|
||||
- network: ingredients/core/network.ks
|
||||
- packages: ingredients/live/core/packages.ks
|
||||
- post: ingredients/live/post/base.ks
|
||||
- session: ingredients/live/post/session.ks
|
||||
- rpmfusion-nonfree: ingredients/repo/rpmfusion-nonfree.ks
|
||||
optional:
|
||||
variant_type:
|
||||
desktop:
|
||||
server:
|
||||
hardware-support: fragments/packages/hardware-support.ks
|
||||
guest-agents: fragments/guest-agents/base.ks
|
||||
hypervisor: fragments/live/hypervisor.ks
|
||||
hardware-support: ingredients/packages/hardware-support.ks
|
||||
guest-agents: ingredients/guest-agents/base.ks
|
||||
hypervisor: ingredients/live/hypervisor.ks
|
||||
security:
|
||||
secure: fragments/core/security/enabled.ks
|
||||
"off": fragments/core/security/disabled.ks
|
||||
secure: ingredients/core/security/enabled.ks
|
||||
"off": ingredients/core/security/disabled.ks
|
||||
modifiers:
|
||||
version:
|
||||
"43": fragments/repo/fedora-43-mirrors.ks
|
||||
"rawhide": fragments/repo/rawhide-mirrors.ks
|
||||
"43": ingredients/repo/fedora-43-mirrors.ks
|
||||
"rawhide": ingredients/repo/rawhide-mirrors.ks
|
||||
storage:
|
||||
standard: fragments/live/core/storage.ks
|
||||
encrypted: fragments/live/core/storage.ks
|
||||
standard: ingredients/live/core/storage.ks
|
||||
encrypted: ingredients/live/core/storage.ks
|
||||
bootloader:
|
||||
grub: fragments/live/core/bootloader/grub.ks
|
||||
systemd-boot: fragments/live/core/bootloader/systemd-boot.ks
|
||||
grub: ingredients/live/core/bootloader/grub.ks
|
||||
systemd-boot: ingredients/live/core/bootloader/systemd-boot.ks
|
||||
|
||||
@@ -28,7 +28,7 @@ class TemplateValidator:
|
||||
if key not in template:
|
||||
errors.append(f"Missing required key: {key}")
|
||||
|
||||
# Validate required fragments exist
|
||||
# Validate required ingredients exist
|
||||
for item in template.get('required', []):
|
||||
if isinstance(item, dict):
|
||||
fragment_path = list(item.values())[0]
|
||||
@@ -37,18 +37,18 @@ class TemplateValidator:
|
||||
|
||||
full_path = self.project_root / fragment_path
|
||||
if not full_path.exists():
|
||||
errors.append(f"Required fragment not found: {fragment_path}")
|
||||
errors.append(f"Required ingredient not found: {fragment_path}")
|
||||
|
||||
# Validate versioned fragments
|
||||
# Validate versioned ingredients
|
||||
for key, fragment_path in template.get('versioned', {}).items():
|
||||
if '{version}' in fragment_path:
|
||||
# Will be resolved at generation time
|
||||
continue
|
||||
full_path = self.project_root / fragment_path
|
||||
if not full_path.exists():
|
||||
errors.append(f"Versioned fragment not found: {fragment_path}")
|
||||
errors.append(f"Versioned ingredient not found: {fragment_path}")
|
||||
|
||||
# Validate conditional fragments
|
||||
# Validate conditional ingredients
|
||||
conditional = template.get('conditional', {})
|
||||
for modifier, modifier_config in conditional.items():
|
||||
if isinstance(modifier_config, dict):
|
||||
@@ -60,25 +60,25 @@ class TemplateValidator:
|
||||
if fp is not None:
|
||||
full_path = self.project_root / fp
|
||||
if not full_path.exists():
|
||||
errors.append(f"Conditional fragment not found: {fp} (in list for {modifier}={value})")
|
||||
errors.append(f"Conditional ingredient not found: {fp} (in list for {modifier}={value})")
|
||||
else:
|
||||
full_path = self.project_root / fragment_path
|
||||
if not full_path.exists():
|
||||
errors.append(f"Conditional fragment not found: {fragment_path} (for {modifier}={value})")
|
||||
errors.append(f"Conditional ingredient not found: {fragment_path} (for {modifier}={value})")
|
||||
|
||||
# Validate flag fragments
|
||||
# Validate flag ingredients
|
||||
for key, fragment_path in template.get('flags', {}).items():
|
||||
if fragment_path is None:
|
||||
continue
|
||||
full_path = self.project_root / fragment_path
|
||||
if not full_path.exists():
|
||||
errors.append(f"Flag fragment not found: {fragment_path}")
|
||||
errors.append(f"Flag ingredient not found: {fragment_path}")
|
||||
|
||||
return errors
|
||||
|
||||
|
||||
class ContentValidator:
|
||||
"""Validate recipe content for fragment existence and duplicates."""
|
||||
"""Validate recipe content for ingredient existence and duplicates."""
|
||||
|
||||
def __init__(self, project_root: Path):
|
||||
self.project_root = project_root
|
||||
@@ -102,15 +102,15 @@ class ContentValidator:
|
||||
issues.append(f"Duplicate include: {path}")
|
||||
seen.add(path)
|
||||
|
||||
# Check fragment existence
|
||||
# Check ingredient existence
|
||||
for inc in includes:
|
||||
parts = inc.split()
|
||||
if len(parts) < 2:
|
||||
continue
|
||||
path = parts[1]
|
||||
fragment_path = self.project_root / path
|
||||
if not fragment_path.exists():
|
||||
issues.append(f"Missing fragment: {path}")
|
||||
ingredient_path = self.project_root / path
|
||||
if not ingredient_path.exists():
|
||||
issues.append(f"Missing ingredient: {path}")
|
||||
|
||||
return issues
|
||||
|
||||
|
||||
Reference in New Issue
Block a user