#!/bin/bash # Based on https://gist.github.com/adriansr/1da9b18a8076b0f8a977a5eea0ae41ef set -eu set -o pipefail sizes=" 16,16x16 32,16x16@2x 32,32x32 64,32x32@2x 128,128x128 256,128x128@2x 256,256x256 512,256x256@2x 512,512x512 1024,512x512@2x " for svgfile in "$@" do base="$(basename "$svgfile" | sed 's/\.[^\.]*$//')" iconset="$base.iconset" mkdir -p "$iconset" for params in $sizes; do size=$(echo "$params" | cut -d, -f1) label=$(echo "$params" | cut -d, -f2) svg2png -w "$size" -h "$size" "$svgfile" "$iconset/icon_$label.png" done iconutil -c icns "$iconset" done