UPDATE: dwim-shell-command is now available on melpa.
Since writing a DWIM version of the shell-command, I've been having a little fun revisiting command line utilities I sometimes invoke from my beloved editor. In this instance, converting a png file to an icns icon. What's more interesting about this case is that it's not just a one-liner, but a short script in itself. Either way, it's just as easy to invoke from Emacs using dwim-shell-command--on-marked-files
.
(defun dwim-shell-command-convert-image-to-icns ()
"Convert png to icns icon."
(interactive)
(dwim-shell-command-on-marked-files
"Convert png to icns icon"
"
# Based on http://stackoverflow.com/questions/12306223/how-to-manually-create-icns-files-using-iconutil
# Note: png must be 1024x1024
mkdir <<fne>>.iconset
sips -z 16 16 '<<f>>' --out '<<fne>>.iconset/icon_16x16.png'
sips -z 32 32 '<<f>>' --out '<<fne>>.iconset/icon_16x16@2x.png'
sips -z 32 32 '<<f>>' --out '<<fne>>.iconset/icon_32x32.png'
sips -z 64 64 '<<f>>' --out '<<fne>>.iconset/icon_32x32@2x.png'
sips -z 128 128 '<<f>>' --out '<<fne>>.iconset/icon_128x128.png'
sips -z 256 256 '<<f>>' --out '<<fne>>.iconset/icon_128x128@2x.png'
sips -z 256 256 '<<f>>' --out '<<fne>>.iconset/icon_256x256@2x.png'
sips -z 512 512 '<<f>>' --out '<<fne>>.iconset/icon_512x512.png'
sips -z 512 512 '<<f>>' --out '<<fne>>.iconset/icon_256x256@2x.png'
sips -z 1024 1024 '<<f>>' --out '<<fne>>.iconset/icon_512x512@2x.png'
iconutil -c icns '<<fne>>.iconset'"
:utils '("sips" "iconutil")
:extensions "png"))