Refactor bootstrap-homebrew and bootstrap-caskroom scripts

This commit is contained in:
2018-05-12 23:00:23 +01:00
parent 9b732bfe53
commit d0a63b795f
2 changed files with 317 additions and 241 deletions

View File

@@ -1,39 +1,16 @@
#! /usr/bin/env bash #! /usr/bin/env bash
set -e set -e
install_packages() { # Settings
local group="$1" PACKAGE_LIST_CMD="brew cask list"
shift 1 PACKAGE_INSTALL_CMD="brew cask install"
[ -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 # Package list
# #
local core_pkgs=( CORE_PKGS=(
1password 1password
aerial aerial
alfred alfred
@@ -65,7 +42,7 @@ main() {
vlc vlc
) )
local work_pkgs=( WORK_PKGS=(
atom atom
bbedit bbedit
chromedriver chromedriver
@@ -96,7 +73,7 @@ main() {
visual-studio-code visual-studio-code
) )
local personal_pkgs=( PERSONAL_PKGS=(
4k-video-downloader 4k-video-downloader
adium-beta adium-beta
android-file-transfer android-file-transfer
@@ -156,19 +133,79 @@ main() {
yakyak yakyak
) )
# #
# Install packages # Main
# #
install_packages "core" "${core_pkgs[@]}" main() {
cache_installed_packages
install_packages "core" "${CORE_PKGS[@]}"
if [[ " $* " == *" work "* ]]; then if [[ " $* " == *" work "* ]]; then
install_packages "work" "${work_pkgs[@]}" install_packages "work" "${WORK_PKGS[@]}"
fi fi
if [[ " $* " == *" personal "* ]]; then if [[ " $* " == *" personal "* ]]; then
install_packages "personal" "${personal_pkgs[@]}" install_packages "personal" "${PERSONAL_PKGS[@]}"
fi 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 "$@" main "$@"

View File

@@ -1,37 +1,16 @@
#! /usr/bin/env bash #! /usr/bin/env bash
set -e set -e
install_packages() { # Settings
local group="$1" PACKAGE_LIST_CMD="brew list"
shift 1 PACKAGE_INSTALL_CMD="brew install"
[ -z "$INSTALLED_PACKAGES" ] && INSTALLED_PACKAGES=( $(brew list) )
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[@]}
else
echo "--> Installed: ${base}"
fi
done
}
main() {
# #
# Define packages # Package list
# #
local core_pkgs=( CORE_PKGS=(
"aspell --with-lang-en --with-lang-el --with-lang-sv" "aspell --with-lang-en --with-lang-el --with-lang-sv"
"global --with-ctags --with-pygments" "global --with-ctags --with-pygments"
ack ack
@@ -77,19 +56,79 @@ main() {
zsh zsh
) )
local personal_pkgs=( PERSONAL_PKGS=(
"mkvtoolnix --with-qt" "mkvtoolnix --with-qt"
) )
# #
# Install packages # Main
# #
install_packages "core" "${core_pkgs[@]}" main() {
cache_installed_packages
install_packages "core" "${CORE_PKGS[@]}"
if [[ " $* " == *" personal "* ]]; then if [[ " $* " == *" personal "* ]]; then
install_packages "personal" "${personal_pkgs[@]}" install_packages "personal" "${PERSONAL_PKGS[@]}"
fi 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 "$@" main "$@"