#!/bin/bash

# Extract values from pyproject.toml
PYPROJECT_FILE="$(dirname "$0")/../pyproject.toml"

VERSION=$(grep -Po '(?<=version = ")[^"]*' "$PYPROJECT_FILE")
NAME=$(grep -Po '(?<=name = ")[^"]*' "$PYPROJECT_FILE")

if [[ -z "$VERSION" || -z "$NAME" ]]; then
    echo "Error: Could not determine version or name from pyproject.toml"
    exit 1
fi

echo "Using project name: $NAME"
echo "Using version: $VERSION"

# Navigate to project root
cd "$(dirname "$0")/backend" || exit

# Generate OpenAPI JSON file
python3 main.py generate-openapi
if [[ ! -f openapi.json ]]; then
    echo "Error: openapi.json file not generated!"
    exit 1
fi

# Download OpenAPI generator CLI if not present
OPENAPI_VERSION=7.8.0
if [[ ! -f openapi-generator-cli.jar ]]; then
    wget "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/${OPENAPI_VERSION}/openapi-generator-cli-${OPENAPI_VERSION}.jar" -O openapi-generator-cli.jar
fi

# Run OpenAPI generator with synced name and version
java -jar openapi-generator-cli.jar generate \
    -i "$(pwd)/openapi.json" \
    -o python-client/ \
    -g python \
    --additional-properties=packageName="${NAME}client",projectName="${NAME}",packageVersion="${VERSION}"

# Check if the generator succeeded
if [[ ! -d python-client ]]; then
    echo "OpenAPI generator failed. Exiting."
    exit 1
fi

# Build Python package
cd python-client || exit
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip build
python -m build

# Skip uploading the package. This will happen in the release stage.
echo "Python client generated and package built successfully."