"""Static-env passthrough: copy every declared key from default.env
with caller-env-wins (setdefault) semantics. Comments come from
``ctx.static_comments`` (parsed from default.env)."""

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from utils.env.builder import BuildContext, EnvBuilder

STATIC_KEYS = (
    "INFINITO_SRC_DIR",
    "INFINITO_VENV_DIR",
    "INFINITO_ANSIBLE_COLLECTIONS_SOURCE",
    "INFINITO_BIND_IP",
    "INFINITO_BUILD",
    "INFINITO_SUBNET",
    "INFINITO_GATEWAY",
    "INFINITO_DISTRO",
    "INFINITO_DNS_DOMAIN",
    "INFINITO_DNS_HOSTS_FILE",
    "INFINITO_DNS_IP",
    "INFINITO_DOMAIN",
    "INFINITO_TOR_SOCKS_PORT",
    "INFINITO_CONTAINER",
    "INFINITO_CONTAINER_CA_ENABLED",
    "INFINITO_RUNNING_ON_ACT",
    "INFINITO_RUNNING_ON_GITHUB",
    "INFINITO_IS_WSL2",
    "INFINITO_PULL_POLICY",
    "INFINITO_MEM_LIMIT",
    "INFINITO_MEMSWAP_LIMIT",
    "INFINITO_CPUS",
    "INFINITO_WAIT_HEALTH_TIMEOUT_S",
    "INFINITO_DOCKER_VOLUME",
    "INFINITO_DOCKER_MOUNT",
    "INFINITO_IP4",
    "INFINITO_IP6",
    "INFINITO_IP_RANGE",
    "INFINITO_PARENT_IMAGE_OWNER",
    "INFINITO_PARENT_IMAGE_TAG",
    "INFINITO_PARENT_IMAGE_VARIANT",
    "INFINITO_KEEP_SWARM_NODES",
    "INFINITO_SWARM_TEST_LABEL",
    "INFINITO_SWARM_MESHES",
    "INFINITO_SWARM_VPN",
    "INFINITO_VPN",
    "INFINITO_SWARM_MGR_NAME",
    "INFINITO_SWARM_STEP_TIMEOUT_MINUTES",
    "INFINITO_SWARM_TEARDOWN_RESERVE_SECONDS",
    "INFINITO_SWARM_WRK1_NAME",
    "INFINITO_SWARM_WRK2_NAME",
    "INFINITO_SWARM_NFS_NAME",
    "INFINITO_SWARM_NODE_PIDS_LIMIT",
    "INFINITO_SWARM_BACKUP_NAME",
    "INFINITO_SWARM_BACKUP_KEY",
    "INFINITO_SWARM_BACKUP_IP",
    "INFINITO_SWARM_LAB_NET_NAME",
    "INFINITO_SWARM_LAB_SUBNET",
    "INFINITO_SWARM_MGR_IP",
    "INFINITO_SWARM_NFS_IP",
    "INFINITO_SWARM_NFS_MINOR_VERSIONS",
    "INFINITO_SWARM_WRK1_IP",
    "INFINITO_SWARM_WRK2_IP",
    "INFINITO_NODE_SRC_DIR",
    "INFINITO_DOCKER_CLI_INSTALL_SCRIPT",
    "INFINITO_DOCKER_FILESYSTEM",
    "INFINITO_DOCKER_FILESYSTEM_ALLOWED",
    "INFINITO_DOCKER_FILESYSTEM_ENFORCED",
    "INFINITO_DOCKER_FILESYSTEM_PICK",
    "INFINITO_DOCKER_FILESYSTEM_REQUIRED",
    "INFINITO_PACKAGE_INSTALL_SCRIPT",
    "INFINITO_PYTHON_INSTALL_SCRIPT",
    "INFINITO_FILESYSTEM_INSTALL_SCRIPT",
    "INFINITO_INTERPRETERS_INSTALL_SCRIPT",
    "INFINITO_ALIAS_REPOSITORY",
    "INFINITO_APT_UBUNTU_MIRRORS",
    "INFINITO_FORK_REPOSITORY_NAME",
    "INFINITO_API_ANTHROPIC_KEY",
    "INFINITO_API_OPENAI_KEY",
    "INFINITO_API_OPENROUTER_KEY",
    "INFINITO_PLAYWRIGHT_KEEP",
    "INFINITO_INVENTORY_EXTRA_VARS",
    "INFINITO_PUBLISH_PORTS",
    "INFINITO_SKILLS_REPOSITORY",
    "INFINITO_SKIP_COMPILE",
    "INFINITO_MAIL_PRODUCTION_HOST",
    "INFINITO_MAIL_PRODUCTION_RESOLVER",
    "INFINITO_TEST_PATTERN",
    "INFINITO_TEST_RUNNER",
    "INFINITO_WORKSPACE_TRACKS",
    "INFINITO_LINT_RUNNER",
    "INFINITO_APP_DISCOVERY_RUNNER",
    "INFINITO_DEPLOY_MODE",
    "INFINITO_DISCOVERY_SEED",
    "INFINITO_DISCOVERY_SORT",
    "INFINITO_LIFECYCLES",
    "INFINITO_MODES",
    "INFINITO_REQUIRED_STORAGE",
    "INFINITO_BUILDKIT_ENABLED",
    "INFINITO_DEBUG",
    "INFINITO_WHITELIST",
    "INFINITO_BLACKLIST",
    "INFINITO_PRIORITY",
    "INFINITO_CI_CHUNK",
    "INFINITO_CI_CHUNK_SIZE",
    "INFINITO_CI_CONCURRENCY",
    "INFINITO_CI_DISTRO_BUDGET_SECONDS",
    "INFINITO_CI_JOB_LIMIT",
    "INFINITO_CI_MAX_CHUNKS",
    "INFINITO_CI_OFFSET",
    "INFINITO_CI_QUEUE_HOURS",
    "INFINITO_CI_SWEEP",
    "INFINITO_LIMIT_HOST",
    "INFINITO_RUN_FLAGS",
    "INFINITO_WORKER_ENABLED",
    "INFINITO_INVENTORY_VARS_FILE",
    "INFINITO_PRESERVE_DOCKER_CACHE",
    "INFINITO_RECOVER_DRILL",
    "INFINITO_REPO_ROOT",
    "INFINITO_RESCUE_DIAGNOSTICS_BASE",
    "INFINITO_RUNNER_PREFIX",
    "INFINITO_TIMEOUT_MULTIPLIER",
    "INFINITO_TOR",
    "INFINITO_INSTANCE",
    "INFINITO_GIT_COMMON_DIR",
    "INFINITO_CACHE_NETWORK",
    "INFINITO_CACHE_STACK",
    "INFINITO_GHCR_MIRROR",
    "INFINITO_CACHE_REGISTRY_HOST_PATH",
    "INFINITO_CACHE_REGISTRY_CA_HOST_PATH",
    "INFINITO_CACHE_REGISTRY_IP",
    "INFINITO_CACHE_PACKAGE_HOST_PATH",
    "INFINITO_CACHE_PACKAGE_PORT",
    "INFINITO_CACHE_PACKAGE_FRONTEND_CA_DIR",
    "INFINITO_CACHE_PACKAGE_FRONTEND_CA_FILE",
    "INFINITO_CACHE_PACKAGE_FRONTEND_CERTS_DIR",
    "INFINITO_CACHE_PACKAGE_FRONTEND_IP",
    "INFINITO_CACHE_PACKAGE_FRONTEND_INIT_IMAGE",
    "INFINITO_CACHE_PACKAGE_IP",
    "INFINITO_CACHE_PACKAGE_MAX_AGE_MIN",
    "INFINITO_CACHE_PACKAGE_METADATA_MAX_AGE_MIN",
    "INFINITO_CACHE_PACKAGE_NPMRC",
    "INFINITO_CACHE_PACKAGE_PIP_CONF",
    "INFINITO_CACHE_REGISTRY_PROXY_CONF",
    "INFINITO_IMAGE_TAG",
    "INFINITO_VARS_PAYLOAD",
    "INFINITO_APP_VARIANTS",
)


def apply(eb: EnvBuilder, ctx: BuildContext) -> None:
    for key in STATIC_KEYS:
        if key in ctx.static:
            eb.setdefault(
                key, ctx.static[key], comment=ctx.static_comments.get(key, "")
            )
