spkg/spkg
2021-07-02 03:25:46 +02:00

120 lines
2.9 KiB
Bash
Executable file

#!/bin/sh
source="https://git.hippoz.xyz/duck/repo/raw/branch/master"
tmpdir="/tmp"
setup() {
prefix=$1
mkdir "${prefix}"/bin
cp ./spkg "${prefix}"/bin/spkg
chmod +x "${prefix}"/bin/spkg
mkdir "${prefix}"/etc/
mv os-release "${prefix}"/etc/
mkdir "${prefix}"/var
mkdir "${prefix}"/var/cache
mkdir "${prefix}"/usr/
mkdir "${prefix}"/usr/share
mkdir "${prefix}"/usr/share/man
mkdir "${prefix}"/usr/share/man/man1 "${prefix}"/usr/share/man/man2 "${prefix}"/usr/share/man/man3 "${prefix}"/usr/share/man/man4 "${prefix}"/usr/share/man/man5 "${prefix}"/usr/share/man/man6 "${prefix}"/usr/share/man/man7 "${prefix}"/usr/share/man/man8 "${prefix}"/usr/share/man/man9
install -Dm644 ./man /usr/share/man1/spkg.1
}
removepkg() {
pkgname=$1
prefix=$2
cd /usr/src/"${pkgname}" || exit 2
{
. ./PACKAGE
"pkg_uninstall" "${prefix}"
}
sed "s/${pkgname} ${pkg_ver}//" "${prefix}"/var/cache/spkg.cache
}
instpkg() {
pkgname=$1
prefix=$2
mkdir -p "${tmpdir}"/spkg/work/"${1}"-work/
cd "${tmpdir}"/spkg/work/"${1}"-work/ || exit 2
mkdir -p "${prefix}"/usr/src/"${pkgname}"
wget -O "${prefix}"/usr/src/"${pkgname}" "${source}"/"${pkgname}"/PACKAGE
cd "${prefix}"/usr/src/"${pkgname}" || exit 2
export PREFIX="${prefix}"
export PKGNAME="${pkgname}"
{
. ./PACKAGE
"pkg_install" "${prefix}"
}
sed a\ "${pkgname} ${pkg_ver}" "${prefix}"/var/cache/spkg.cache > "${prefix}"/var/cache/spkg.cache
}
update() {
pkgname=$1
prefix=$2
version1=$(grep "${pkgname}" /var/cache/spkg.cache)
version2=$(wget "${source}"/spkg.cache /tmp/spkg/web.spkg.cache && grep "${pkgname}" /tmp/spkg/web.spkg.cache )
if [ "$version1" = "${version2}" ]; then
echo 'Up to date.'
else
instpkg "${pkgname}" "${prefix}"
fi
}
dbquery() {
pkgname=$1
wget "${source}"/spkg.cache /tmp/spkg/web.spkg.cache
grep "${pkgname}" /tmp/spkg/web.spkg.cache
rm /tmp/spkg/cache || mkdir 2>/dev/null /tmp/spkg
}
dblocal() {
pkgname=$1
grep "${pkgname}" /var/cache/spkg.cache
}
dblist() {
cat /var/cache/spkg.cache
}
usage() {
echo ' How to use: install to install, update to update, list to list, remove to remove. '
}
version() {
echo "spkg 21.07.02.1a"
}
case "${1}" in
setup)
case "${2}" in
--root-dir) setup "${3}" ;;
*) setup "/" ;;
esac ;;
remove)
case "${2}" in
--root-dir) removepkg "${3}" "${4}" ;;
*) removepkg "${3}" "/" ;;
esac ;;
install)
case "${2}" in
--root-dir) instpkg "${4}" "${3}" ;;
*) instpkg "${3}" "/" ;;
esac ;;
cache)
case "${2}" in
clean)
rm -rf /usr/src/* ;;
rm)
rm -rf /usr/src/"${3}" ;;
save)
case ${3} in
to) cp -rv /usr/src/* "${4}"/ ;;
esac ;;
database)
case "${3}" in
lookup)
case "${4}" in
local)
dblocal "${5}" ;;
query)
dbquery "${5}" ;;
esac;;
esac ;;
esac ;;
list)
dblist ;;
update)
update "${2}" ;;
--help)
usage ;;
--version)
version ;;
esac