michael.hudson@canonical.com edc2fa0fc5
Use match statement with local imports in boot configurator factory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:47:15 +13:00

49 lines
1.5 KiB
Python

"""Boot configuration package for ISO builder.
This package contains architecture-specific boot configurators for building
bootable ISOs for different architectures.
"""
import pathlib
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ..apt_state import AptStateManager
from ..builder import Logger
from .base import BaseBootConfigurator
def make_boot_configurator_for_arch(
arch: str,
logger: "Logger",
apt_state: "AptStateManager",
iso_root: pathlib.Path,
) -> "BaseBootConfigurator":
"""Factory function to create boot configurator for a specific architecture."""
match arch:
case "amd64":
from .amd64 import AMD64BootConfigurator
return AMD64BootConfigurator(logger, apt_state, iso_root)
case "arm64":
from .arm64 import ARM64BootConfigurator
return ARM64BootConfigurator(logger, apt_state, iso_root)
case "ppc64el":
from .ppc64el import PPC64ELBootConfigurator
return PPC64ELBootConfigurator(logger, apt_state, iso_root)
case "riscv64":
from .riscv64 import RISCV64BootConfigurator
return RISCV64BootConfigurator(logger, apt_state, iso_root)
case "s390x":
from .s390x import S390XBootConfigurator
return S390XBootConfigurator(logger, apt_state, iso_root)
case _:
raise ValueError(f"Unsupported architecture: {arch}")
__all__ = ["make_boot_configurator_for_arch"]