generated from LouisMazin/PythonApplicationTemplate
59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
#!/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" |