41 lines
1.0 KiB
Bash
Executable File
41 lines
1.0 KiB
Bash
Executable File
#!/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}"
|
|
|
|
|