#!/bin/sh # mac-app.sh: ELYTerminal.app in target/release, signed ad hoc, and its disk image. set -eu cd "$(dirname "$0")/.." cargo build --release --locked version=$(cargo pkgid) version=${version##*[#@]} case $version in [0-9]*) ;; *) echo "mac-app: cargo pkgid names no version" >&2; exit 1 ;; esac out=${CARGO_TARGET_DIR:-target}/release app=$out/ELYTerminal.app work=$(mktemp -d) trap 'rm -rf "$work"' EXIT cargo run --release --locked --quiet --example icons -- \ iconset assets/icons/elyterminal-macos.svg "$work/ELYTerminal.iconset" rm -rf "$app" mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources" cp "$out/elyterminal" "$app/Contents/MacOS/" iconutil -c icns "$work/ELYTerminal.iconset" -o "$app/Contents/Resources/ELYTerminal.icns" cat > "$app/Contents/Info.plist" < CFBundleDevelopmentRegionen CFBundleDisplayNameELYTerminal CFBundleExecutableelyterminal CFBundleIconFileELYTerminal CFBundleIdentifiercom.zacharyzhang.elyterminal CFBundleInfoDictionaryVersion6.0 CFBundleNameELYTerminal CFBundlePackageTypeAPPL CFBundleShortVersionString$version CFBundleVersion$version LSApplicationCategoryTypepublic.app-category.developer-tools LSMinimumSystemVersion11.0 NSHighResolutionCapable EOF plutil -lint -s "$app/Contents/Info.plist" codesign --force --sign - "$app" mkdir "$work/disk" ditto "$app" "$work/disk/ELYTerminal.app" ln -s /Applications "$work/disk/Applications" dmg=$out/ELYTerminal-$version.dmg hdiutil create -quiet -volname ELYTerminal -srcfolder "$work/disk" -ov -format UDZO "$dmg" echo "mac-app: $app" echo "mac-app: $dmg"