#!/usr/bin/env bash set -euo pipefail # Generates a multi-size favicon.ico from public/favicon.svg # Dependencies: # - rsvg-convert (from librsvg) # - ImageMagick (magick) # macOS install: # brew install librsvg imagemagick SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" SVG_PATH="${ROOT_DIR}/public/favicon.svg" OUT_ICO_PATH="${ROOT_DIR}/public/favicon.ico" if ! command -v rsvg-convert >/dev/null 2>&1; then echo "ERROR: rsvg-convert not found. Install with: brew install librsvg" >&2 exit 1 fi if ! command -v magick >/dev/null 2>&1; then echo "ERROR: ImageMagick (magick) not found. Install with: brew install imagemagick" >&2 exit 1 fi tmp_dir="$(mktemp -d)" cleanup() { rm -rf "${tmp_dir}"; } trap cleanup EXIT sizes=(16 32 48 64) pngs=() for s in "${sizes[@]}"; do out_png="${tmp_dir}/favicon-${s}.png" rsvg-convert -w "${s}" -h "${s}" "${SVG_PATH}" -o "${out_png}" pngs+=("${out_png}") done magick "${pngs[@]}" "${OUT_ICO_PATH}" echo "Generated ${OUT_ICO_PATH}"