#!/bin/bash set -e UNAME=$(sh -c 'uname 2>/dev/null || echo Unknown') declare -A SKIP=() POSITIONAL=() while [[ $# -gt 0 ]]; do key="$1" case $key in -s|--skip) shift # past argument SKIP["$1"]=1 shift # past value ;; *) # unknown option POSITIONAL+=("$1") # save it in an array for later shift # past argument ;; esac done declare -A RUN=() for command in "pacman" "apt" "flatpak" "gem" "nvim" "asdf" "brew" "pacman"; do echo $command if type $command > /dev/null 2>&1 then if [ "${SKIP[$command]}" = "1" ]; then RUN[$command]=0 else RUN[$command]=1 fi else RUN[$command]=0 fi done # Special case for vim if type -f vim > /dev/null 2>&1 then if [ "${SKIP[vim]}" = "1" ]; then RUN[vim]=0 else RUN[vim]=1 fi else RUN[vim]=0 fi if [ "${RUN[pacman]}" = "1" ] then # Clear out orphans sudo pacman -Rns $(pacman -Qtdq) # Update arch packages sudo pacman -Syu # Update AUR packages aurfetch update-all -q fi if [ "${RUN[apt]}" = "1" ] then # Clear out orphans sudo apt autoremove # Update apt packages sudo apt update sudo apt full-upgrade # Clear out orphans sudo apt autoremove fi if [ "${RUN[flatpak]}" = "1" ] then # Clear out unused flatpak apps flatpak uninstall --unused # Update flatpak packages flatpak update # Clear out unused flatpak apps once again flatpak uninstall --unused fi if [ "${RUN[gem]}" = "1" ] then gem update --system gem update fi if [ "${RUN[nvim]}" = "1" ] then nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync' fi if [ "${RUN[vim]}" = "1" ] then command vim +PlugUpdate +qall fi if [ "${RUN[asdf]}" = "1" ] then asdf update asdf plugin-update --all echo "========== ASDF UPDATES ==========" echo "Available updates: " while IFS= read -r PKG; do if [ $(echo "$PKG" | cut -f3) = "missing" ]; then PKG_NAME=$(echo "$PKG" | cut -f1) if [ "$PKG_NAME" != "java" -a "$PKG_NAME" != "ruby" ]; then PKG_VER=$(echo $PKG | cut -f2) echo " $PKG_NAME - $PKG_VER (install with 'asdf install $PKG_NAME $PKG_VER' and set as global default with 'asdf global $PKG_NAME $PKG_VER')" fi fi done <<< "$(asdf latest --all)" echo "========== ASDF UPDATES ==========" fi if [ "${RUN[brew]}" = "1" ] then brew update brew upgrade if [ "$UNAME" = "Darwin" ]; then brew upgrade --cask fi if [ $? -eq 0 ]; then echo $( date +%s ) > $MY_CONFIG_CACHE_DIR/brew-upgrade-date fi fi if [ "${RUN[pacman]}" = "1" ] then # Clear out orphans once again sudo pacman -Rns $(pacman -Qtdq) fi