mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 06:26:39 +00:00
Refactor bootstrap-homebrew and bootstrap-caskroom scripts
This commit is contained in:
@@ -1,174 +1,211 @@
|
||||
#! /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-pretest
|
||||
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
|
||||
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
|
||||
audio-hijack
|
||||
autodmg
|
||||
bowtie
|
||||
calibre
|
||||
chicken
|
||||
daisydisk
|
||||
deluge
|
||||
discord
|
||||
dropbox
|
||||
ethereum-wallet
|
||||
filebot
|
||||
gog-galaxy
|
||||
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
|
||||
|
||||
[ -z "$INSTALLED_PACKAGES" ] && INSTALLED_PACKAGES=( $(brew cask list) )
|
||||
echo "--> Group: ${group}"
|
||||
for install_args in "$@"; do
|
||||
pkg="$(package_name "$install_args")"
|
||||
|
||||
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[@]}
|
||||
if is_package_installed "$pkg"; then
|
||||
echo " Exists: ${pkg}"
|
||||
else
|
||||
echo " -> Installed: ${base}"
|
||||
echo " Installing: ${pkg}"
|
||||
install_package "$install_args"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
|
||||
#
|
||||
# Define packages
|
||||
#
|
||||
|
||||
local core_pkgs=(
|
||||
1password
|
||||
aerial
|
||||
alfred
|
||||
appcleaner
|
||||
bartender
|
||||
betterzip
|
||||
betterzipql
|
||||
emacs-pretest
|
||||
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
|
||||
)
|
||||
|
||||
local work_pkgs=(
|
||||
atom
|
||||
bbedit
|
||||
chromedriver
|
||||
cyberduck
|
||||
dash
|
||||
docker-edge
|
||||
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
|
||||
)
|
||||
|
||||
local personal_pkgs=(
|
||||
4k-video-downloader
|
||||
adium-beta
|
||||
android-file-transfer
|
||||
audio-hijack
|
||||
autodmg
|
||||
bowtie
|
||||
calibre
|
||||
chicken
|
||||
daisydisk
|
||||
deluge
|
||||
discord
|
||||
dropbox
|
||||
ethereum-wallet
|
||||
filebot
|
||||
gog-galaxy
|
||||
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
|
||||
)
|
||||
|
||||
#
|
||||
# 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 "$@"
|
||||
|
||||
@@ -1,95 +1,134 @@
|
||||
#! /usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Settings
|
||||
PACKAGE_LIST_CMD="brew list"
|
||||
PACKAGE_INSTALL_CMD="brew install"
|
||||
|
||||
|
||||
#
|
||||
# Package list
|
||||
#
|
||||
|
||||
CORE_PKGS=(
|
||||
"aspell --with-lang-en --with-lang-el --with-lang-sv"
|
||||
"global --with-ctags --with-pygments"
|
||||
ack
|
||||
bash
|
||||
bazaar
|
||||
colordiff
|
||||
ctop
|
||||
dep
|
||||
dpkg
|
||||
geckodriver
|
||||
git
|
||||
git-crypt
|
||||
git-standup
|
||||
go
|
||||
goreleaser/tap/goreleaser
|
||||
heroku
|
||||
htop
|
||||
httpie
|
||||
jq
|
||||
kubernetes-cli
|
||||
kubernetes-helm
|
||||
less
|
||||
mysql
|
||||
openshift-cli
|
||||
peco
|
||||
pyenv
|
||||
rbenv
|
||||
rclone
|
||||
readline
|
||||
reattach-to-user-namespace
|
||||
redis
|
||||
ruby-build
|
||||
shellcheck
|
||||
source-highlight
|
||||
sshfs
|
||||
the_silver_searcher
|
||||
thefuck
|
||||
tmux
|
||||
tree
|
||||
watch
|
||||
wget
|
||||
yank
|
||||
zsh
|
||||
)
|
||||
|
||||
PERSONAL_PKGS=(
|
||||
"mkvtoolnix --with-qt"
|
||||
)
|
||||
|
||||
|
||||
#
|
||||
# Main
|
||||
#
|
||||
|
||||
main() {
|
||||
cache_installed_packages
|
||||
|
||||
install_packages "core" "${CORE_PKGS[@]}"
|
||||
|
||||
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
|
||||
|
||||
[ -z "$INSTALLED_PACKAGES" ] && INSTALLED_PACKAGES=( $(brew list) )
|
||||
echo "--> Group: ${group}"
|
||||
for install_args in "$@"; do
|
||||
pkg="$(package_name "$install_args")"
|
||||
|
||||
echo "==> ${group} packages"
|
||||
for pkg in "$@"; do
|
||||
local base=$(echo $pkg | awk '{print $1}')
|
||||
local found=""
|
||||
|
||||
for i in ${INSTALLED_PACKAGES[@]}; do
|
||||
[[ "$base" == "$i" ]] && found=1
|
||||
done
|
||||
|
||||
if [ -z "$found" ]; then
|
||||
echo "--> Missing: ${base}"
|
||||
brew install ${pkg[@]}
|
||||
if is_package_installed "$pkg"; then
|
||||
echo " Exists: ${pkg}"
|
||||
else
|
||||
echo "--> Installed: ${base}"
|
||||
echo " Installing: ${pkg}"
|
||||
install_package "$install_args"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
|
||||
#
|
||||
# Define packages
|
||||
#
|
||||
|
||||
local core_pkgs=(
|
||||
"aspell --with-lang-en --with-lang-el --with-lang-sv"
|
||||
"global --with-ctags --with-pygments"
|
||||
ack
|
||||
bash
|
||||
bazaar
|
||||
colordiff
|
||||
ctop
|
||||
dep
|
||||
dpkg
|
||||
geckodriver
|
||||
git
|
||||
git-crypt
|
||||
git-standup
|
||||
go
|
||||
goreleaser/tap/goreleaser
|
||||
heroku
|
||||
htop
|
||||
httpie
|
||||
jq
|
||||
kubernetes-cli
|
||||
kubernetes-helm
|
||||
less
|
||||
mysql
|
||||
openshift-cli
|
||||
peco
|
||||
pyenv
|
||||
rbenv
|
||||
rclone
|
||||
readline
|
||||
reattach-to-user-namespace
|
||||
redis
|
||||
ruby-build
|
||||
shellcheck
|
||||
source-highlight
|
||||
sshfs
|
||||
the_silver_searcher
|
||||
thefuck
|
||||
tmux
|
||||
tree
|
||||
watch
|
||||
wget
|
||||
yank
|
||||
zsh
|
||||
)
|
||||
|
||||
local personal_pkgs=(
|
||||
"mkvtoolnix --with-qt"
|
||||
)
|
||||
|
||||
#
|
||||
# Install packages
|
||||
#
|
||||
|
||||
install_packages "core" "${core_pkgs[@]}"
|
||||
|
||||
if [[ " $* " == *" personal "* ]]; then
|
||||
install_packages "personal" "${personal_pkgs[@]}"
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user