"""Temporary case aliases for original Hwanse resource archive names."""
from __future__ import annotations

from pathlib import Path
from typing import Any


CASE_ALIAS_FILES = [
    ("GENSE.FLD", "Gense.fld"),
    ("MIDDATA.MLK", "middata.mlk"),
    ("PCMDATA.WLK", "pcmdata.wlk"),
]


def prepare_case_aliases(root: Path, enabled: bool) -> dict[str, Any]:
    if not enabled:
        return {"enabled": False, "aliases": []}
    aliases = []
    for source_name, alias_name in CASE_ALIAS_FILES:
        source = root / source_name
        alias = root / alias_name
        row: dict[str, Any] = {
            "source": source_name,
            "alias": alias_name,
            "sourceExists": source.exists(),
            "aliasExisted": alias.exists() or alias.is_symlink(),
            "created": False,
        }
        if not source.exists():
            row["error"] = "source missing"
        elif alias.exists() or alias.is_symlink():
            row["error"] = "alias already exists"
        else:
            alias.symlink_to(source.name)
            row["created"] = True
        aliases.append(row)
    return {"enabled": True, "aliases": aliases}


def cleanup_case_aliases(root: Path, case_aliases: dict[str, Any]) -> dict[str, Any]:
    removed = []
    for row in case_aliases.get("aliases") or []:
        if not row.get("created"):
            continue
        alias = root / row.get("alias", "")
        if alias.is_symlink():
            alias.unlink()
            removed.append(row.get("alias"))
    return {"removedAliases": removed}
