#!/usr/bin/env bash
set -euo pipefail

# Resolve INFINITO_INVENTORY_DIR based on Makefile-provided environment.
#
# Required env (must be set by Makefile):
#   INFINITO_RUNNING_ON_ACT     : true|false
#   INFINITO_RUNNING_ON_GITHUB  : true|false
#
# Uses:
#   HOME
#
# Output:
#   Prints resolved INFINITO_INVENTORY_DIR to stdout (single line)
#   (no mkdir, no side-effects)

require_env() {
	local name="$1"
	if [[ -z "${!name:-}" ]]; then
		echo "[FATAL] ${name} must be set by Makefile" >&2
		exit 2
	fi
}

normalize_bool() {
	local v="${1:-}"
	case "${v}" in
	true | false) printf '%s' "${v}" ;;
	*)
		echo "[FATAL] invalid boolean value: '${v}' (expected true|false)" >&2
		exit 2
		;;
	esac
}

require_env "INFINITO_RUNNING_ON_ACT"
require_env "INFINITO_RUNNING_ON_GITHUB"
: "${HOME:?HOME must be set}"

INFINITO_RUNNING_ON_ACT="$(normalize_bool "${INFINITO_RUNNING_ON_ACT}")"
INFINITO_RUNNING_ON_GITHUB="$(normalize_bool "${INFINITO_RUNNING_ON_GITHUB}")"

if [[ "${INFINITO_RUNNING_ON_ACT}" == "true" ]]; then
	INFINITO_INVENTORY_DIR="${HOME}/inventories/act"
elif [[ "${INFINITO_RUNNING_ON_GITHUB}" == "true" ]]; then
	INFINITO_INVENTORY_DIR="${HOME}/inventories/github"
else
	INFINITO_INVENTORY_DIR="${HOME}/inventories/localhost"
fi

printf '%s\n' "${INFINITO_INVENTORY_DIR}"
