]> pd.if.org Git - zpackage/blobdiff - zpm-rmpackage
switch to blake2
[zpackage] / zpm-rmpackage
index 1292eda98dc7be6d592efc652a919e4160bb5843..98eac6ee48b53f75a21738df9961377e2054dafc 100755 (executable)
@@ -5,17 +5,21 @@ pkgfile=${ZPM_PACKAGE_FILE:-${ZPMDB:-/var/lib/zpm/local.db}}
 verbose=0
 
 # newpackage -f pkgfile $pkgid
-while getopts :f:vm: opt; do
+while getopts :f:vm:s:S: opt; do
        case $opt in
                f) pkgfile="$OPTARG" ;;
                v) verbose=1 ;;
-               m) message=$(zpm quote "$OPTARG") ;;
+               m) message="$OPTARG" ;;
+               s) status="$status -s $OPTARG" ;;
+               S) exclude="$exclude -S $OPTARG" ;;
        esac
 done
 shift $(( OPTIND - 1))
 
 if [ -z "$message" ]; then
        message=null
+else
+       message=$(zpm quote -q "$message")
 fi
 
 die() {
@@ -33,21 +37,21 @@ fi
 
 {
        printf ".bail on\n"
+       printf ".echo on\n"
        printf "begin;\n"
        for pkgstr in "$@"; do
-               pkgid=$(zpm findpkg -f $pkgfile "$pkgstr")
+               pkgid=$(zpm findpkg $status $exclude -f $pkgfile "$pkgstr")
+               if [ -z "$pkgid" ]; then
+                       continue;
+               fi
                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"
-               printf "insert into zpmlog (action, target, info) values (%s,'%s',%s);\n" 'rmpackage', "$pkgid", "$message"
+               printf "insert into zpmlog (action, target, info) values ('rmpackage','%s',%s);\n" "$pkgid" "$message"
        done
        printf "commit;\n"
 } | zpm shell $pkgfile