88 lines
2.5 KiB
Bash
88 lines
2.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
|
|
REPO_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|||
|
|
RUNTIME_DIR="$SCRIPT_DIR/.runtime"
|
|||
|
|
ENV_FILE="${ELDER_ENV_FILE:-$REPO_DIR/.env}"
|
|||
|
|
|
|||
|
|
if [[ -f "$ENV_FILE" ]]; then
|
|||
|
|
# shellcheck disable=SC1090
|
|||
|
|
set -a; source "$ENV_FILE"; set +a
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
: "${ELDER_DB_HOST:=127.0.0.1}"
|
|||
|
|
: "${ELDER_DB_PORT:=3306}"
|
|||
|
|
: "${ELDER_DB_NAME:=elder_yudao_local}"
|
|||
|
|
: "${ELDER_DB_USER:=root}"
|
|||
|
|
: "${ELDER_DB_PASSWORD:=}"
|
|||
|
|
: "${ELDER_REDIS_HOST:=127.0.0.1}"
|
|||
|
|
: "${ELDER_REDIS_PORT:=6379}"
|
|||
|
|
: "${ELDER_REDIS_DATABASE:=15}"
|
|||
|
|
: "${ELDER_REDIS_PASSWORD:=}"
|
|||
|
|
: "${ELDER_SERVER_PORT:=48080}"
|
|||
|
|
: "${ELDER_UI_PORT:=5173}"
|
|||
|
|
|
|||
|
|
if [[ ! "$ELDER_DB_NAME" =~ ^elder_yudao_[a-z0-9_]+$ ]]; then
|
|||
|
|
echo "ELDER_DB_NAME 必须是 elder_yudao_* 独立数据库。" >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
find_command() {
|
|||
|
|
local configured="$1"; shift
|
|||
|
|
if [[ -n "$configured" && -x "$configured" ]]; then
|
|||
|
|
printf '%s\n' "$configured"
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
local candidate
|
|||
|
|
for candidate in "$@"; do
|
|||
|
|
if command -v "$candidate" >/dev/null 2>&1; then
|
|||
|
|
command -v "$candidate"
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
return 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
resolve_java() {
|
|||
|
|
if [[ -n "${JAVA_BIN:-}" && -x "$JAVA_BIN" ]]; then printf '%s\n' "$JAVA_BIN"; return; fi
|
|||
|
|
find_command '' java || {
|
|||
|
|
echo '未找到 Java。请安装 Java 8/11/17,并设置 JAVA_BIN。' >&2
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
resolve_maven() {
|
|||
|
|
if [[ -n "${MAVEN_BIN:-}" && -x "$MAVEN_BIN" ]]; then printf '%s\n' "$MAVEN_BIN"; return; fi
|
|||
|
|
find_command '' mvn || {
|
|||
|
|
local bundled='/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn'
|
|||
|
|
if [[ -x "$bundled" ]]; then printf '%s\n' "$bundled"; return; fi
|
|||
|
|
echo '未找到 Maven。请安装 Maven,或设置 MAVEN_BIN。' >&2
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
resolve_node() {
|
|||
|
|
if [[ -n "${NODE_BIN:-}" && -x "$NODE_BIN" ]]; then printf '%s\n' "$NODE_BIN"; return; fi
|
|||
|
|
find_command '' node || {
|
|||
|
|
echo '未找到 Node.js 18+。请安装 Node.js,或设置 NODE_BIN。' >&2
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
mysql_query() {
|
|||
|
|
local database="$1"; shift
|
|||
|
|
local mysql_bin
|
|||
|
|
mysql_bin="${MYSQL_BIN:-$(command -v mysql || true)}"
|
|||
|
|
if [[ -z "$mysql_bin" ]]; then
|
|||
|
|
echo '未找到 mysql 客户端。请安装 MySQL 8,并设置 MYSQL_BIN。' >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
MYSQL_PWD="$ELDER_DB_PASSWORD" "$mysql_bin" \
|
|||
|
|
--protocol=TCP --host="$ELDER_DB_HOST" --port="$ELDER_DB_PORT" \
|
|||
|
|
--user="$ELDER_DB_USER" --default-character-set=utf8mb4 \
|
|||
|
|
${database:+--database="$database"} --batch --skip-column-names --execute="$1"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ensure_runtime_dir() { mkdir -p "$RUNTIME_DIR"; }
|