ambevar-dotfiles/.scripts/abs-fetch

108 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
HAS_ABS=0
HAS_YAOURT=0
[ -n "$(command -v abs)" ] && HAS_ABS=1
[ -n "$(command -v yaourt)" ] && HAS_YAOURT=1
if [ $HAS_ABS -eq 0 ] && [ $HAS_YAOURT -eq 0 ]; then
echo "Please install either an ABS-tree or yaourt."
exit 1
fi
_printhelp ()
{
cat <<EOF
Usage: ${1##*/} [OPTIONS] PACKAGES
Fetch PKGBUILDs from source tree (using ABS tree or yaourt if available) and extract source.
-a: Use 'abs' to fetch data.
-f: Overwrite folder if it exists.
-h: Display this help.
-y: Use 'yaourt' to fetch data.
Noteworthy parameters:
\$(pacman -Qmq)
\$(pacman -Qsq <search-string>)
EOF
}
DL_AGENT=-1 # Dynamic choice
CP_AGENT="/bin/cp -rnv"
while getopts ":hfy" opt; do
case $opt in
a)
DL_AGENT=0
;;
h)
_printhelp "$0"
exit 1
;;
f)
CP_AGENT="/bin/cp -rfv"
;;
y)
DL_AGENT=1
;;
?)
_printhelp "$0"
exit 1
;;
:)
echo "Missing argument."
_printhelp "$0"
exit 1
;;
esac
done
shift $(($OPTIND - 1))
if [ $# -eq 0 ]; then
echo "Missing argument."
_printhelp "$0"
exit 1
fi
if [ $DL_AGENT -eq -1 ]; then
for i; do
pacman -Si $i >/dev/null 2>&1
if [ $? -eq 0] && [ $HAS_ABS -eq 1 ]; then
[ ! -d "/var/abs" ] && sudo abs
eval "$CP_AGENT" /var/abs/*/$i .
(cd "$i" && makepkg -o)
else
yaourt -G "$i"
(cd "$i" && makepkg -o)
fi
done
exit 0
fi
if [ $DL_AGENT -eq 0 ]; then
if [ $HAS_ABS -eq 0 ]; then
echo "ABS needs to be installed."
exit
fi
[ ! -d "/var/abs" ] && sudo abs
for i; do
eval "$CP_AGENT" /var/abs/*/$i .
done
exit 0
fi
if [ $DL_AGENT -eq 1 ]; then
if [ $HAS_YAOURT -eq 0 ]; then
echo "Yaourt needs to be installed."
exit
fi
for i; do
yaourt -G "$@"
exit 0
fi