/ scripts / generate-icons.sh
generate-icons.sh
 1  #!/bin/bash
 2  
 3  # Configuration
 4  SOURCE="src/lib/assets/favicon.svg"
 5  OUT_DIR="static"
 6  
 7  # Ensure output directory exists (though static/ is standard)
 8  mkdir -p "$OUT_DIR"
 9  
10  # Check if rsvg-convert is available
11  if ! command -v rsvg-convert &> /dev/null; then
12      echo "Error: rsvg-convert is not installed. Use 'brew install librsvg' to fix."
13      exit 1
14  fi
15  
16  echo "Generating high-quality icons using rsvg-convert from $SOURCE..."
17  
18  # 1. Standard PNGs (using icon-SIZE.png naming convention)
19  rsvg-convert -w 16 -h 16 "$SOURCE" > "$OUT_DIR/icon-16.png"
20  rsvg-convert -w 32 -h 32 "$SOURCE" > "$OUT_DIR/icon-32.png"
21  rsvg-convert -w 48 -h 48 "$SOURCE" > "$OUT_DIR/icon-48.png"
22  rsvg-convert -w 180 -h 180 "$SOURCE" > "$OUT_DIR/icon-180.png"
23  rsvg-convert -w 192 -h 192 "$SOURCE" > "$OUT_DIR/icon-192.png"
24  rsvg-convert -w 512 -h 512 "$SOURCE" > "$OUT_DIR/icon-512.png"
25  
26  # 2. Multi-resolution .ico file (requires ImageMagick to combine PNGs)
27  echo "  Generating favicon.ico..."
28  magick "$OUT_DIR/icon-16.png" "$OUT_DIR/icon-32.png" "$OUT_DIR/icon-48.png" "$OUT_DIR/favicon.ico"
29  
30  # 3. Cleanup unused intermediate files (if any)
31  # rm "$OUT_DIR/icon-48.png"
32  
33  echo "Done! Icons generated in $OUT_DIR."