#!/bin/bash set -e # === PATH SETUP === PARENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" CONFIG_FILE="$PARENT_DIR/config.json" ENV_FILE="$PARENT_DIR/.env" # --- Check .env file --- if [[ ! -f "$ENV_FILE" ]]; then echo "[ERROR] .env file not found. Please copy .env.example to .env and configure it." exit 1 fi # --- Check jq availability --- if ! command -v jq &>/dev/null; then echo "[ERROR] 'jq' is required. Install it with: brew install jq" exit 1 fi # --- Extract values from config.json --- ICON_PATH=$(jq -r '.icon_path' "$CONFIG_FILE") APP_NAME=$(jq -r '.app_name' "$CONFIG_FILE") ARCHITECTURE=$(jq -r '.architecture' "$CONFIG_FILE") # --- Extract PYTHON_PATH from .env --- SYSTEM_PYTHON=$(grep -E "^PYTHON_PATH=" "$ENV_FILE" | cut -d '=' -f2) VENV_PATH="$PARENT_DIR/MACenv_$ARCHITECTURE" EXE_NAME="${APP_NAME}-MacOS-${ARCHITECTURE}" PYTHON_IN_VENV="$VENV_PATH/bin/python" # --- Verify Python existence --- if [[ ! -x "$SYSTEM_PYTHON" ]]; then echo "[ERROR] Python not found at: $SYSTEM_PYTHON" exit 1 fi # --- Check if virtual environment exists --- if [[ ! -f "$VENV_PATH/bin/activate" ]]; then echo "[INFO] Virtual environment not found. Creating..." "$SYSTEM_PYTHON" -m venv "$VENV_PATH" "$PYTHON_IN_VENV" -m pip install --upgrade pip "$PYTHON_IN_VENV" -m pip install -r "$PARENT_DIR/requirements.txt" else echo "[INFO] Virtual environment found." fi # --- Run PyInstaller --- "$PYTHON_IN_VENV" -m PyInstaller \ --distpath "$PARENT_DIR/build" \ --workpath "$PARENT_DIR/build/dist" \ --clean \ "$PARENT_DIR/BUILD.spec" # --- Clean build cache --- rm -rf "$PARENT_DIR/build/dist" echo "[INFO] Build complete: $EXE_NAME"