35 lines
737 B
Bash
Executable File
35 lines
737 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ $# -ne 2 ]]; then
|
|
echo "Usage: $0 <source.png> <output.icns>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
SRC="$1"
|
|
OUT="$2"
|
|
WORKDIR="$(mktemp -d)"
|
|
trap 'rm -rf "$WORKDIR"' EXIT
|
|
|
|
ICONSET="$WORKDIR/AppIcon.iconset"
|
|
mkdir -p "$ICONSET"
|
|
|
|
make_icon() {
|
|
local name="$1"
|
|
local size="$2"
|
|
sips -z "$size" "$size" "$SRC" --out "$ICONSET/$name" >/dev/null
|
|
}
|
|
|
|
make_icon icon_16x16.png 16
|
|
make_icon icon_16x16@2x.png 32
|
|
make_icon icon_32x32.png 32
|
|
make_icon icon_32x32@2x.png 64
|
|
make_icon icon_128x128.png 128
|
|
make_icon icon_128x128@2x.png 256
|
|
make_icon icon_256x256.png 256
|
|
make_icon icon_256x256@2x.png 512
|
|
make_icon icon_512x512.png 512
|
|
make_icon icon_512x512@2x.png 1024
|
|
|
|
iconutil -c icns "$ICONSET" -o "$OUT"
|