Files
dsh_shenxian/config/load.sh
T
admin 5ec99ce227
build / build-and-scan (push) Canceled after 0s
chore: 文档库全量重新入库(2026-10-20)
2026-10-20 15:05:55 +08:00

80 lines
3.5 KiB
Bash
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
# ============================================================================
# DSH 平台 — 配置加载器(供 scripts/ 下的 shell 脚本 source)
# ----------------------------------------------------------------------------
# 用法(脚本开头):
# . "$(cd "$(dirname "$0")/.." && pwd)/config/load.sh"
#
# 加载后可用(全部已 export):
# DSHS_DATA_ROOT 数据根
# DSH_PLATFORM_DIR 平台私有目录父目录
# DSH_INSTALL_DIR 代码安装根
# DSH_STATE_DIR = $DSH_PLATFORM_DIR/state (派生)
# DSH_BACKUP_DIR = $DSH_PLATFORM_DIR/backups (派生)
# DSH_ARTIFACT_DIR = $DSH_PLATFORM_DIR/artifacts (派生)
#
# 优先级:系统环境变量 > config/platform.env > 这里的**中性默认值**
# ⛔ 中性默认值不含任何真实部署路径;配置文件缺失时**发告警**而不是静默用错路径。
# ============================================================================
_dsh_load_platform_env() {
local f="${DSH_CONFIG_FILE:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/platform.env}"
if [ ! -f "$f" ]; then
echo "[config] 警告:未找到 $f —— 将只用系统环境变量与中性默认值" >&2
return 0
fi
local line key val
while IFS= read -r line || [ -n "$line" ]; do
case "$line" in
''|'#'*) continue ;;
*=*) ;;
*) continue ;;
esac
key="${line%%=*}"
val="${line#*=}"
key="$(printf '%s' "$key" | tr -d '[:space:]')"
[ -n "$key" ] || continue
case "$val" in
\"*\"|\'*\') val="${val%?}"; val="${val#?}" ;;
*) val="$(printf '%s' "$val" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')" ;;
esac
# 系统 env 已有该键 ⇒ 不覆盖(系统 env 优先级更高)
if [ -n "$(printenv "$key" 2>/dev/null)" ]; then
continue
fi
export "$key=$val"
done < "$f"
}
_dsh_load_platform_env
unset -f _dsh_load_platform_env 2>/dev/null || true
# --- 中性默认值(仅当仍未设置时才填)--------------------------------------
export DSHS_DATA_ROOT="${DSHS_DATA_ROOT:-$HOME/.dshs}"
export DSH_PLATFORM_DIR="${DSH_PLATFORM_DIR:-$DSHS_DATA_ROOT/platform}"
export DSH_INSTALL_DIR="${DSH_INSTALL_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
# --- 派生目录(统一在这里算,⛔ 别在脚本里各写一套)------------------------
export DSH_STATE_DIR="${DSH_PLATFORM_STATE_DIR:-$DSH_PLATFORM_DIR/state}"
export DSH_BACKUP_DIR="${DSH_PLATFORM_BACKUP_DIR:-$DSH_PLATFORM_DIR/backups}"
export DSH_ARTIFACT_DIR="${DSH_PLATFORM_ARTIFACT_DIR:-$DSH_PLATFORM_DIR/artifacts}"
# --- 常用组合 -------------------------------------------------------------
export DSH_DB_FILE="${DSHS_DB_FILE:-$DSHS_DATA_ROOT/dshs.db}"
export DSH_USERS_DIR="${DSHS_USERS_DIR:-$DSHS_DATA_ROOT/users}"
# --- 本机 / 对端地址(出网护栏、双机脚本用;留空 = 不填该项)---------------
export DSH_HOST_PUBLIC_IP="${DSH_HOST_PUBLIC_IP:-}"
export DSH_HOST_LAN_IP="${DSH_HOST_LAN_IP:-}"
export DSH_PEER_HOST_ID="${DSH_PEER_HOST_ID:-}"
export DSH_PEER_PUBLIC_IP="${DSH_PEER_PUBLIC_IP:-}"
export DSH_PEER_AGENT_TOKEN="${DSH_PEER_AGENT_TOKEN:-}"
# --- 控制面 PG ------------------------------------------------------------
export DSHS_PG_HOST="${DSHS_PG_HOST:-127.0.0.1}"
export DSHS_PG_PORT="${DSHS_PG_PORT:-5432}"
export DSHS_PG_USER="${DSHS_PG_USER:-dshs}"
export DSHS_PG_DB="${DSHS_PG_DB:-dshs}"
export DSHS_PG_PASSWORD="${DSHS_PG_PASSWORD:-}"
export DSH_PG_DATA_DIR="${DSH_PG_DATA_DIR:-$DSHS_DATA_ROOT-pg}"