mkpk

Систем за управљање пакетима који користи mk из система Plan9
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување c0d480678bdc6a38fa1e4b3c34544dcc3ef06e3f
родитељ bc6588547982dc47dc71b8849f9d32a8723b4612
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Tue,  2 Aug 2022 15:23:36 +0200

Add package database

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mlib/defaults.mk | 1+
Mlib/install.mk | 13++++++++++---
Mlib/uninstall.mk | 10++++++++--
Mmkfile | 4++++
измењених датотека: 4, додавања: 23(+), брисања: 5(-)

diff --git a/lib/defaults.mk b/lib/defaults.mk @@ -9,6 +9,7 @@ DOCDIR= /share/doc/$PKG LEGALDIR= /share/legal/$PKG PKGDIR= /pkg SRCBASEDIR= /src +PKGDB= $PKGDIR/pkgdb.tsv SUCKS= $DESTDIR/sucks SUCKSBIN= $SUCKS/bin diff --git a/lib/install.mk b/lib/install.mk @@ -1,12 +1,19 @@ <$mkpklib/defaults.mk install-package:QV: - pkg=$(find "$PKGDIR" -name "$PKGBASE-*.tar.xz") + pkg=$(find "${PKGDIR}" -name "${PKGBASE}-*.tar.xz") if [ -z "${pkg}" ]; then - printf "Cannot find package %s" "$PKGBASE" >&2 + printf "Cannot find package %s\n" "${PKGBASE}" >&2 + exit 1 + elif [ -n "$(grep "^${PKGBASE}\t" "${PKGDB}" 2>/dev/null)" ]; then + printf "Package %s already installed\n" "${PKGBASE}" >&2 exit 1 else cd / - printf " TAR/XZ\t%s\n" "${pkg}" + printf " TAR\t%s\n" "${pkg}" xz -dc "${pkg}" | tar -xf - 2>/dev/null + printf " UPD\t%s\n" "${PKGDB}" + printf "%s\t%s\t%s\n" "${PKGBASE}" \ + "$(echo "${pkg}" | sed "s,${PKGBASE}-,,")" \ + "$(date +'%Y-%m-%d %T')" >>"${PKGDB}" fi diff --git a/lib/uninstall.mk b/lib/uninstall.mk @@ -1,9 +1,12 @@ <$mkpklib/defaults.mk uninstall-package:QV: - pkg=$(find "$PKGDIR" -name "$PKGBASE-*.tar.xz") + pkg=$(find "${PKGDIR}" -name "${PKGBASE}-*.tar.xz") if [ -z "${pkg}" ]; then - printf "Cannot find package %s" "$PKGBASE" >&2 + printf "Cannot find package %s\n" "${PKGBASE}" >&2 + exit 1 + elif [ -z "$(grep "^${PKGBASE}\t" "${PKGDB}" 2>/dev/null)" ]; then + printf "Package %s is not installed\n" "${PKGBASE}" >&2 exit 1 else cd / @@ -15,4 +18,7 @@ uninstall-package:QV: printf " RM\t%s\n" "${item}" rm "${item}" done + printf " UPD\t%s\n" "${PKGDB}" + mv "${PKGDB}" "${PKGDB}"~ + sed "/^${PKGBASE}/d" < "${PKGDB}"~ >"${PKGDB}" fi diff --git a/mkfile b/mkfile @@ -5,6 +5,10 @@ DOCS= README SCRIPTS= mkpk install:QV: + if [ ! -e "$PKGDB" ]; then + printf " GEN\t%s\n" "$PKGDB" + printf "Package\tVersion\tInstallation Date\n" >"$PKGDB" + fi for mkfile in $MKFILES; do printf " INST\t%s\n" $DESTDIR/$mkfile install -Dm0644 lib/$mkfile $DESTDIR/$mkfile