#!/bin/sh # Build the macOS disk image: an application bundle beside a symlink to # /Applications, which is what a user expects to drag. # build-dmg.sh set -eu version=$1 arch=$2 appid=$3 out=$4 if [ "$(uname -s)" != Darwin ]; then echo "build-dmg.sh: a DMG can only be built on macOS (hdiutil is required)" >&2 echo "the binary itself cross-compiles: make build/darwin-$arch/keeporg" >&2 exit 1 fi root=$(cd "$(dirname "$0")/.." && pwd) stage=$root/build/dmg-$arch app=$stage/KeepOrg.app rm -rf "$stage" mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources" install -m 0755 "$root/build/darwin-$arch/keeporg" "$app/Contents/MacOS/keeporg" sed -e "s/@VERSION@/$version/" -e "s/@APPID@/$appid/" \ "$root/packaging/macos/Info.plist.in" > "$app/Contents/Info.plist" install -m 0755 "$root/packaging/macos/launcher.sh" "$app/Contents/MacOS/KeepOrg" sed -e "s/@APPID@/$appid/" "$root/packaging/macos/launch-agent.plist.in" \ > "$app/Contents/Resources/$appid.plist" cp "$root/docs/HANDOVER.md" "$stage/Read me first.md" 2>/dev/null || true # The symlink every macOS DMG carries, so installing is one drag. ln -s /Applications "$stage/Applications" mkdir -p "$(dirname "$out")" rm -f "$out" hdiutil create -volname "KeepOrg $version" -srcfolder "$stage" \ -ov -fs HFS+ -format UDZO "$out" >/dev/null printf 'built %s\n' "$out"