#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" BUILD_DIR="${1:-$ROOT_DIR/build}" DIST_DIR="${2:-$ROOT_DIR/dist/macos}" STAGE_DIR="$DIST_DIR/dmg-staging" INSTALL_PREFIX="$DIST_DIR/install" APP_BUNDLE="OrbitHub.app" if [[ ! -f "$BUILD_DIR/CMakeCache.txt" ]]; then echo "Build directory not configured: $BUILD_DIR" >&2 echo "Run: cmake -S \"$ROOT_DIR\" -B \"$BUILD_DIR\" -G Ninja" >&2 exit 1 fi VERSION="$(sed -n 's/^CMAKE_PROJECT_VERSION:STATIC=//p' "$BUILD_DIR/CMakeCache.txt" | head -n1)" if [[ -z "$VERSION" ]]; then echo "Unable to determine project version from $BUILD_DIR/CMakeCache.txt" >&2 exit 1 fi MACDEPLOYQT="$(brew --prefix qt@6)/bin/macdeployqt" if [[ ! -x "$MACDEPLOYQT" ]]; then echo "macdeployqt not found at $MACDEPLOYQT" >&2 echo "Install it: brew install qt@6" >&2 exit 1 fi mkdir -p "$DIST_DIR" rm -rf "$STAGE_DIR" "$INSTALL_PREFIX" mkdir -p "$STAGE_DIR" cmake --build "$BUILD_DIR" -j cmake --install "$BUILD_DIR" --prefix "$INSTALL_PREFIX" if [[ ! -d "$INSTALL_PREFIX/$APP_BUNDLE" ]]; then echo "Expected app bundle not found: $INSTALL_PREFIX/$APP_BUNDLE" >&2 exit 1 fi "$MACDEPLOYQT" "$INSTALL_PREFIX/$APP_BUNDLE" cp -R "$INSTALL_PREFIX/$APP_BUNDLE" "$STAGE_DIR/$APP_BUNDLE" ln -s /Applications "$STAGE_DIR/Applications" OUTPUT_DMG="$DIST_DIR/OrbitHub-${VERSION}.dmg" rm -f "$OUTPUT_DMG" hdiutil create -volname "OrbitHub" -srcfolder "$STAGE_DIR" -ov -format UDZO "$OUTPUT_DMG" echo "Created $OUTPUT_DMG"