]> pd.if.org Git - zpackage/blobdiff - zpm-rmpackage
add rmpackage
[zpackage] / zpm-rmpackage
diff --git a/zpm-rmpackage b/zpm-rmpackage
new file mode 100755 (executable)
index 0000000..1cb3956
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+pkgfile=${ZPM_PACKAGE_FILE:-${ZPMDB:-/var/lib/zpm/local.db}}
+
+verbose=0
+
+# newpackage -f pkgfile $pkgid
+while getopts :f:v opt; do
+       case $opt in
+               f) pkgfile="$OPTARG" ;;
+               v) verbose=1 ;;
+       esac
+done
+shift $(( OPTIND - 1))
+
+die() {
+       echo $* 1>&2
+       exit 1
+}
+
+warn() {
+       echo $* 1>&2
+}
+
+if [ ! -f "$pkgfile" ]; then
+       die $pkgfile does not exist
+fi
+
+{
+       printf ".bail on\n"
+       printf "begin;\n"
+       for pkgstr in "$@"; do
+               pkgid=$(zpm findpkg -f $pkgfile "$pkgstr")
+               if [ $verbose -gt 0 ]; then
+                       if [ -z "$pkgid" ]; then
+                               warn "$pkgstr not found"
+                               continue;
+                       fi
+                       if [ $verbose -gt 1 ]; then
+                               warn "found %s -> %s\n" "$pkgstr", "$pkgid"
+                       fi
+               fi
+               pkgid=$(zpm quote "$pkgid")
+               printf "delete from packages_pkgid where pkgid = '$pkgid';\n"
+       done
+       printf "commit;\n"
+} | zpm shell $pkgfile