import os
from .log import *

# функции обработки переменных LINUX окружения
def print_env_var(var_name):
    if var_name in os.environ:
        value = os.environ[var_name]
        log.info(f"Переменная {var_name}={value}")
    else:
        log.warning(f"Переменная {var_name} не определена")

def set_env_var(var_name, default_value):
    if var_name not in os.environ or not os.environ[var_name]:
        os.environ[var_name] = default_value

def get_env_var(var_name):
    if var_name in os.environ and os.environ[var_name]:
        return os.environ[var_name]
    else:
        log.critical(f"Переменная {var_name} не определена")

def add_to_env_var(var_name, separator, value):
    if var_name not in os.environ:
        os.environ[var_name] = value
    else:
        current_value = os.environ.get(var_name)
        s = separator
        if s + value + s not in s + current_value + s:
            new_value = f"{current_value}{separator}{value}"
            os.environ[var_name] = new_value

def rm_from_env_var(var_name, separator, value):
    current_value = os.environ.get(var_name)
    if value in current_value.split(separator):
        new_value = separator.join([v for v in current_value.split(separator) if v != value])
        os.environ[var_name] = new_value

def env_var(var_name, value):
    match var_name:
        case "WINEDLLOVERRIDES":
            add_to_env_var("WINEDLLOVERRIDES", ";", value)
        case "VKD3D_CONFIG":
            add_to_env_var("VKD3D_CONFIG", ";", value)
        case "RADV_PERFTEST":
            add_to_env_var("RADV_PERFTEST", ";", value)
        case "PW_VK_INSTANCE_LAYERS":
            add_to_env_var("PW_VK_INSTANCE_LAYERS", ":", value)
        case "LD_LIBRARY_PATH":
            add_to_env_var("LD_LIBRARY_PATH", ":", value)