#!/usr/bin/env bash
set -euo pipefail
trap 'echo "ERROR: build failed in ${BASH_SOURCE[0]} at line ${LINENO}" >&2' ERR

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
export SCRIPT_DIR

PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"

if [[ ! -d "$PROJECT_DIR" ]]; then
  echo "Project directory $PROJECT_DIR does not exist" >&2
  exit 1
fi

if [[ ! -f "$PROJECT_DIR/pyproject.toml" && ! -f "$PROJECT_DIR/setup.py" ]]; then
  echo "Invalid Python project directory, did not find either pyproject.toml or setup.py in $PROJECT_DIR" >&2
  exit 1
fi

echo "Project Directory: $PROJECT_DIR" >&2


if [ ! -f /opt/homebrew/bin/brew ]; then
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    echo >> $HOME/.zprofile
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
fi
brew install wget automake nasm libtool pkgconfig

BASE=$PWD
export MACOSX_DEPLOYMENT_TARGET=15.0
export _PYTHON_HOST_PLATFORM="macosx-15.0-arm64"
export ARCHFLAGS="-arch arm64"

cd "$PROJECT_DIR/scripts/mac/python"
versions=("3.10.11" "3.11.9" "3.12.9" "3.13.2" "3.14.2")
for version in "${versions[@]}"; do
    ./install_python $version
done

cd "$PROJECT_DIR"
venvs=("py310" "py311" "py312" "py313" "py314")
for venv in "${venvs[@]}"; do
    source "$BASE/$venv/bin/activate"
    python --version
    pip install build delocate
    python -m build --sdist --wheel
    wheel="$(ls -1 dist/*${venv:2}*)"
    echo $wheel
    delocate-wheel -w fixed_wheels --require-archs=arm64 -v "$wheel"
    deactivate
done