elder-yudao-pro/deploy/local/common.sh

88 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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"; }