#!/bin/bash
# 安装：写配置 + 强制离线重装依赖（含 httpx）

set +e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# shellcheck disable=SC1091
. "${SCRIPT_DIR}/common.sh"

mkdir -p "${TRIM_PKGVAR}" "${TRIM_PKGETC}" 2>/dev/null || true
LOG="${TRIM_PKGVAR}/info.log"
echo "$(date '+%Y-%m-%d %H:%M:%S') install_callback begin" >> "${LOG}"

PORT="${wizard_port:-8787}"
# 校验端口
case "${PORT}" in
  ''|*[!0-9]*) PORT=8787 ;;
esac
if [ "${PORT}" -lt 1 ] || [ "${PORT}" -gt 65535 ]; then
  PORT=8787
fi

# 默认用共享目录；自定义路径若 mkdir 失败则回退共享（避免 /vol3/1000 未授权）
RECORD_DIR="${wizard_record_dir:-}"
SHARE_DIR=""
if [ -n "${TRIM_DATA_SHARE_PATHS:-}" ]; then
  SHARE_DIR="${TRIM_DATA_SHARE_PATHS%%:*}"
fi
if [ -z "${SHARE_DIR}" ]; then
  SHARE_DIR="${TRIM_PKGVAR}/recordings"
fi
if [ -z "${RECORD_DIR}" ]; then
  RECORD_DIR="${SHARE_DIR}"
fi
if ! mkdir -p "${RECORD_DIR}" 2>/dev/null; then
  echo "record_dir ${RECORD_DIR} mkdir failed, fallback ${SHARE_DIR}" >> "${LOG}"
  RECORD_DIR="${SHARE_DIR}"
  mkdir -p "${RECORD_DIR}" 2>/dev/null || true
elif ! touch "${RECORD_DIR}/.ydkj_w" 2>/dev/null; then
  echo "record_dir ${RECORD_DIR} not writable, fallback ${SHARE_DIR}" >> "${LOG}"
  RECORD_DIR="${SHARE_DIR}"
  mkdir -p "${RECORD_DIR}" 2>/dev/null || true
else
  rm -f "${RECORD_DIR}/.ydkj_w" 2>/dev/null || true
fi

cat > "${TRIM_PKGETC}/ydkj.env" <<EOF
YDKJ_PORT=${PORT}
YDKJ_RECORD_DIR=${RECORD_DIR}
EOF
echo "port=${PORT} record_dir=${RECORD_DIR}" >> "${LOG}"

# 强制重装，避免旧 pysite 缺 httpx 被跳过
ydkj_install_deps "${TRIM_APPDEST}" 1 >> "${LOG}" 2>&1
echo "$(date '+%Y-%m-%d %H:%M:%S') install_callback end rc=$?" >> "${LOG}"
exit 0
