#!/bin/zsh set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" APP_NAME=OrionToolbar DERIVED="$ROOT/.build" CONFIGURATION="${CONFIGURATION:-Debug}" [[ "$CONFIGURATION" == Debug || "$CONFIGURATION" == Release ]] || { echo 'CONFIGURATION must be Debug or Release' >&2; exit 2; } mkdir -p "$ROOT/.build/build-logs" LOG="$ROOT/build-logs/build-${CONFIGURATION}-$(date +%Y%m%d-%H%M%S).log" echo "Building $APP_NAME ($CONFIGURATION)" set -o pipefail xcodebuild -project "$ROOT/OrionToolbar.xcodeproj" -scheme "$APP_NAME" -configuration "$CONFIGURATION" -derivedDataPath "$DERIVED" CODE_SIGNING_ALLOWED=NO build 2>&1 | tee "$LOG" APP="$DERIVED/Build/Products/$CONFIGURATION/$APP_NAME.app" [[ -d "$APP" ]] || { echo "Missing application: $APP" >&2; exit 1; } plutil -lint "$APP/Contents/Info.plist" EXE=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleExecutable' "$APP/Contents/Info.plist") [[ -x "$APP/Contents/MacOS/$EXE" ]] || { echo 'Application executable missing' >&2; exit 1; } echo "Build complete: $APP" echo "Log: $LOG" if [[ "${1:-}" == "--launch" ]]; then echo echo "=== LAUNCHING ORIONTOOLBAR ===" pkill -x "$APP_NAME" 2>/dev/null || true sleep 1 APP_EXEC="$APP/Contents/MacOS/$EXE" if [[ ! -x "$APP_EXEC" ]]; then echo "ERROR: Application executable missing: $APP_EXEC" exit 1 fi echo "Application: $APP" echo "Executable: $APP_EXEC" # Launch the exact built application as a separate macOS process. /usr/bin/open -n "$APP" --args sleep 3 if /usr/bin/pgrep -x "$APP_NAME" >/dev/null; then echo "SUCCESS: OrionToolbar is running." /usr/bin/pgrep -fl "$APP_NAME" else echo "ERROR: OrionToolbar did not remain running." echo "Try launching the executable directly:" echo "$APP_EXEC" exit 1 fi fi