#!/bin/bash set -e cd "$(dirname "$0")" APP_NAME="MiniPlayer" BUNDLE_ID="com.opencomputing.miniplayer" VERSION="1.0.0" echo "=== 1. Release Build ===" swift build -c release echo "=== 2. Create .app bundle ===" rm -rf build/${APP_NAME}.app mkdir -p build/${APP_NAME}.app/Contents/{MacOS,Resources} # Binary cp .build/release/${APP_NAME} build/${APP_NAME}.app/Contents/MacOS/ # Localization cp -r Sources/Resources/zh-Hans.lproj build/${APP_NAME}.app/Contents/Resources/ cp -r Sources/Resources/en.lproj build/${APP_NAME}.app/Contents/Resources/ # Icon (.icns) mkdir -p build/${APP_NAME}.iconset cp Icons_macOS/${APP_NAME}.appiconset/icon_16.png build/${APP_NAME}.iconset/icon_16x16.png cp Icons_macOS/${APP_NAME}.appiconset/icon_16@2x.png build/${APP_NAME}.iconset/icon_16x16@2x.png cp Icons_macOS/${APP_NAME}.appiconset/icon_32.png build/${APP_NAME}.iconset/icon_32x32.png cp Icons_macOS/${APP_NAME}.appiconset/icon_32@2x.png build/${APP_NAME}.iconset/icon_32x32@2x.png cp Icons_macOS/${APP_NAME}.appiconset/icon_128.png build/${APP_NAME}.iconset/icon_128x128.png cp Icons_macOS/${APP_NAME}.appiconset/icon_128@2x.png build/${APP_NAME}.iconset/icon_128x128@2x.png cp Icons_macOS/${APP_NAME}.appiconset/icon_256.png build/${APP_NAME}.iconset/icon_256x256.png cp Icons_macOS/${APP_NAME}.appiconset/icon_256@2x.png build/${APP_NAME}.iconset/icon_256x256@2x.png cp Icons_macOS/${APP_NAME}.appiconset/icon_512.png build/${APP_NAME}.iconset/icon_512x512.png cp Icons_macOS/${APP_NAME}.appiconset/icon_512@2x.png build/${APP_NAME}.iconset/icon_512x512@2x.png iconutil -c icns build/${APP_NAME}.iconset -o build/${APP_NAME}.app/Contents/Resources/${APP_NAME}.icns rm -rf build/${APP_NAME}.iconset # Info.plist cat > build/${APP_NAME}.app/Contents/Info.plist << PLIST CFBundleName${APP_NAME} CFBundleDisplayName${APP_NAME} CFBundleIdentifier${BUNDLE_ID} CFBundleVersion${VERSION} CFBundleShortVersionString${VERSION} CFBundleExecutable${APP_NAME} CFBundlePackageTypeAPPL CFBundleIconFile${APP_NAME} CFBundleDevelopmentRegionzh-Hans CFBundleLocalizations zh-Hans en LSMinimumSystemVersion13.0 NSHighResolutionCapable CFBundleDocumentTypes CFBundleTypeExtensions mp4movmkv avim4vmp3 m4awav CFBundleTypeRoleViewer PLIST echo "=== 3. Create DMG ===" rm -f build/${APP_NAME}.dmg hdiutil create -volname "${APP_NAME}" -srcfolder build/${APP_NAME}.app -ov -format UDZO build/${APP_NAME}.dmg echo "=== Done! ===" ls -lh build/${APP_NAME}.dmg