#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PARENT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" CONFIG_FILE="$PARENT_DIR/config.json" ICON_FILE="$PARENT_DIR/data/assets/icon.png" ENV_FILE="$PARENT_DIR/.env" # === Check .env === if [ ! -f "$ENV_FILE" ]; then echo "[ERROR] .env file not found. Please copy .env.example to .env and configure it." exit 1 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'])") # === Extract PYTHON_PATH from .env === SYSTEM_PYTHON=$(grep '^PYTHON_PATH=' "$ENV_FILE" | cut -d '=' -f2-) VENV_PATH="$PARENT_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 [ ! -x "$SYSTEM_PYTHON" ]; then echo "[ERROR] Python not found at: $SYSTEM_PYTHON" 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 "$PARENT_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 \ "$PARENT_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"