62 lines
2.0 KiB
Bash
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/"
|