#!/bin/bash # # make_icns.sh — Metrika # # Author: Simon-Pierre Boucher # Contact: contact@spboucher.ai # Copyright © 2026 Simon-Pierre Boucher. All rights reserved. # # Rasterizes Assets/AppIcon/metrika-icon.svg to all required sizes and # produces Assets/AppIcon/Metrika.icns via iconutil (CLAUDE.md §11). # Requires rsvg-convert (brew install librsvg); falls back to qlmanage. # set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" SVG="$ROOT/Assets/AppIcon/metrika-icon.svg" ICONSET="$ROOT/Assets/AppIcon/Metrika.iconset" ICNS="$ROOT/Assets/AppIcon/Metrika.icns" [[ -f "$SVG" ]] || { echo "❌ missing $SVG"; exit 1; } rm -rf "$ICONSET" && mkdir -p "$ICONSET" rasterize() { # rasterize local px="$1" out="$2" if command -v rsvg-convert >/dev/null; then rsvg-convert -w "$px" -h "$px" "$SVG" -o "$out" else qlmanage -t -s "$px" -o "$(dirname "$out")" "$SVG" >/dev/null mv "$(dirname "$out")/$(basename "$SVG").png" "$out" fi } # macOS iconset naming: size @1x and @2x pairs. for size in 16 32 128 256 512; do rasterize "$size" "$ICONSET/icon_${size}x${size}.png" rasterize "$((size*2))" "$ICONSET/icon_${size}x${size}@2x.png" done iconutil -c icns "$ICONSET" -o "$ICNS" rm -rf "$ICONSET" echo "✅ $ICNS"