#!/usr/bin/env python3
import shutil
import subprocess
import sys
import platform
import venv
from pathlib import Path

_DIR = Path(__file__).parent
_PROGRAM_DIR = _DIR.parent
_VENV_DIR = _PROGRAM_DIR / ".venv"
_MODULE = _PROGRAM_DIR.name.replace("-", "_")
_MODULE_DIR = _PROGRAM_DIR / _MODULE
_SRC_LIB_DIR = _PROGRAM_DIR / "lib"
_DEST_LIB_DIR = _MODULE_DIR / "lib"

if _VENV_DIR.exists():
    context = venv.EnvBuilder().ensure_directories(_VENV_DIR)
    python_exe = context.env_exe
else:
    python_exe = "python3"

machine = platform.machine().lower()
is_arm = ("arm" in machine) or ("aarch" in machine)
is_amd64 = machine in ("x86_64", "amd64")
system = sys.platform
platform_name = ""

if system.startswith("linux"):
    if is_arm:
        platform_name = "linux_arm64"

    if is_amd64:
        platform_name = "linux_amd64"

if system == "win32":
    if is_amd64:
        platform_name = "windows_amd64"

if system == "darwin":
    if is_arm:
        platform_name = "darwin_arm64"

if not platform_name:
    raise SystemExit("Unsupported platform")

platform_src_dir = _SRC_LIB_DIR / platform_name
platform_dest_dir = _DEST_LIB_DIR

if _DEST_LIB_DIR.exists():
    shutil.rmtree(_DEST_LIB_DIR)

shutil.copytree(platform_src_dir, platform_dest_dir)

subprocess.check_call([python_exe, "-m", "build", "--wheel", "--sdist"])
