dotfiles/AUR/update

97 lines
2.9 KiB
Bash
Executable File

#!/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