# scripts/lib/load-env-keys.sh
# task-2962: 공용 .env.keys source 래퍼 (source 전용, 직접 실행 금지)
#
# 문제: /home/jay/workspace/.env.keys 는 143줄 중 58줄이 'export VAR=value' 형식이라
#       systemd EnvironmentFile= 이 전부 'Ignoring invalid environment assignment' 로 무시한다.
#       그 결과 watcher 데몬들이 필수 토큰/chat_id 를 못 받아 크래시하거나(activity-watcher),
#       'set -u' 하에서 unbound variable 로 죽는다(done-watcher.sh COKACDIR_CHAT_ID).
#
# 해결: 이 파일을 `source` 하면
#   (a) WORKSPACE_ROOT 기본값 지정
#   (b) `set -a; . .env.keys; set +a` 로 export 접두를 그대로 받아들여 안전하게 로드(파일 없으면 스킵)
#   (c) COKACDIR_CHAT_ID 가 비어 있으면 config/constants.json 의 chat_id 로 채움 (하드코딩 금지)
#   (d) CLAUDECODE / CLAUDE_CODE_ENTRYPOINT 를 unset 하여 세션 오염 방지
#   (e) set -u 환경에서 source 되어도 안전하도록 모든 참조에 ${VAR:-} 사용
#
# 사용법: source /home/jay/workspace/scripts/lib/load-env-keys.sh

WORKSPACE_ROOT="${WORKSPACE_ROOT:-/home/jay/workspace}"

# (b) export 접두 라인도 안전하게 흡수하는 source 방식
if [ -f "$WORKSPACE_ROOT/.env.keys" ]; then
    set -a
    # shellcheck disable=SC1090,SC1091
    . "$WORKSPACE_ROOT/.env.keys"
    set +a
fi

# (c) COKACDIR_CHAT_ID 미설정 시 config/constants.json 의 chat_id 로 폴백 (하드코딩 금지)
if [ -z "${COKACDIR_CHAT_ID:-}" ]; then
    _load_env_keys_chat_id="$(python3 -c "
import json
try:
    with open('$WORKSPACE_ROOT/config/constants.json') as f:
        d = json.load(f)
    print(d.get('chat_id', ''))
except Exception:
    print('')
" 2>/dev/null)"
    if [ -n "${_load_env_keys_chat_id:-}" ]; then
        export COKACDIR_CHAT_ID="$_load_env_keys_chat_id"
    fi
    unset _load_env_keys_chat_id
fi

# (d) Claude Code 세션 오염 방지
unset CLAUDECODE 2>/dev/null || true
unset CLAUDE_CODE_ENTRYPOINT 2>/dev/null || true
