mirror of
https://github.com/notwa/rc
synced 2024-11-05 06:39:02 -08:00
127 lines
3.3 KiB
Bash
Executable file
127 lines
3.3 KiB
Bash
Executable file
#!/bin/bash
|
|
# http://aur.sh with massive feature creep
|
|
aur() {
|
|
trap 'exit 1' SIGINT SIGTERM
|
|
|
|
local bd="${BUILDDIR:-$PWD}"
|
|
local fail=0 has_sudo=0
|
|
which sudo >&/dev/null && has_sudo=1
|
|
if [ $has_sudo -eq 0 ] && [ -z "$MSYSTEM" ]; then
|
|
echo get sudo pls >&2
|
|
return 1
|
|
fi
|
|
|
|
local o_download=1 o_edit=1 o_make=1 o_install=1
|
|
local o_any_arch=1 o_sudo=1 o_force=0 o_yes=0 o_jobs=0
|
|
local o_all_at_once=0 o_install_anyway=0
|
|
local opt=
|
|
while getopts 'demiasfyoIj:h' opt; do
|
|
case $opt in
|
|
d) o_download=0;;
|
|
e) o_edit=0;;
|
|
m) o_make=0;;
|
|
i) o_install=0;;
|
|
a) o_any_arch=0;;
|
|
s) o_sudo=0;;
|
|
f) o_force=1;;
|
|
y) o_yes=1;;
|
|
o) o_all_at_once=1;;
|
|
I) o_install_anyway=1;;
|
|
j) let o_jobs++;;
|
|
?) local fd=0
|
|
[ $opt = h ] && fd=0 || fd=2
|
|
echo -E "usage: $0 TODO" >&$fd
|
|
[ $opt = h ] && return 0 || return 1;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
# TODO: option to auto install dependencies
|
|
|
|
local built=
|
|
for p in "$@"; do
|
|
cd "$bd"
|
|
local download_fail=0
|
|
local targz="$p-aur.tar.gz"
|
|
if [ $o_download -eq 1 ]; then
|
|
curl -fsS \
|
|
"https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz" \
|
|
> "$targz"
|
|
[ $? -eq 0 ] && tar xzf "$targz" || download_fail=1
|
|
fi
|
|
if [ $download_fail -eq 1 ]; then
|
|
[ -e "$targz" ] && rm "$targz"
|
|
fail=1
|
|
continue
|
|
fi
|
|
|
|
cd $p
|
|
if [ $o_edit -eq 1 ]; then
|
|
if [ $o_yes -eq 1 ]; then
|
|
$EDITOR PKGBUILD
|
|
else
|
|
echo "Edit $p"
|
|
confirm && e PKGBUILD
|
|
fi
|
|
fi
|
|
|
|
local success=0
|
|
if [ $o_make -eq 1 ]; then
|
|
local cmd=makepkg
|
|
if [ $o_any_arch -eq 1 ]; then
|
|
cmd="$cmd -A"
|
|
fi
|
|
if [ $o_force -eq 1 ]; then
|
|
cmd="$cmd -f"
|
|
fi
|
|
if [ $o_sudo -eq 1 ] && [ $has_sudo -eq 1 ]; then
|
|
cmd="sudo -u $USER $cmd"
|
|
fi
|
|
if [ $o_jobs -gt 0 ]; then
|
|
cmd="$cmd MAKEFLAGS=-j$o_jobs"
|
|
fi
|
|
|
|
if [ $o_yes -eq 1 ]; then
|
|
$cmd && success=1
|
|
else
|
|
echo "Make $p"
|
|
if confirm; then
|
|
$cmd && success=1
|
|
else
|
|
success=1
|
|
fi
|
|
fi
|
|
fi
|
|
if [ $success -eq 0 ] && [ $o_install_anyway -eq 0 ]; then
|
|
fail=1
|
|
continue
|
|
fi
|
|
|
|
if [ $o_install -eq 1 ]; then
|
|
recent="$(ls -c *.xz | head -1)"
|
|
built="$built $p/$recent"
|
|
fi
|
|
done
|
|
|
|
cd "$bd"
|
|
if [ -n "$built" ] && [ $o_install -eq 1 ]; then
|
|
if [ $o_all_at_once -eq 1 ]; then
|
|
if [ $has_sudo -eq 1 ]; then
|
|
sudo pacman -U $built
|
|
else
|
|
pacman -U $built
|
|
fi
|
|
else
|
|
for recent in $built; do
|
|
if [ $has_sudo -eq 1 ]; then
|
|
sudo pacman -U "$recent"
|
|
else
|
|
pacman -U "$recent"
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
|
|
[ "$fail" -eq 0 ] && return 0 || return 1
|
|
}
|
|
aur "$@"
|