#!/usr/bin/env bash # Package the macOS release build: a universal (arm64 + x86_64) SolveCraft.app and CLI in one zip. # Usage: .github/release/package-macos.sh (from the repository root, after building both # aarch64-apple-darwin and x86_64-apple-darwin). Writes out/. The app is not signed. set -euo pipefail tag=${1:?usage: package-macos.sh } version=${tag#v} t=${CARGO_TARGET_DIR:-target} name="solvecraft-$tag-macos-universal" rm -rf stage out && mkdir -p "stage/$name" out app="stage/$name/SolveCraft.app" mkdir -p "$app/Contents/MacOS" lipo -create -output "$app/Contents/MacOS/solvecraft" "$t/aarch64-apple-darwin/release/solvecraft" "$t/x86_64-apple-darwin/release/solvecraft" lipo -create -output "stage/$name/solvecraft-cli" "$t/aarch64-apple-darwin/release/solvecraft-cli" "$t/x86_64-apple-darwin/release/solvecraft-cli" cat > "$app/Contents/Info.plist" < CFBundleNameSolveCraft CFBundleDisplayNameSolveCraft CFBundleIdentifierio.github.bherbruck.solvecraft CFBundleExecutablesolvecraft CFBundlePackageTypeAPPL CFBundleVersion$version CFBundleShortVersionString$version LSMinimumSystemVersion11.0 NSHighResolutionCapable PLIST cp README.md LICENSE-MIT LICENSE-APACHE NOTICE ATTRIBUTION.md "stage/$name/" lipo -info "$app/Contents/MacOS/solvecraft" (cd stage && ditto -c -k --keepParent "$name" "../out/$name.zip") ls -l out