import os
from enum import Enum
from typing import Tuple

import yaml


class ConfigFiles(Enum):
    """
    Enum for config file names
    """

    STATION_CONFIG = "station_config.yml"
    STATION_CONFIG_SHORT = "config.yml"
    STATION = "station.yml"


def load_config(file_name) -> dict:
    """
    Loads a config file and returns a dict with the content
    """
    with open(file_name, "r") as stream:
        try:
            return yaml.safe_load(stream)
        except yaml.YAMLError as exc:
            print(exc)

        except FileNotFoundError:
            FileNotFoundError(f"Config file {file_name} not found")


def find_config(directory) -> Tuple[dict, str]:
    """
    Finds a config file in a directory and returns a dict with the content
    """
    for file_name in ConfigFiles:
        try:
            return (
                load_config(os.path.join(directory, file_name.value)),
                file_name.value,
            )
        except FileNotFoundError:
            pass
    raise FileNotFoundError(f"No config file found in {directory}")
