#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PARENT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" CONFIG_DIR="$PARENT_DIR/config" CONFIG_FILE="$PARENT_DIR/config.json" ICON_FILE="$PARENT_DIR/data/assets/icon.png" if [ -f "$PARENT_DIR/.env" ]; then set -a . "$PARENT_DIR/.env" set +a fi # === Extract values from config.json === ICON_PATH=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['icon_path'])") APP_NAME=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['app_name'])") ARCHITECTURE=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['architecture'])") # === Use the Python interpreter provided by the environment === SYSTEM_PYTHON="${PYTHON_PATH:-python3}" VENV_PATH="$CONFIG_DIR/MACenv_$ARCHITECTURE" APP_FILE="$APP_NAME.app" PYTHON_IN_VENV="$VENV_PATH/bin/python" BUILD_DIR="$PARENT_DIR/build" ZIP_FILE="$BUILD_DIR/$APP_NAME.zip" # === Verify Python existence === if ! command -v "$SYSTEM_PYTHON" >/dev/null 2>&1; then echo "[ERROR] Python interpreter not found in PATH." exit 1 fi # === Check virtual environment === 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 "$CONFIG_DIR/requirements.txt" else echo "[INFO] Virtual environment found." fi # === Run PyInstaller === "$PYTHON_IN_VENV" -m PyInstaller \ --distpath "$BUILD_DIR" \ --workpath "$BUILD_DIR/dist" \ --clean \ "$CONFIG_DIR/BUILD.spec" # === Clean build cache === rm -rf "$BUILD_DIR/dist" # === Create ZIP === echo "[INFO] Creating ZIP archive..." TEMP_ZIP_DIR="$BUILD_DIR/temp_zip" # Remove old temp dir rm -rf "$TEMP_ZIP_DIR" mkdir -p "$TEMP_ZIP_DIR" # Move compiled app mv "$BUILD_DIR/$APP_FILE" "$TEMP_ZIP_DIR/" # Copy config.json cp "$CONFIG_FILE" "$TEMP_ZIP_DIR/" # Copy icon.png cp "$ICON_FILE" "$TEMP_ZIP_DIR/" # Copy data/lang cp -R "$PARENT_DIR/data/lang" "$TEMP_ZIP_DIR/lang" # Remove old ZIP rm -f "$ZIP_FILE" # Create ZIP cd "$BUILD_DIR" zip -r "$ZIP_FILE" "temp_zip" >/dev/null # Remove temp folder rm -rf "$TEMP_ZIP_DIR" echo "[INFO] ZIP created at: $ZIP_FILE"