#!/usr/bin/env bash clean=false fetch=false minimal=false noconfirm=false pull=false update=false verbose=false for arg in "$@"; do if [[ $arg == "-c" ]] || [[ $arg == "--clean" ]]; then clean=true elif [[ $arg == "-f" ]] || [[ $arg == "--fetch" ]]; then fetch=true elif [[ $arg == "-m" ]] || [[ $arg == "--minimal" ]]; then minimal=true elif [[ $arg == "--noconfirm" ]]; then noconfirm=true elif [[ $arg == "--pull" ]]; then pull=true elif [[ $arg == "-u" ]] || [[ $arg == "--update" ]]; then update=true elif [[ $arg == "-v" ]] || [[ $arg == "--verbose" ]]; then verbose=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: -c, --clean Do 'git reset HEAD --hard' and 'git clean -fdx'. -f, --fetch Fetch the latest change from the upstream repos. -m, --minimal Only show directories in need for an update. -u, --update If an update is needed, 'makepkg -si'. --noconfirm Pass the --noconfirm option to 'makepkg -si', if using the -u/--update option --pull Pull the latest changes from the repo before running any command. Note that this might fail! -v, --verbose Don't suppress the output of any command run within the script." exit 0 fi done for dir in *; do if [ -d "$dir" ]; then cd $dir if $fetch; then if $verbose; then git fetch --all else git fetch --all --quiet fi 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 $pull; then if $verbose; then git pull --all else git pull --all --quiet fi 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 fi fi if $clean; then if $verbose; then git reset HEAD --hard git clean -fdx else git reset HEAD --hard --quiet git clean -fdx --quiet fi fi cd .. fi done