LiteAUR/liteaur

141 lines
3.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Pre-release toggle
PRERELEASE="true"
# Anti-root check
[ "$EUID" -eq 0 ] && echo "For security reasons, you cannot run this as root." && exit
case "$PRERELEASE" in
"true") printf "warning: a liteaur pre-release is being used\n" ;;
"*") ;;
esac
# Working directory for upgrading/installing packages
PKGCACHE=$HOME/.local/share/liteaur
# Config
CONFIGFOLDER=$HOME/.config/liteaur
# Version number
VERSION='1.8.0-pre4'
# Database lock
DBLCK="unable to lock database"
# Config-related stuff
source "$CONFIGFOLDER"/config.sh 2>/dev/null
# Source the zaura library and check if zaura is installed correctly
if [ -f /usr/share/zaura/zaura ]; then
source /usr/share/zaura/zaura
else
printf "error: zaura library not installed, please install it from upstream or aur.\n" 1>&2
exit 1
fi
mkdir -p "$PKGCACHE"
print() {
sym1="\033[1;32m==>\033[1;37m "
sym2="\033[1;31m==> "
sym3="\033[1;34m ->\033[0;37m "
case $1 in
e) printf "${sym2}ERROR: \033[1;37m%s\n" "$2" 2>&1 && exit 1 ;;
m) printf "${sym3} \033[1;37m%s\n" "$2" ;;
s) printf "${sym2}%s\n${sym3}%s\n${sym3}%s\n${sym3}%s\n${sym3}%s\n" "$2" "$3" "$4" "$5" "$6" ;;
esac
}
print_no_argument() {
print e "no operation provided (use -h for help)";
exit 1;
}
help() {
printf "%s\n" "usage: liteaur <operation> [...]
liteaur -i Install AUR package(s)
liteaur -r Remove package(s) from update cache
liteaur -u Upgrade all available AUR packages
liteaur -s Searches for a package in the AUR
liteaur -v Prints the version of LiteAUR
liteaur -h Shows this message"
}
search() {
zaura.aur.webrpc.search $1
}
zaura.aur.webrpc.search.print() {
print s "Package: $zaura_webrpc_packageName" "Maintainer: $zaura_webrpc_packageMaintainer" "Description: $zaura_webrpc_packageDescription" "Version: $zaura_webrpc_packageVersion" "Upstream URL: $zaura_webrpc_packageUpstream"
}
install_init() {
# No package provided
if [ -z "$1" ]; then
print e "no package provided";
exit 1;
# Checking if lck.db exists
else
if [ -f "$PKGCACHE/lck.db" ]; then
print e "${DBLCK}";
exit 1;
fi
fi
# Lock the database
touch "$PKGCACHE"/lck.db;
zaura.aur.clone $@
for var in "${@:1}"; do
verification_prompt
done
}
install_process() {
cd "$var" || exit
zaura.aur.install "$@"
rm -f "$PKGCACHE"/lck.db;
}
verification_prompt() {
trap 'rm -f ${PKGCACHE}/lck.db && rm -rf "${PKGCACHE}/${var}" && exit 2' 2;
less "$PKGCACHE/$var"/PKGBUILD;
read -p "Install $var? [y/N] ";
case $REPLY in
Y) install_process $var ;;
y) install_process $var ;;
*) rm -f $PKGCACHE/lck.db && rm -rf "$PKGCACHE/$var" && exit 1 ;;
esac
}
unimplemented() {
print e "unimplemented function"
}
update() {
if [ -f "$PKGCACHE/lck.db" ]; then
print e "${DBLCK}";
exit 1;
fi
zaura.aur.update
rm -f "$PKGCACHE"/lck.db;
}
removecache() {
for var in "${@:1}"; do
if [ -d "$PKGCACHE/$var" ]; then
print m "removing cached package: $var"
rm -rf "$PKGCACHE/$var"
print m "cached package successfully removed: $var"
rm -f "$PKGCACHE"/lck.db
exit 0
else
print e "package not in update cache: $var"
rm -f "$PKGCACHE"/lck.db;
exit 1;
fi
done
}
case $1 in
"-i") install_init "${@:2}" ;;
"-s") search "$2" ;;
"-u") update ;;
"-v") printf "LiteAUR ${VERSION} | zaura ${ZAURA_VERSION}\n" ;;
"-h") help ;;
"-r") removecache "${@:2}" ;;
* ) print_no_argument
esac