Files
rfcp/installer/build-mac.sh
2026-01-31 15:25:18 +02:00

62 lines
2.0 KiB
Bash

#!/bin/bash
set -e
echo "========================================="
echo " RFCP Desktop Build (macOS)"
echo "========================================="
cd "$(dirname "$0")/.."
# Check if running on macOS
if [[ "$(uname)" != "Darwin" ]]; then
echo "Error: This script must run on macOS"
exit 1
fi
# 1. Build frontend
echo "[1/4] Building frontend..."
cd frontend
npm ci
npm run build
cd ..
# 2. Build backend with PyInstaller
echo "[2/4] Building backend..."
cd backend
python3 -m pip install -r requirements.txt
python3 -m pip install pyinstaller
cd ../installer
python3 -m PyInstaller rfcp-server.spec --clean --noconfirm
mkdir -p ../desktop/backend-dist/mac
cp dist/rfcp-server ../desktop/backend-dist/mac/
cd ..
# 3. Create .icns icon if not exists
if [ ! -f desktop/assets/icon.icns ]; then
echo "Creating macOS icon..."
mkdir -p icon.iconset
sips -z 16 16 desktop/assets/icon.png --out icon.iconset/icon_16x16.png
sips -z 32 32 desktop/assets/icon.png --out icon.iconset/icon_16x16@2x.png
sips -z 32 32 desktop/assets/icon.png --out icon.iconset/icon_32x32.png
sips -z 64 64 desktop/assets/icon.png --out icon.iconset/icon_32x32@2x.png
sips -z 128 128 desktop/assets/icon.png --out icon.iconset/icon_128x128.png
sips -z 256 256 desktop/assets/icon.png --out icon.iconset/icon_128x128@2x.png
sips -z 256 256 desktop/assets/icon.png --out icon.iconset/icon_256x256.png
sips -z 512 512 desktop/assets/icon.png --out icon.iconset/icon_256x256@2x.png
sips -z 512 512 desktop/assets/icon.png --out icon.iconset/icon_512x512.png
sips -z 1024 1024 desktop/assets/icon.png --out icon.iconset/icon_512x512@2x.png
iconutil -c icns icon.iconset -o desktop/assets/icon.icns
rm -rf icon.iconset
fi
# 4. Build Electron app
echo "[3/4] Building Electron app..."
cd desktop
npm ci
npm run build:mac
cd ..
# 5. Done
echo "[4/4] Build complete!"
ls -la desktop/dist/*.dmg 2>/dev/null || echo "DMG in desktop/dist/"