74 lines
2.4 KiB
Bash
Executable File
74 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
REPO="$(cd "$(dirname "$0")" && pwd)/build"
|
|
APP="./out/Photon Uploader.app"
|
|
CONTENTS="$APP/Contents"
|
|
|
|
echo "==> Building PhotonUploader (menu bar binary)..."
|
|
swiftc -framework AppKit \
|
|
"$REPO/PhotonUploader/main.swift" \
|
|
-o "$REPO/PhotonUploader/upload"
|
|
|
|
echo "==> Building PhotonNotify (notification helper)..."
|
|
swiftc -framework Foundation -framework UserNotifications -framework AppKit \
|
|
"$REPO/PhotonNotify/main.swift" \
|
|
-o "$REPO/PhotonNotify/PhotonNotify"
|
|
|
|
echo "==> Assembling app bundle..."
|
|
mkdir -p "$CONTENTS/MacOS"
|
|
mkdir -p "$CONTENTS/Resources"
|
|
mkdir -p "$CONTENTS/Helpers/PhotonNotify.app/Contents/MacOS"
|
|
mkdir -p "$CONTENTS/Helpers/PhotonNotify.app/Contents/Resources"
|
|
|
|
cp "$REPO/PhotonUploader/upload" "$CONTENTS/MacOS/upload"
|
|
cp "$REPO/upload.sh" "$CONTENTS/MacOS/upload.sh"
|
|
cp "$REPO/Info.plist" "$CONTENTS/Info.plist"
|
|
|
|
cp "$REPO/PhotonNotify/PhotonNotify" "$CONTENTS/Helpers/PhotonNotify.app/Contents/MacOS/PhotonNotify"
|
|
cp "$REPO/PhotonNotify/Info.plist" "$CONTENTS/Helpers/PhotonNotify.app/Contents/Info.plist"
|
|
cp "$REPO/Resources/AppIcon.icns" "$CONTENTS/Helpers/PhotonNotify.app/Contents/Resources/AppIcon.icns"
|
|
|
|
cp "$REPO/Resources/AppIcon.icns" "$CONTENTS/Resources/AppIcon.icns"
|
|
cp "$REPO/Resources/MenuBarIcon.png" "$CONTENTS/Resources/MenuBarIcon.png"
|
|
cp "$REPO/Resources/MenuBarIcon@2x.png" "$CONTENTS/Resources/MenuBarIcon@2x.png"
|
|
|
|
chmod +x "$CONTENTS/MacOS/upload"
|
|
chmod +x "$CONTENTS/MacOS/upload.sh"
|
|
chmod +x "$CONTENTS/Helpers/PhotonNotify.app/Contents/MacOS/PhotonNotify"
|
|
|
|
echo "==> Signing..."
|
|
codesign --force --sign - "$CONTENTS/Helpers/PhotonNotify.app"
|
|
codesign --force --sign - "$APP"
|
|
|
|
echo "==> Done. App bundle at: $APP"
|
|
|
|
echo "==> Creating DMG..."
|
|
DMG_STAGING="./out/dmg-staging"
|
|
DMG_OUT="./out/Photon Uploader.dmg"
|
|
|
|
if ! command -v create-dmg &>/dev/null; then
|
|
echo "Error: create-dmg is not installed. Run: brew install create-dmg" >&2
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "$DMG_STAGING"
|
|
mkdir -p "$DMG_STAGING"
|
|
cp -r "$APP" "$DMG_STAGING/"
|
|
|
|
rm -f "$DMG_OUT"
|
|
create-dmg \
|
|
--volname "Photon Uploader" \
|
|
--volicon "$REPO/Resources/AppIcon.icns" \
|
|
--window-pos 200 120 \
|
|
--window-size 540 380 \
|
|
--icon-size 96 \
|
|
--icon "Photon Uploader.app" 140 190 \
|
|
--hide-extension "Photon Uploader.app" \
|
|
--app-drop-link 400 190 \
|
|
"$DMG_OUT" \
|
|
"$DMG_STAGING"
|
|
|
|
rm -rf "$DMG_STAGING"
|
|
echo "==> Done. DMG at: $DMG_OUT"
|