#! /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=( 1password aerial alfred appcleaner bartender betterzip betterzipql emacs firefox fluid flux google-chrome gpg-suite hammerspoon iina istat-menus istumbler iterm2 karabiner-elements keybase logitech-gaming-software logitech-options mplayerx osxfuse qlcolorcode qlimagesize qlmarkdown qlprettypatch qlstephen qlvideo quicklook-csv quicklook-json quicklookapk resolutionator skyfonts stay suspicious-package ubersicht vlc vnc-viewer wavebox webpquicklook ) local work_pkgs=( atom bbedit chicken cyberduck dash docker-edge github-desktop google-cloud-sdk hipchat insomnia java kaleidoscope licecap medis minikube minishift paw postico postman robomongo rowanj-gitx 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 hackety-hack handbrake irccloud little-snitch makemkv messenger micro-snitch mist omnigraffle openemu parallels-desktop peakhour 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 "$@"