#!/usr/bin/env bash verbose=false minimal=false update=false noconfirm=false for arg in "$@"; do if [[ $arg == "-v" ]] || [[ $arg == "--verbose" ]]; then verbose=true elif [[ $arg == "-m" ]] || [[ $arg == "--minimal" ]]; then minimal=true elif [[ $arg == "-u" ]] || [[ $arg == "--update" ]]; then update=true elif [[ $arg == "--noconfirm" ]]; then noconfirm=true elif [[ $arg == "-h" ]] || [[ $arg == "--help" ]]; then echo "Helper script for the AUR directory, which tells you what packages need an update. Usage: ./update.sh [options] Options: -v, --verbose Don't suppress the output of any command run within the script. -m, --minimal Only show directories in need for an update. -u, --update If an update is needed, pull the new updates, 'makepkg -si' and afterwards 'git reset HEAD --hard' and 'git clean -fdx'. --noconfirm Pass the --noconfirm option to 'makepkg -si', if using the -u/--update option" exit 0 fi done for dir in *; do if [ -d "$dir" ]; then cd $dir if $verbose; then git fetch --all else git fetch --all > /dev/null fi BEHIND=$(git rev-list HEAD...origin/master --count) if [[ $BEHIND -eq 0 ]]; then if ! $minimal; then echo "[ ] $(pwd) is up to date" fi else echo "[X] $(pwd) is $BEHIND commits behind" if $update; then if $verbose; then git pull --all else git pull --all > /dev/null fi if $noconfirm; then if $verbose; then makepkg -si --noconfirm else makepkg -si --noconfirm > /dev/null fi else if $verbose; then makepkg -si else makepkg -si > /dev/null fi fi if $verbose; then git reset HEAD --hard git clean -fdx else git reset HEAD --hard > /dev/null git clean -fdx > /dev/null fi fi fi cd .. fi done