#!/usr/bin/env python3
"""
.env.keys 파일 자동 로더
Usage: from utils.env_loader import load_env_keys
       count = load_env_keys()
"""

import os

from utils.logger import get_logger

logger = get_logger(__name__)


def load_env_keys(path: str = "/home/jay/workspace/.env.keys") -> int:
    """
    .env.keys 파일을 읽어 환경변수로 설정한다.

    - `export KEY=VALUE` 형식 파싱
    - os.environ.setdefault 사용으로 기존 환경변수 보존 (덮어쓰지 않음)
    - 주석(#으로 시작), 빈 줄 무시
    - VALUE를 감싸는 따옴표(" 또는 ') 제거
    - 파일 미존재 시 경고 로그만 출력하고 0 반환

    Args:
        path: .env.keys 파일 경로 (기본값: /home/jay/workspace/.env.keys)

    Returns:
        int: 로드한 환경변수 개수
    """
    if not os.path.exists(path):
        logger.warning(f".env.keys 파일이 없습니다: {path}")
        return 0

    count = 0
    try:
        with open(path, "r", encoding="utf-8") as f:
            for line in f:
                line = line.strip()
                # 빈 줄 또는 주석 무시
                if not line or line.startswith("#"):
                    continue
                # export 접두어 제거
                if line.startswith("export "):
                    line = line[len("export ") :]
                # = 기준 분리
                if "=" not in line:
                    continue
                key, value = line.split("=", 1)
                key = key.strip()
                value = value.strip()
                if not key:
                    continue
                # 따옴표 제거 (앞뒤가 동일한 따옴표로 감싸진 경우)
                if len(value) >= 2 and value[0] in ('"', "'") and value[0] == value[-1]:
                    value = value[1:-1]
                # setdefault로 기존 환경변수 보존
                os.environ.setdefault(key, value)
                count += 1
    except OSError as e:
        logger.warning(f".env.keys 읽기 실패: {e}")
        return 0

    logger.debug(f".env.keys 로드 완료: {count}개 변수 설정 ({path})")
    return count
