Files
2026-07-18 16:13:52 +08:00

47 lines
1.6 KiB
Bash

# =============================================
# 被其他脚本 source,从 system.yaml 导出环境变量
# =============================================
# 用法:source scripts/_load_config.sh
# =============================================
_load_yaml_value() {
# 从 system.yaml 读取一个值
# 用法: _load_yaml_value "servers.overseas_host"
local key_path="$1"
local default="${2:-}"
if command -v python3 &>/dev/null; then
local value
value=$(python3 -c "
import yaml, sys
try:
with open('configs/system.yaml') as f:
cfg = yaml.safe_load(f)
parts = '${key_path}'.split('.')
val = cfg
for p in parts:
val = val[p]
print(val)
except Exception:
sys.exit(1)
" 2>/dev/null) && echo "$value" && return
fi
echo "$default"
}
# ── 导出脚本需要的变量 ──────────────────────────
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONFIG_DIR="$SCRIPT_DIR/../configs"
if [ -f "$CONFIG_DIR/system.yaml" ]; then
export CRAWL_PROJECT_DIR="$(_load_yaml_value "servers.overseas_path" "/opt/intlgrab")"
export LOCAL_PROJECT_DIR="$(_load_yaml_value "servers.domestic_path" "/home/pi/intlnews")"
export OVERSEAS_HOST="$(_load_yaml_value "servers.overseas_host" "")"
export SYNC_SENTINEL="$(_load_yaml_value "sync.sentinel" "/tmp/en_news_sync_done")"
export SYNC_PACK_DIR="$(_load_yaml_value "sync.pack_dir" "/tmp")"
else
echo "WARNING: configs/system.yaml not found, using defaults"
export CRAWL_PROJECT_DIR="/opt/intlgrab"
export LOCAL_PROJECT_DIR="/home/pi/intlnews"
fi