from functools import lru_cache
from os import getenv
from pathlib import Path
from version import __version__

from config import config

root = Path(__file__).parent.parent


def _get(prop_name, env_suffix=None, default=""):
    value = getenv(f"TRAINS_SERVER_{env_suffix or prop_name}")
    if value:
        return value

    try:
        return (root / prop_name).read_text().strip()
    except FileNotFoundError:
        return default


@lru_cache()
def get_build_number():
    return _get("BUILD")


@lru_cache()
def get_version():
    return _get("VERSION", default=__version__)


@lru_cache()
def get_commit_number():
    return _get("COMMIT")


@lru_cache()
def get_deployment_type() -> str:
    return _get("DEPLOY", env_suffix="DEPLOYMENT_TYPE", default="manual")


def get_default_company():
    return config.get("apiserver.default_company")