mirror of
https://github.com/MAKS-IT-COM/maksit-postclient.git
synced 2026-09-29 19:08:09 +02:00
72 lines
2.3 KiB
Bash
72 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Build Postclient.app and a drag-to-Applications DMG from a dotnet publish folder.
|
|
set -euo pipefail
|
|
|
|
publish_dir=""
|
|
version=""
|
|
rid=""
|
|
icon_png=""
|
|
output_dir=""
|
|
|
|
usage() {
|
|
echo "Usage: bundle.sh --publish-dir DIR --version VER --rid osx-arm64|osx-x64 --icon PNG --output-dir DIR" >&2
|
|
exit 2
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--publish-dir) publish_dir="$2"; shift 2 ;;
|
|
--version) version="$2"; shift 2 ;;
|
|
--rid) rid="$2"; shift 2 ;;
|
|
--icon) icon_png="$2"; shift 2 ;;
|
|
--output-dir) output_dir="$2"; shift 2 ;;
|
|
*) usage ;;
|
|
esac
|
|
done
|
|
|
|
[[ -n "$publish_dir" && -n "$version" && -n "$rid" && -n "$icon_png" && -n "$output_dir" ]] || usage
|
|
[[ -d "$publish_dir" ]] || { echo "publish dir not found: $publish_dir" >&2; exit 1; }
|
|
[[ -f "$icon_png" ]] || { echo "icon not found: $icon_png" >&2; exit 1; }
|
|
|
|
script_dir="$(cd "$(dirname "$0")" && pwd)"
|
|
executable="MaksIT.PostClient.UI"
|
|
app_name="Postclient.app"
|
|
work="$(mktemp -d "${TMPDIR:-/tmp}/postclient-macos.XXXXXX")"
|
|
app="$work/$app_name"
|
|
host="$publish_dir/$executable"
|
|
|
|
[[ -f "$host" ]] || { echo "app host missing (UseAppHost=true): $host" >&2; exit 1; }
|
|
|
|
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
|
|
sed "s/{{VERSION}}/$version/g" "$script_dir/Info.plist.template" > "$app/Contents/Info.plist"
|
|
cp -a "$publish_dir/." "$app/Contents/MacOS/"
|
|
chmod +x "$app/Contents/MacOS/$executable"
|
|
|
|
iconset="$work/Postclient.iconset"
|
|
mkdir -p "$iconset"
|
|
for size in 16 32 128 256 512; do
|
|
sips -z "$size" "$size" "$icon_png" --out "$iconset/icon_${size}x${size}.png" >/dev/null
|
|
done
|
|
sips -z 32 32 "$icon_png" --out "$iconset/icon_16x16@2x.png" >/dev/null
|
|
sips -z 64 64 "$icon_png" --out "$iconset/icon_32x32@2x.png" >/dev/null
|
|
sips -z 256 256 "$icon_png" --out "$iconset/icon_128x128@2x.png" >/dev/null
|
|
sips -z 512 512 "$icon_png" --out "$iconset/icon_256x256@2x.png" >/dev/null
|
|
sips -z 1024 1024 "$icon_png" --out "$iconset/icon_512x512@2x.png" >/dev/null
|
|
iconutil -c icns "$iconset" -o "$app/Contents/Resources/Postclient.icns"
|
|
|
|
mkdir -p "$output_dir"
|
|
dmg_root="$work/dmg"
|
|
mkdir -p "$dmg_root"
|
|
cp -a "$app" "$dmg_root/"
|
|
ln -s /Applications "$dmg_root/Applications"
|
|
|
|
dmg_name="postclient-${version}-${rid}.dmg"
|
|
hdiutil create \
|
|
-volname "Postclient" \
|
|
-srcfolder "$dmg_root" \
|
|
-ov \
|
|
-format UDZO \
|
|
"$output_dir/$dmg_name"
|
|
|
|
echo "Wrote $output_dir/$dmg_name"
|