#!/bin/bash
# 应用设置里改端口后：写入配置并重启
set -u

ETC="${TRIM_PKGETC:-}"
ENV_FILE="${ETC}/app.env"
CMD_DIR="$(cd "$(dirname "$0")" && pwd)"

upsert_kv() {
  local file="$1" key="$2" value="$3"
  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
}

PORT_VAL="${wizard_port:-3001}"
case "$PORT_VAL" in
  ''|*[!0-9]*) PORT_VAL=3001 ;;
esac
if [ "$PORT_VAL" -lt 1 ] || [ "$PORT_VAL" -gt 65535 ]; then
  if [ -n "${TRIM_TEMP_LOGFILE:-}" ]; then
    echo "无效端口: ${wizard_port:-}" >"$TRIM_TEMP_LOGFILE"
  fi
  exit 1
fi

mkdir -p "$ETC"
upsert_kv "$ENV_FILE" PORT "$PORT_VAL"
{
  echo "wizard_port=${PORT_VAL}"
  echo "PORT=${PORT_VAL}"
} >"$ETC/settings.conf"

# Restart so the new port takes effect
bash "$CMD_DIR/main" stop >/dev/null 2>&1 || true
sleep 1
bash "$CMD_DIR/main" start
exit $?
