143 lines
2.5 KiB
Bash
Executable File
143 lines
2.5 KiB
Bash
Executable File
#!/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
|