#!/usr/bin/with-contenv bashio
set -euo pipefail

normalize_token() {
  local value="${1:-}"
  value="${value#"${value%%[![:space:]]*}"}"
  value="${value%"${value##*[![:space:]]}"}"
  if [[ -z "$value" || "$value" == "null" ]]; then
    printf ''
    return
  fi

  printf '%s' "$value"
}

export APP_OPTIONS_PATH="/data/options.json"
if [[ -z "${HA_URL:-}" ]]; then
  export HA_URL="http://homeassistant:8123"
fi
export RELAY_VERSION="$(bashio::addon.version 2>/dev/null || echo "dev-local")"

if [[ -z "${RELAY_AUTH_TOKEN:-}" ]]; then
  export RELAY_AUTH_TOKEN="$(bashio::config 'relay_auth_token' 2>/dev/null || echo "")"
fi
export RELAY_AUTH_TOKEN="$(normalize_token "${RELAY_AUTH_TOKEN:-}")"
if [[ -z "${RELAY_AUTH_TOKEN:-}" ]]; then
  echo "[ha-nova] RELAY_AUTH_TOKEN is required. Configure app option 'relay_auth_token' before start." >&2
  exit 1
fi

if [[ -z "${HA_LLAT:-}" ]]; then
  export HA_LLAT="$(bashio::config 'ha_llat' 2>/dev/null || echo "")"
fi
export HA_LLAT="$(normalize_token "${HA_LLAT:-}")"
if [[ -z "${HA_LLAT:-}" ]]; then
  echo "[ha-nova] HA_LLAT is required. Configure app option 'ha_llat' before start." >&2
  exit 1
fi

if [[ -z "${FILE_ACCESS:-}" ]]; then
  export FILE_ACCESS="$(bashio::config 'file_access' 2>/dev/null || echo "off")"
fi
export FILE_ACCESS="$(normalize_token "${FILE_ACCESS:-}")"
if [[ -z "${FILE_ACCESS:-}" ]]; then
  export FILE_ACCESS="off"
fi

exec node /app/dist/src/runtime/main.js
