"""Environment-backed configuration for Windows and Linux deployments."""

import os
import platform
from pathlib import Path


def _environment(name: str, default: str) -> str:
    """Return an environment setting, falling back to the local default."""
    return os.getenv(name, default)


PROJECT_DIR = Path(__file__).resolve().parent.parent
STATIC_DIR = Path(_environment("REMOTE_OFFICE_STATIC_DIR", str(PROJECT_DIR / "static")))
TEMPLATES_DIR = Path(
    _environment("REMOTE_OFFICE_TEMPLATES_DIR", str(PROJECT_DIR / "templates"))
)

IS_WINDOWS = platform.system() == "Windows"

# Office desktop network details.
MAC = _environment("REMOTE_OFFICE_MAC", "74:56:3C:BF:58:BC")
DESKTOP_IP = _environment("REMOTE_OFFICE_DESKTOP_IP", "100.122.72.34")

# NAS access details.
NAS_URL = _environment("REMOTE_OFFICE_NAS_URL", "http://192.168.1.9:8080")
NAS_FOLDER = _environment(
    "REMOTE_OFFICE_NAS_FOLDER",
    r"Z:\\" if IS_WINDOWS else "/share",
)

# Commands vary by host platform and can be overridden for a QNAP deployment.
PING_COMMAND = _environment("REMOTE_OFFICE_PING_COMMAND", "ping")
PING_COUNT_ARGUMENT = _environment(
    "REMOTE_OFFICE_PING_COUNT_ARGUMENT",
    "-n" if IS_WINDOWS else "-c",
)
RUSTDESK_EXE = _environment(
    "REMOTE_OFFICE_RUSTDESK_EXE",
    r"C:\Program Files\RustDesk\rustdesk.exe" if IS_WINDOWS else "rustdesk",
)
RUSTDESK_ID = _environment("REMOTE_OFFICE_RUSTDESK_ID", "482302140")
FILE_MANAGER_COMMAND = _environment(
    "REMOTE_OFFICE_FILE_MANAGER_COMMAND",
    "explorer.exe" if IS_WINDOWS else "xdg-open",
)
SYSTEM_DISK_PATH = _environment(
    "REMOTE_OFFICE_SYSTEM_DISK_PATH",
    Path.cwd().anchor or os.path.sep,
)

# Tailscale command and device names expected by the existing status parser.
TAILSCALE_COMMAND = _environment("REMOTE_OFFICE_TAILSCALE_COMMAND", "tailscale")
TAILSCALE_STATUS_ARGUMENT = _environment("REMOTE_OFFICE_TAILSCALE_STATUS_ARGUMENT", "status")
TAILSCALE_DEVICES: dict[str, str] = {
    "desktop": _environment("REMOTE_OFFICE_TAILSCALE_DESKTOP", "desktop-33qjkcg"),
    "phone": _environment("REMOTE_OFFICE_TAILSCALE_PHONE", "foos-s24-ultra"),
    "nas": _environment("REMOTE_OFFICE_TAILSCALE_NAS", "nas620380"),
    "laptop": _environment("REMOTE_OFFICE_TAILSCALE_LAPTOP", "laptop-foo"),
}
