mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 01:46:43 +00:00
135 lines
1.9 KiB
Bash
Executable File
135 lines
1.9 KiB
Bash
Executable File
#! /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
|
|
ansible
|
|
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
|
|
lua
|
|
luarocks
|
|
mysql
|
|
openshift-cli
|
|
peco
|
|
pyenv
|
|
rbenv
|
|
rclone
|
|
readline
|
|
reattach-to-user-namespace
|
|
redis
|
|
ruby-build
|
|
shellcheck
|
|
source-highlight
|
|
sshfs
|
|
the_silver_searcher
|
|
tmux
|
|
tree
|
|
watch
|
|
wget
|
|
yank
|
|
yarn
|
|
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
|
|
|
|
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 "$@"
|