#!/bin/zsh set -euo pipefail PROJECT_DIR="${0:A:h:h}" APP_DIR="$PROJECT_DIR/dist/Task Manager.app" ICON_SOURCE="$PROJECT_DIR/mactaskmanager.icon" STAGING_ROOT="$(mktemp -d /tmp/mactaskmanager-build.XXXXXX)" STAGED_APP="$STAGING_ROOT/Task Manager.app" CONTENTS_DIR="$STAGED_APP/Contents" trap '/bin/rm -rf -- "$STAGING_ROOT"' EXIT cd "$PROJECT_DIR" swift build -c release mkdir -p "$CONTENTS_DIR/MacOS" "$CONTENTS_DIR/Resources" cp "$PROJECT_DIR/.build/release/MacTaskManager" "$CONTENTS_DIR/MacOS/MacTaskManager" cp "$PROJECT_DIR/Resources/Info.plist" "$CONTENTS_DIR/Info.plist" chmod +x "$CONTENTS_DIR/MacOS/MacTaskManager" if [[ -d "$ICON_SOURCE" ]]; then xcrun actool "$ICON_SOURCE" \ --compile "$CONTENTS_DIR/Resources" \ --platform macosx \ --minimum-deployment-target 14.0 \ --app-icon mactaskmanager \ --output-partial-info-plist "$CONTENTS_DIR/Resources/IconInfo.plist" >/dev/null fi # Finder and cloud-sync metadata can make an otherwise valid app bundle # unsignable when rebuilding in place. xattr -cr "$STAGED_APP" codesign --force --deep --sign - "$STAGED_APP" >/dev/null codesign --verify --deep --strict "$STAGED_APP" mkdir -p "$PROJECT_DIR/dist" ditto --norsrc "$STAGED_APP" "$APP_DIR" print "Built $APP_DIR"