#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
无交互批处理入口 - 供服务端(XIOS)调用

环境变量:
  OC_BATCH_MODE=1          (必须) 启用批处理模式
  OC_PROJECT_PATH=<path>   (必须) XXGPlayKit 源码路径
  OC_SDK_REGION=1|2        (可选) 1=国内 2=海外，默认2
  OC_SDK_OPTIONS=<csv>     (可选) SDK名称逗号分隔，如 "AppsFlyer,Facebook,Firebase"
  OC_STARTID=<32位id>      (可选) 初始化id
  OC_NEW_PROJECT_NAME=<n>  (可选) 指定新工程名，留空自动生成
  OC_SKIP_BUILD=1          (可选) 跳过 build.sh 编译（服务端混淆后交给 GitHub Actions 编译时使用）

用法:
  OC_BATCH_MODE=1 OC_PROJECT_PATH=/path/to/XXGPlayKit OC_SDK_REGION=2 python3 oc_batch.py

退出码:
  0 = 成功
  1 = 失败
"""

import os
import sys
import json

# 确保批处理模式
os.environ['OC_BATCH_MODE'] = '1'

# 设置项目根目录
project_root = os.path.dirname(os.path.abspath(__file__))
if project_root not in sys.path:
    sys.path.insert(0, project_root)


def main():
    # 验证必要参数
    project_path = os.environ.get('OC_PROJECT_PATH', '')
    if not project_path or not os.path.isdir(project_path):
        print(f'❌ OC_PROJECT_PATH 无效: {project_path}')
        sys.exit(1)

    print('=' * 60)
    print('🤖 批处理模式启动')
    print(f'  工程路径: {project_path}')
    print(f'  区域: {"国内" if os.environ.get("OC_SDK_REGION") == "1" else "海外"}')
    print(f'  SDK: {os.environ.get("OC_SDK_OPTIONS", "(默认)")}')
    print(f'  StartID: {os.environ.get("OC_STARTID", "(空)")}')
    print(f'  新工程名: {os.environ.get("OC_NEW_PROJECT_NAME", "(自动生成)")}')
    print(f'  跳过编译: {os.environ.get("OC_SKIP_BUILD", "0") == "1"}')
    print('=' * 60)

    from ObjectiveC import oc_start, oc_util

    # 如果需要跳过编译，临时替换 run_build_script
    if os.environ.get('OC_SKIP_BUILD') == '1':
        oc_start.run_build_script = lambda: print('⏭️ 跳过 build.sh（OC_SKIP_BUILD=1）')

    try:
        oc_start.init()
    except Exception as e:
        print(f'❌ 混淆失败: {e}')
        import traceback
        traceback.print_exc()
        sys.exit(1)

    # 输出结果信息（JSON 格式，供服务端解析）
    result = {
        'success': True,
        'mix_path': oc_util.path_mix,
        'project_path': oc_util.path_mix_project,
        'project_name': oc_util.name_current_project,
    }
    print('\n' + '=' * 60)
    print('OC_BATCH_RESULT_JSON:' + json.dumps(result, ensure_ascii=False))
    print('=' * 60)


if __name__ == '__main__':
    main()
