# ============================================= # 被其他脚本 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