diff --git a/recipe-generator/cli.py b/recipe-generator/cli.py index a9c4355..e926167 100644 --- a/recipe-generator/cli.py +++ b/recipe-generator/cli.py @@ -233,7 +233,6 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator) sys.exit(1) # Track seen filenames to avoid overwriting duplicates - seen_filenames = set() # Generate all recipes for recipe_config in manifest.get('recipes', []): @@ -271,11 +270,6 @@ def generate_from_manifest(args: argparse.Namespace, generator: RecipeGenerator) output_path = args.output_dir / filename - - if filename in seen_filenames: - continue # Already generated this filename - seen_filenames.add(filename) - if args.dry_run: print(f"Would generate: {output_path}") else: diff --git a/recipe-generator/recipes_manifest.yaml b/recipe-generator/recipes_manifest.yaml index e9b69a5..5117038 100644 --- a/recipe-generator/recipes_manifest.yaml +++ b/recipe-generator/recipes_manifest.yaml @@ -6,6 +6,13 @@ # - Single values: version: "43" # - List values: version: ["43", "rawhide"] (expands to multiple variants) # - List modifiers: hypervisor_type: ["amdcpu", "intelcpu"] (expands to separate variants) +# +# NOTE: List values create a cartesian product. +# Example: version: ["43", "rawhide"] + storage: ["standard", "encrypted"] +# creates 4 variants: (43,standard), (43,encrypted), (rawhide,standard), (rawhide,encrypted) +# +# NOTE: Boolean modifiers (guest-agents, hardware-support) only affect filename when True. +# Multiple variants with False values will produce the same filename (last one wins). recipes: # Install variants - desktop diff --git a/recipes/install_desktop_43.cfg b/recipes/install_desktop_43.cfg index 3897012..1e44812 100644 --- a/recipes/install_desktop_43.cfg +++ b/recipes/install_desktop_43.cfg @@ -8,17 +8,17 @@ # An install recipe for desktop, server, or hypervisor %include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks %include fragments/core/locale.ks %include fragments/core/services.ks %include fragments/core/network.ks %include fragments/packages/core-group.ks %include fragments/packages/fedora-remix.ks %include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks %include fragments/desktop/gnome/config.ks %include fragments/desktop/gnome/packages.ks -%include fragments/desktop/gnome/post-scripts.ks -%include fragments/bootloader/grub.ks -%include fragments/initial-setup/server/config.ks -%include fragments/core/security/enabled.ks -%include fragments/storage/standard.ks -%include fragments/repo/fedora-43-mirrors.ks \ No newline at end of file +%include fragments/desktop/gnome/post-scripts.ks \ No newline at end of file diff --git a/recipes/install_desktop_encrypted_43.cfg b/recipes/install_desktop_encrypted_43.cfg index 71209b9..29f98bf 100644 --- a/recipes/install_desktop_encrypted_43.cfg +++ b/recipes/install_desktop_encrypted_43.cfg @@ -8,17 +8,18 @@ # An install recipe for desktop, server, or hypervisor %include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks %include fragments/core/locale.ks %include fragments/core/services.ks %include fragments/core/network.ks %include fragments/packages/core-group.ks %include fragments/packages/fedora-remix.ks %include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks %include fragments/desktop/gnome/config.ks %include fragments/desktop/gnome/packages.ks %include fragments/desktop/gnome/post-scripts.ks -%include fragments/bootloader/grub.ks -%include fragments/initial-setup/server/config.ks -%include fragments/core/security/enabled.ks -%include fragments/storage/encrypted.ks -%include fragments/repo/fedora-43-mirrors.ks \ No newline at end of file +%include fragments/storage/encrypted.ks \ No newline at end of file diff --git a/recipes/install_desktop_encrypted_rawhide.cfg b/recipes/install_desktop_encrypted_rawhide.cfg index 8de4589..e313823 100644 --- a/recipes/install_desktop_encrypted_rawhide.cfg +++ b/recipes/install_desktop_encrypted_rawhide.cfg @@ -8,17 +8,19 @@ # An install recipe for desktop, server, or hypervisor %include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks %include fragments/core/locale.ks %include fragments/core/services.ks %include fragments/core/network.ks %include fragments/packages/core-group.ks %include fragments/packages/fedora-remix.ks %include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks %include fragments/desktop/gnome/config.ks %include fragments/desktop/gnome/packages.ks %include fragments/desktop/gnome/post-scripts.ks -%include fragments/bootloader/grub.ks -%include fragments/initial-setup/server/config.ks -%include fragments/core/security/enabled.ks %include fragments/storage/encrypted.ks %include fragments/repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/recipes/install_desktop_rawhide.cfg b/recipes/install_desktop_rawhide.cfg index 78a7410..93e95de 100644 --- a/recipes/install_desktop_rawhide.cfg +++ b/recipes/install_desktop_rawhide.cfg @@ -8,17 +8,18 @@ # An install recipe for desktop, server, or hypervisor %include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks %include fragments/core/locale.ks %include fragments/core/services.ks %include fragments/core/network.ks %include fragments/packages/core-group.ks %include fragments/packages/fedora-remix.ks %include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks %include fragments/desktop/gnome/config.ks %include fragments/desktop/gnome/packages.ks %include fragments/desktop/gnome/post-scripts.ks -%include fragments/bootloader/grub.ks -%include fragments/initial-setup/server/config.ks -%include fragments/core/security/enabled.ks -%include fragments/storage/standard.ks %include fragments/repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/recipes/install_hypervisor-desktop_amdcpu_43.cfg b/recipes/install_hypervisor-desktop_amdcpu_43.cfg new file mode 100644 index 0000000..52cbd35 --- /dev/null +++ b/recipes/install_hypervisor-desktop_amdcpu_43.cfg @@ -0,0 +1,27 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# An install recipe for desktop, server, or hypervisor + +%include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/packages/core-group.ks +%include fragments/packages/fedora-remix.ks +%include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks +%include fragments/desktop/gnome/config.ks +%include fragments/desktop/gnome/packages.ks +%include fragments/desktop/gnome/post-scripts.ks +%include fragments/packages/virtual-machine-manager/packages.ks +%include fragments/packages/virtual-machine-manager/post-scripts.ks +%include fragments/hypervisor/amdcpu.ks \ No newline at end of file diff --git a/recipes/install_hypervisor-desktop_intelcpu_43.cfg b/recipes/install_hypervisor-desktop_intelcpu_43.cfg new file mode 100644 index 0000000..8e8d02c --- /dev/null +++ b/recipes/install_hypervisor-desktop_intelcpu_43.cfg @@ -0,0 +1,27 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# An install recipe for desktop, server, or hypervisor + +%include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/packages/core-group.ks +%include fragments/packages/fedora-remix.ks +%include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks +%include fragments/desktop/gnome/config.ks +%include fragments/desktop/gnome/packages.ks +%include fragments/desktop/gnome/post-scripts.ks +%include fragments/packages/virtual-machine-manager/packages.ks +%include fragments/packages/virtual-machine-manager/post-scripts.ks +%include fragments/hypervisor/intelcpu.ks \ No newline at end of file diff --git a/recipes/install_hypervisor_amdcpu_43.cfg b/recipes/install_hypervisor_amdcpu_43.cfg new file mode 100644 index 0000000..3ac55ef --- /dev/null +++ b/recipes/install_hypervisor_amdcpu_43.cfg @@ -0,0 +1,25 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# An install recipe for desktop, server, or hypervisor + +%include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/packages/core-group.ks +%include fragments/packages/fedora-remix.ks +%include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks +%include fragments/hypervisor/base/packages.ks +%include fragments/hypervisor/base/services.ks +%include fragments/hypervisor/base/post-scripts.ks +%include fragments/hypervisor/amdcpu.ks \ No newline at end of file diff --git a/recipes/install_hypervisor_intelcpu_43.cfg b/recipes/install_hypervisor_intelcpu_43.cfg new file mode 100644 index 0000000..ccdcc8f --- /dev/null +++ b/recipes/install_hypervisor_intelcpu_43.cfg @@ -0,0 +1,25 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# An install recipe for desktop, server, or hypervisor + +%include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/packages/core-group.ks +%include fragments/packages/fedora-remix.ks +%include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks +%include fragments/hypervisor/base/packages.ks +%include fragments/hypervisor/base/services.ks +%include fragments/hypervisor/base/post-scripts.ks +%include fragments/hypervisor/intelcpu.ks \ No newline at end of file diff --git a/recipes/install_server_43.cfg b/recipes/install_server_43.cfg new file mode 100644 index 0000000..a07a1ea --- /dev/null +++ b/recipes/install_server_43.cfg @@ -0,0 +1,21 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# An install recipe for desktop, server, or hypervisor + +%include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/packages/core-group.ks +%include fragments/packages/fedora-remix.ks +%include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks \ No newline at end of file diff --git a/recipes/install_server_rawhide.cfg b/recipes/install_server_rawhide.cfg new file mode 100644 index 0000000..af3177c --- /dev/null +++ b/recipes/install_server_rawhide.cfg @@ -0,0 +1,22 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# An install recipe for desktop, server, or hypervisor + +%include fragments/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/storage/standard.ks +%include fragments/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/packages/core-group.ks +%include fragments/packages/fedora-remix.ks +%include fragments/packages/hand-picked.ks +%include fragments/core/security/enabled.ks +%include fragments/initial-setup/server/config.ks +%include fragments/repo/rawhide-mirrors.ks \ No newline at end of file diff --git a/recipes/live_desktop_43.cfg b/recipes/live_desktop_43.cfg new file mode 100644 index 0000000..8996aa4 --- /dev/null +++ b/recipes/live_desktop_43.cfg @@ -0,0 +1,20 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# A live recipe for live-desktop or live-server + +%include fragments/live/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/live/core/storage.ks +%include fragments/live/core/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/live/core/packages.ks +%include fragments/live/post/base.ks +%include fragments/live/post/session.ks +%include fragments/repo/rpmfusion-nonfree.ks \ No newline at end of file diff --git a/recipes/live_server_43.cfg b/recipes/live_server_43.cfg new file mode 100644 index 0000000..8996aa4 --- /dev/null +++ b/recipes/live_server_43.cfg @@ -0,0 +1,20 @@ +# __ ____ ____ _____ +# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/ +# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \ +# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ / +# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/ +# /_/ /____/ + +# A live recipe for live-desktop or live-server + +%include fragments/live/core/base.ks +%include fragments/repo/fedora-43-mirrors.ks +%include fragments/live/core/storage.ks +%include fragments/live/core/bootloader/grub.ks +%include fragments/core/locale.ks +%include fragments/core/services.ks +%include fragments/core/network.ks +%include fragments/live/core/packages.ks +%include fragments/live/post/base.ks +%include fragments/live/post/session.ks +%include fragments/repo/rpmfusion-nonfree.ks \ No newline at end of file diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index bc25f4a..24c2552 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -37,7 +37,7 @@ def test_validate_all_generated_recipes(): """Test validating all generated recipes.""" # Count generated recipes recipe_count = len(list(RECIPE_DIR.glob('*.cfg'))) - assert recipe_count > 0, "No recipes generated" + assert recipe_count > 0, f"Expected recipes, got {recipe_count}" # Validate each recipe for recipe_file in RECIPE_DIR.glob('*.cfg'): diff --git a/tests/test_recipe_generator.py b/tests/test_recipe_generator.py index d4a4de5..2cd87ba 100644 --- a/tests/test_recipe_generator.py +++ b/tests/test_recipe_generator.py @@ -245,3 +245,25 @@ part / --fstype="ext4" --grow content = "" issues = self.generator.validate_recipe_semantic(content, '43') assert issues == [] + + def test_filename_generation_with_guest_agents(self): + """Test filename includes 'virtual' when guest_agents=True.""" + filename = self.generator.generate_filename('install', '43', + variant_type='desktop', + guest_agents=True) + assert filename == 'install_virtual_desktop_43.cfg' + + def test_filename_generation_with_hardware_support(self): + """Test filename includes 'hardware-support' when enabled.""" + filename = self.generator.generate_filename('install', '43', + variant_type='desktop', + hardware_support=True) + assert filename == 'install_desktop_hardware-support_43.cfg' + + def test_filename_generation_with_both_modifiers(self): + """Test filename includes both modifiers when enabled.""" + filename = self.generator.generate_filename('install', '43', + variant_type='desktop', + guest_agents=True, + hardware_support=True) + assert filename == 'install_virtual_desktop_hardware-support_43.cfg'