#! /usr/bin/env bash set -e install_packages() { local group="$1" shift 1 [ -z "$INSTALLED_PACKAGES" ] && INSTALLED_PACKAGES=( $(brew cask list) ) echo "==> ${group} packages" for pkg in "$@"; do local base=$(echo $pkg | awk '{print $1}') [[ "$base" == *\/* ]] && base=$(basename "$base") local found="" for i in ${INSTALLED_PACKAGES[@]}; do [[ "$base" == "$i" ]] && found=1 done if [ -z "$found" ]; then echo " -> Missing: ${base}" brew cask install ${pkg[@]} else echo " -> Installed: ${base}" fi done } main() { # # Define packages # local core_pkgs=( aerial alfred appcleaner bartender betterzip betterzipql emacs firefox fluid flux google-chrome hammerspoon iina istat-menus istumbler iterm2 karabiner-elements keybase logitech-gaming-software logitech-options moom mplayerx osxfuse peakhour qlcolorcode qlimagesize qlmarkdown qlprettypatch qlstephen qlvideo quicklook-csv quicklook-json quicklookapk resolutionator stay suspicious-package ubersicht vlc wavebox webpquicklook ) local work_pkgs=( atom bbedit chicken cyberduck dash docker-edge github-desktop google-cloud-sdk hipchat insomnia java kaleidoscope licecap medis paw postman robomongo sequel-pro slack vagrant virtualbox visual-studio-code ) local personal_pkgs=( 4k-video-downloader adium-beta android-file-transfer audio-hijack autodmg bowtie calibre daisydisk deluge discord dropbox ethereum-wallet filebot gog-galaxy gpgtools hackety-hack handbrake irccloud little-snitch makemkv messenger micro-snitch mist omnigraffle openemu parallels-desktop plex-media-player rclone-browser ring screenhero sixtyforce skype spotify teamviewer transmission unetbootin virtualc64 viscosity vmware-fusion witgui xld yakyak ) # # Install packages # install_packages "core" "${core_pkgs[@]}" if [[ " $@ " == *" work "* ]]; then install_packages "work" "${work_pkgs[@]}" fi if [[ " $@ " == *" personal "* ]]; then install_packages "personal" "${personal_pkgs[@]}" fi } main $@