88 lines
2.2 KiB
Bash
88 lines
2.2 KiB
Bash
#!/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" |