"""Default local paths for rustwx-stormscope products and caches.""" from __future__ import annotations import os from pathlib import Path def env_value(name: str, legacy_name: str | None = None, default: str | Path | None = None) -> str: if name in os.environ: return os.environ[name] if legacy_name and legacy_name in os.environ: return os.environ[legacy_name] if default is None: return "" return str(default) def repo_root() -> Path: return Path(__file__).resolve().parents[1] def wxstore_root() -> Path: return Path( env_value( "RUSTWX_STORMSCOPE_WXSTORE_ROOT", "SSFAST_WXSTORE_ROOT", repo_root() / "volume" / "wxstores" / "stormscope", ) ) def default_outdir() -> Path: return Path(env_value("RUSTWX_STORMSCOPE_OUT", "SSFAST_OUT", wxstore_root() / "out" / "operational")) def default_site_dir() -> Path: return Path(env_value("RUSTWX_STORMSCOPE_SITE", "SSFAST_SITE", wxstore_root() / "site")) def default_exports_dir() -> Path: return Path(env_value("RUSTWX_STORMSCOPE_EXPORTS", "SSFAST_EXPORTS", wxstore_root() / "exports")) def default_spatial_root() -> Path: return Path(env_value("RUSTWX_STORMSCOPE_SPATIAL_ROOT", "SSFAST_SPATIAL_ROOT", wxstore_root() / "spatial")) def default_webmap_dir() -> Path: return Path(env_value("RUSTWX_STORMSCOPE_WEBMAP", "SSFAST_WEBMAP", wxstore_root() / "webmap_preview"))