mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 13:26:40 +00:00
212 lines
2.9 KiB
Bash
Executable File
212 lines
2.9 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
set -e
|
|
|
|
# Settings
|
|
PACKAGE_LIST_CMD="brew cask list"
|
|
PACKAGE_INSTALL_CMD="brew cask install"
|
|
|
|
#
|
|
# Package list
|
|
#
|
|
|
|
CORE_PKGS=(
|
|
1password
|
|
aerial
|
|
alfred
|
|
appcleaner
|
|
bartender
|
|
betterzip
|
|
betterzipql
|
|
emacs
|
|
firefox
|
|
fluid
|
|
flux
|
|
google-chrome
|
|
gpg-suite
|
|
hammerspoon
|
|
iina
|
|
istat-menus
|
|
iterm2
|
|
karabiner-elements
|
|
logitech-gaming-software
|
|
logitech-options
|
|
mplayerx
|
|
osxfuse
|
|
qlcolorcode
|
|
qlmarkdown
|
|
qlstephen
|
|
resolutionator
|
|
stay
|
|
ubersicht
|
|
vlc
|
|
)
|
|
|
|
WORK_PKGS=(
|
|
atom
|
|
bbedit
|
|
chromedriver
|
|
cyberduck
|
|
dash
|
|
docker-edge
|
|
fork
|
|
github-desktop
|
|
google-cloud-sdk
|
|
insomnia
|
|
java
|
|
kaleidoscope
|
|
licecap
|
|
medis
|
|
minikube
|
|
minishift
|
|
muzzle
|
|
paw
|
|
postico
|
|
postman
|
|
robo-3t
|
|
rowanj-gitx
|
|
sequel-pro
|
|
slack
|
|
stride
|
|
transmit
|
|
vagrant
|
|
virtualbox
|
|
visual-studio-code
|
|
)
|
|
|
|
PERSONAL_PKGS=(
|
|
4k-video-downloader
|
|
adium-beta
|
|
android-file-transfer
|
|
android-platform-tools
|
|
audio-hijack
|
|
autodmg
|
|
bowtie
|
|
calibre
|
|
chicken
|
|
daisydisk
|
|
deluge
|
|
discord
|
|
dropbox
|
|
ethereum-wallet
|
|
filebot
|
|
gog-galaxy
|
|
goofy
|
|
google-photos-backup-and-sync
|
|
hackety-hack
|
|
handbrake
|
|
irccloud
|
|
istumbler
|
|
keybase
|
|
little-snitch
|
|
makemkv
|
|
messenger
|
|
micro-snitch
|
|
mist
|
|
omnigraffle
|
|
openemu
|
|
parallels-desktop
|
|
peakhour
|
|
plex-media-player
|
|
qlimagesize
|
|
qlprettypatch
|
|
qlvideo
|
|
quicklook-csv
|
|
quicklook-json
|
|
quicklookapk
|
|
rclone-browser
|
|
ring
|
|
screenhero
|
|
sixtyforce
|
|
skyfonts
|
|
skype
|
|
spotify
|
|
suspicious-package
|
|
teamviewer
|
|
transmission
|
|
unetbootin
|
|
virtualc64
|
|
viscosity
|
|
vmware-fusion
|
|
vnc-viewer
|
|
wavebox
|
|
webpquicklook
|
|
witgui
|
|
xld
|
|
yakyak
|
|
)
|
|
|
|
#
|
|
# Main
|
|
#
|
|
|
|
main() {
|
|
cache_installed_packages
|
|
|
|
install_packages "core" "${CORE_PKGS[@]}"
|
|
|
|
if [[ " $* " == *" work "* ]]; then
|
|
install_packages "work" "${WORK_PKGS[@]}"
|
|
fi
|
|
|
|
if [[ " $* " == *" personal "* ]]; then
|
|
install_packages "personal" "${PERSONAL_PKGS[@]}"
|
|
fi
|
|
}
|
|
|
|
#
|
|
# The rest...
|
|
#
|
|
|
|
INSTALLED_PACKAGES=()
|
|
|
|
package_name() {
|
|
local install_args="$1"
|
|
local pkg
|
|
|
|
pkg="$(echo "$install_args" | awk '{ print $1 }')"
|
|
[[ "$pkg" == *'/'* ]] && pkg="$(basename "$pkg")"
|
|
|
|
echo "$pkg"
|
|
}
|
|
|
|
cache_installed_packages() {
|
|
if [ ${#INSTALLED_PACKAGES[@]} -eq 0 ]; then
|
|
echo "--> Getting list of installed packages"
|
|
mapfile -t INSTALLED_PACKAGES < <($PACKAGE_LIST_CMD)
|
|
fi
|
|
}
|
|
|
|
is_package_installed() {
|
|
local pkg="$1"
|
|
cache_installed_packages
|
|
|
|
for i in "${INSTALLED_PACKAGES[@]}"; do
|
|
[[ "$pkg" == "$i" ]] && return 0
|
|
done
|
|
return 1
|
|
}
|
|
|
|
install_package() {
|
|
$PACKAGE_INSTALL_CMD "$@"
|
|
}
|
|
|
|
install_packages() {
|
|
local group="$1"
|
|
local pkg
|
|
shift 1
|
|
|
|
echo "--> Group: ${group}"
|
|
for install_args in "$@"; do
|
|
pkg="$(package_name "$install_args")"
|
|
|
|
if is_package_installed "$pkg"; then
|
|
echo " Exists: ${pkg}"
|
|
else
|
|
echo " Installing: ${pkg}"
|
|
install_package "$install_args"
|
|
fi
|
|
done
|
|
}
|
|
|
|
main "$@"
|