96 lines
2.9 KiB
Bash
Executable file
96 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
|