diff --git a/scripts/generate-mac-icon.sh b/scripts/generate-mac-icon.sh new file mode 100644 index 0000000..dc66a52 --- /dev/null +++ b/scripts/generate-mac-icon.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -lt 2 ]]; then + echo "Usage: $0 " + exit 1 +fi + +ICON_SRC="$1" +ICON_DEST="$2" + +if [[ -f "$ICON_DEST" ]]; then + exit 0 +fi + +if [[ ! -f "$ICON_SRC" ]]; then + echo "[generate-mac-icon] Source icon not found: $ICON_SRC" >&2 + exit 1 +fi + +if ! command -v iconutil >/dev/null 2>&1; then + echo "[generate-mac-icon] iconutil not found" >&2 + exit 1 +fi + +TMPDIR=$(mktemp -d) +ICONSET="$TMPDIR/AppIcon.iconset" +mkdir -p "$ICONSET" + +for SIZE in 16 32 64 128 256 512; do + sips -s format png "$ICON_SRC" --resampleHeightWidth $SIZE $SIZE --out "$ICONSET/icon_${SIZE}x${SIZE}.png" >/dev/null + sips -s format png "$ICON_SRC" --resampleHeightWidth $((SIZE * 2)) $((SIZE * 2)) --out "$ICONSET/icon_${SIZE}x${SIZE}@2x.png" >/dev/null +done + +iconutil -c icns "$ICONSET" -o "$ICON_DEST" +rm -rf "$TMPDIR" + +if [[ -f "$ICON_DEST" ]]; then + echo "[generate-mac-icon] Generated $ICON_DEST" +else + echo "[generate-mac-icon] Failed to create $ICON_DEST" >&2 + exit 1 +fi