#!/usr/bin/env bash

load-dotenv() {
    if [[ -z "$1" ]]; then
        echo "\$1/env is empty."
        return 1
    fi
    TASK_DOTENV_DIR=${TASK_DOTENV_DIR:="$HOME/.config/taskfile.build"}

    local env_name="$1"
    local env_filename="${env_name}.env"
    local env_filepath=""

    if [[ -f "$PWD/$env_filename" ]]; then
        env_filepath="$PWD/$env_filename"
    elif [[ -f "$TASK_DOTENV_DIR/$env_filename" ]]; then
        env_filepath="$TASK_DOTENV_DIR/$env_filename"
    elif [[ -f "$TASK_DOTENV_DIR/.env.$env_name" ]]; then
        env_filepath="$TASK_DOTENV_DIR/.env.$env_name"
    fi

    if [[ -z "$env_filepath" ]]; then
        echo "Environment '$env_name' not found."
        return 1
    fi

    echo "Source env file $env_filepath"
    set -a
    if [[ "$env_filepath" == *secrets.env ]]; then
        # shellcheck disable=SC1090
        source <(sops --decrypt "$env_filepath")
    else
        # shellcheck disable=SC1090
        source "$env_filepath"
    fi
    set +a
}
lod() {
    load-dotenv "$@"
}
