120 lines
2.9 KiB
Bash
Executable file
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
|