47 lines
1.6 KiB
Bash
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
|