141 lines
3.4 KiB
Bash
Executable File
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
|