#!/bin/bash
# 升级：补齐 HOST / 免启动代码，并同步向导端口
ETC="${TRIM_PKGETC:-}"
ENV_FILE="${ETC}/app.env"
VAR="${TRIM_PKGVAR:-}"

upsert_kv() {
  local file="$1" key="$2" value="$3"
  [ -n "$file" ] || return 0
  mkdir -p "$(dirname "$file")"
  if [ -f "$file" ] && grep -q "^${key}=" "$file" 2>/dev/null; then
    if sed --version >/dev/null 2>&1; then
      sed -i "s|^${key}=.*|${key}=${value}|" "$file"
    else
      sed -i '' "s|^${key}=.*|${key}=${value}|" "$file"
    fi
  else
    echo "${key}=${value}" >>"$file"
  fi
}

if [ -n "$ETC" ] && [ -f "$ENV_FILE" ]; then
  if ! grep -q '^HOST=' "$ENV_FILE"; then
    echo 'HOST=0.0.0.0' >>"$ENV_FILE"
  fi
  if ! grep -q '^HOST_BIND=' "$ENV_FILE"; then
    echo 'HOST_BIND=0.0.0.0' >>"$ENV_FILE"
  fi
  if ! grep -q '^FREEAPI_OPEN_FIRST_SETUP=' "$ENV_FILE"; then
    echo 'FREEAPI_OPEN_FIRST_SETUP=1' >>"$ENV_FILE"
  fi
fi

PORT_VAL="${wizard_port:-}"
if [ -z "$PORT_VAL" ] && [ -f "${ETC}/settings.conf" ]; then
  PORT_VAL="$(grep -E '^wizard_port=' "${ETC}/settings.conf" 2>/dev/null | tail -1 | cut -d= -f2- | tr -d '[:space:]')"
fi
if [ -z "$PORT_VAL" ] && [ -f "$ENV_FILE" ]; then
  PORT_VAL="$(grep -E '^PORT=' "$ENV_FILE" 2>/dev/null | tail -1 | cut -d= -f2- | tr -d '[:space:]')"
fi
PORT_VAL="${PORT_VAL:-3001}"
case "$PORT_VAL" in
  ''|*[!0-9]*) PORT_VAL=3001 ;;
esac

if [ -n "$ETC" ]; then
  upsert_kv "$ENV_FILE" PORT "$PORT_VAL"
  {
    echo "wizard_port=${PORT_VAL}"
    echo "PORT=${PORT_VAL}"
  } >"$ETC/settings.conf"
fi

exit 0
