You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$SCRIPT_DIR"
|
|
BUILD_DIR="$PROJECT_DIR/build"
|
|
APP_NAME="Soniox Voice"
|
|
APP_BUNDLE="$BUILD_DIR/$APP_NAME.app"
|
|
|
|
echo "🔨 Building $APP_NAME..."
|
|
mkdir -p "$BUILD_DIR"
|
|
rm -rf "$APP_BUNDLE"
|
|
|
|
# 1. Compile Swift sources (Pure Native Swift)
|
|
swiftc -O -target arm64-apple-macosx13.0 \
|
|
-framework Cocoa -framework AVFoundation -framework Carbon \
|
|
"$PROJECT_DIR"/src/*.swift \
|
|
-o "$BUILD_DIR/SonioxVoice"
|
|
|
|
# 2. Assemble .app bundle
|
|
mkdir -p "$APP_BUNDLE/Contents/MacOS"
|
|
mkdir -p "$APP_BUNDLE/Contents/Resources"
|
|
|
|
if [ ! -f "$PROJECT_DIR/resources/AppIcon.icns" ] && [ -d "$PROJECT_DIR/resources/AppIcon.iconset" ]; then
|
|
iconutil -c icns "$PROJECT_DIR/resources/AppIcon.iconset" -o "$PROJECT_DIR/resources/AppIcon.icns"
|
|
fi
|
|
|
|
cp "$BUILD_DIR/SonioxVoice" "$APP_BUNDLE/Contents/MacOS/SonioxVoice"
|
|
cp "$PROJECT_DIR/Info.plist" "$APP_BUNDLE/Contents/Info.plist"
|
|
cp "$PROJECT_DIR/resources/AppIcon.icns" "$APP_BUNDLE/Contents/Resources/AppIcon.icns"
|
|
|
|
# 3. Ad-hoc Codesign
|
|
codesign --force --deep --sign - "$APP_BUNDLE"
|
|
|
|
echo "✅ App bundle assembled at $APP_BUNDLE"
|
|
|
|
# 4. Create DMG
|
|
DMG_NAME="SonioxVoice-v1.0.0.dmg"
|
|
DMG_PATH="$BUILD_DIR/$DMG_NAME"
|
|
rm -f "$DMG_PATH"
|
|
|
|
echo "📦 Creating DMG Installer..."
|
|
STAGING_DIR="$BUILD_DIR/dmg_staging"
|
|
rm -rf "$STAGING_DIR"
|
|
mkdir -p "$STAGING_DIR"
|
|
cp -R "$APP_BUNDLE" "$STAGING_DIR/"
|
|
ln -s /Applications "$STAGING_DIR/Applications"
|
|
|
|
hdiutil create -volname "SonioxVoice" -srcfolder "$STAGING_DIR" -ov -format UDZO "$DMG_PATH"
|
|
rm -rf "$STAGING_DIR"
|
|
|
|
echo "✅ DMG created at $DMG_PATH"
|
|
|
|
# 5. Create ZIP for release
|
|
cd "$BUILD_DIR"
|
|
zip -r -y "SonioxVoice-v1.0.0.zip" "$APP_NAME.app" > /dev/null
|
|
cd "$PROJECT_DIR"
|
|
|
|
# 6. Install to /Applications
|
|
echo "🚀 Installing to /Applications/$APP_NAME.app..."
|
|
rm -rf "/Applications/$APP_NAME.app"
|
|
cp -R "$APP_BUNDLE" "/Applications/"
|
|
|
|
echo "🎉 All Done Successfully!"
|
|
ls -lh "$BUILD_DIR"
|