spb/metrika Public
Stata-class statistics, GPU-accelerated by Apple Silicon. Native Swift — no Electron, no Python runtime, no compromises.
Swift 92.4%
HTML 3.3%
R 3%
Shell 1.3%
1#!/bin/bash2#3# make_icns.sh — Metrika4#5# Author: Simon-Pierre Boucher6# Contact: contact@spboucher.ai7# Copyright © 2026 Simon-Pierre Boucher. All rights reserved.8#9# Rasterizes Assets/AppIcon/metrika-icon.svg to all required sizes and10# produces Assets/AppIcon/Metrika.icns via iconutil (CLAUDE.md §11).11# Requires rsvg-convert (brew install librsvg); falls back to qlmanage.12#13set -euo pipefail1415ROOT="$(cd "$(dirname "$0")/.." && pwd)"16SVG="$ROOT/Assets/AppIcon/metrika-icon.svg"17ICONSET="$ROOT/Assets/AppIcon/Metrika.iconset"18ICNS="$ROOT/Assets/AppIcon/Metrika.icns"1920[[ -f "$SVG" ]] || { echo "❌ missing $SVG"; exit 1; }21rm -rf "$ICONSET" && mkdir -p "$ICONSET"2223rasterize() { # rasterize <px> <outfile>24 local px="$1" out="$2"25 if command -v rsvg-convert >/dev/null; then26 rsvg-convert -w "$px" -h "$px" "$SVG" -o "$out"27 else28 qlmanage -t -s "$px" -o "$(dirname "$out")" "$SVG" >/dev/null29 mv "$(dirname "$out")/$(basename "$SVG").png" "$out"30 fi31}3233# macOS iconset naming: size @1x and @2x pairs.34for size in 16 32 128 256 512; do35 rasterize "$size" "$ICONSET/icon_${size}x${size}.png"36 rasterize "$((size*2))" "$ICONSET/icon_${size}x${size}@2x.png"37done3839iconutil -c icns "$ICONSET" -o "$ICNS"40rm -rf "$ICONSET"41echo "✅ $ICNS"42