#!/bin/bash # # Simple app bootstrapping script #=== main function ============================================================ # NAME: main # DESCRIPTION: Display usage information for this script. # PARAMETERS: see usage function #============================================================================== PKG_TSV_FILE=${PKG_TSV_FILE:-bootstrap/packages.tsv} packages_repo="${BOOTSTRAP_PACKAGES:-$(grep -e ' R ' "$PKG_TSV_FILE" | cut -f1 -d' ' )}" packages_aur="${BOOTSTRAP_PACKAGES_AUR:-$(grep -e ' A ' "$PKG_TSV_FILE" | cut -f1 -d' ' )}" main() { local cmd="" local ret=0 case "$1" in -v | --version) printf "Package bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.3\n" ;; -h | --help) printf "Usage: install [-f|--force][-v|--version][-h|--help]\n\n-f Do not ask for any confirmations but force update and installation.\n" ;; -f | --force) install true ;; *) install false ;; esac shift $cmd "$@" ret=$((ret + $?)) exit $ret } install_yay() { # check for existing yay installation if type yay >/dev/null 2>&1; then echo "Existing yay installation found ..........................................." return fi # use tmp dir to make yay target=$(mktemp -d) git clone https://aur.archlinux.org/yay.git "$target" cd "$target" || exit makepkg -si } update_repos() { unattended="$1" if "$unattended"; then yay -Sqyy --noconfirm else yay -Syy fi } install_packages() { unattended="$1" if "$unattended"; then echo "$packages_repo" "$packages_aur" | yay -Squ --noconfirm --needed - else echo "$packages_repo" | yay -Squ --needed - echo "$packages_aur" | yay -S --needed - fi } install() { unattended=$1 echo "Beginning package bootstrap ..............................................." echo "Installing yay ............................................................" install_yay echo "Installing apps ..........................................................." update_repos "$unattended" install_packages "$unattended" echo "Done ......................................................................" } main "$@"