import sys
import subprocess
import argparse
from pathlib import Path

class Builder:
    def __init__(self):
        self._parse_args()

    def _parse_args(self):
        parser = argparse.ArgumentParser(description="affinity-sched 构建工具")
        parser.add_argument("--version", "-v", required=True, help="版本号(必填)")
        parser.add_argument("--output", "-o", help="统一输出目录(默认:./dist)")
        self.args = parser.parse_args()

    def build(self):
        # ==================== 路径定义 ====================
        PROJECT_ROOT = Path(__file__).parent.absolute()
        SCRIPTS_DIR = PROJECT_ROOT / "scripts"
        BUILD_WHL = SCRIPTS_DIR / "build_whl.py"

        # 检查脚本是否存在
        for script in [BUILD_WHL]:
            if not BUILD_WHL.exists():
                print(f"找不到脚本:{script}")
                sys.exit(1)

        # 输出目录
        output_args = ["--output", self.args.output] if self.args.output else []

        print("\n========================================")
        print("      开始构建 affinity-sched whl 包"     )
        print("========================================")

        subprocess.run(
            [sys.executable, str(BUILD_WHL),
            "--version", self.args.version] + output_args,
            cwd=PROJECT_ROOT,
            check=True
        )

        print("\n全部构建完成!")


if __name__ == "__main__":
    try:
        Builder().build()
    except Exception as e:
        print(f"Build affinity-sched fail, {str(e)}")