#!/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" # The bundle runs the client itself: started with no command it is the # menu-bar application, and the same binary serves `keeporg` in a terminal. 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" iconutil -c icns -o "$app/Contents/Resources/KeepOrg.icns" "$root/build/icons/KeepOrg.iconset" 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"