8f10353f0c
CI / lint (push) Has been cancelled
CI / js-syntax (push) Successful in 10m24s
CI / deps-audit (push) Has been cancelled
CI / test (push) Failing after 24m55s
CI / sast-bandit (push) Failing after 11m13s
CI / trivy (push) Failing after 9m32s
Docker Publish / build-and-push (push) Failing after 34m3s
55 lines
1.8 KiB
Bash
Executable File
55 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
SOURCE_SVG="${SOURCE_SVG:-${REPO_ROOT}/imgs/stemdeck-svg-assets/stemdeck-icon.svg}"
|
|
ICON_DIR="${REPO_ROOT}/desktop/src-tauri/icons"
|
|
WORK_DIR="${TMPDIR:-/tmp}/stemdeck-iconset"
|
|
RENDER_DIR="${WORK_DIR}/render"
|
|
ICONSET_DIR="${WORK_DIR}/icon.iconset"
|
|
|
|
if [[ "$(uname)" != "Darwin" ]]; then
|
|
echo "ERROR: make-iconset.sh must run on macOS" >&2
|
|
exit 1
|
|
fi
|
|
|
|
for cmd in qlmanage sips iconutil; do
|
|
if ! command -v "$cmd" >/dev/null 2>&1; then
|
|
echo "ERROR: required command not found on PATH: $cmd" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
if [[ ! -f "$SOURCE_SVG" ]]; then
|
|
echo "ERROR: source SVG not found: $SOURCE_SVG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "$WORK_DIR"
|
|
mkdir -p "$RENDER_DIR" "$ICONSET_DIR" "$ICON_DIR"
|
|
|
|
qlmanage -t -s 1024 -o "$RENDER_DIR" "$SOURCE_SVG" >/dev/null
|
|
RENDERED_PNG="$(find "$RENDER_DIR" -maxdepth 1 -type f -name '*.png' | head -1)"
|
|
if [[ -z "$RENDERED_PNG" || ! -f "$RENDERED_PNG" ]]; then
|
|
echo "ERROR: qlmanage did not render a PNG from $SOURCE_SVG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
cp "$RENDERED_PNG" "$ICON_DIR/icon.png"
|
|
|
|
for size in 16 32 128 256 512; do
|
|
sips -z "$size" "$size" "$ICON_DIR/icon.png" \
|
|
--out "$ICONSET_DIR/icon_${size}x${size}.png" >/dev/null
|
|
done
|
|
|
|
sips -z 32 32 "$ICON_DIR/icon.png" --out "$ICONSET_DIR/icon_16x16@2x.png" >/dev/null
|
|
sips -z 64 64 "$ICON_DIR/icon.png" --out "$ICONSET_DIR/icon_32x32@2x.png" >/dev/null
|
|
sips -z 256 256 "$ICON_DIR/icon.png" --out "$ICONSET_DIR/icon_128x128@2x.png" >/dev/null
|
|
sips -z 512 512 "$ICON_DIR/icon.png" --out "$ICONSET_DIR/icon_256x256@2x.png" >/dev/null
|
|
cp "$ICON_DIR/icon.png" "$ICONSET_DIR/icon_512x512@2x.png"
|
|
|
|
iconutil -c icns "$ICONSET_DIR" -o "$ICON_DIR/icon.icns"
|
|
|
|
echo "==> Icon PNG: $ICON_DIR/icon.png"
|
|
echo "==> Icon ICNS: $ICON_DIR/icon.icns"
|