39 lines
1.2 KiB
Bash
Executable File
39 lines
1.2 KiB
Bash
Executable File
#!/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"
|