X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-pathmod;fp=zpm-pathmod;h=0000000000000000000000000000000000000000;hb=0419c62f964b259df1c1816f5870ef62eb97ed7c;hp=90c29c1d750ef9051e361c87f1d87bb977375c5a;hpb=0c2216d1e0dc8565a6bf61c9572e47bb1ae1c1fb;p=zpackage diff --git a/zpm-pathmod b/zpm-pathmod deleted file mode 100755 index 90c29c1..0000000 --- a/zpm-pathmod +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/sh - -# edit package metadata - -#zpm pkg -s packager=foo zpm - -# zpm pkg -f zpm path packager=xyz -# zpm pkg zpm packager zyz -# zpm pkg zpm packager - -warn() { - printf '%s:' "$0" 1>&2 - printf ' %s' $* 1>&2 - printf '\n' 1>&2 - rv=1 -} - -die() { - printf '%s:' "$0" 1>&2 - printf ' %s' $* 1>&2 - printf '\n' 1>&2 - exit 1 -} - -pkgfile=${ZPMDB:-/var/lib/zpm/db.zpm} - -pathglob=0 - -while getopts f:g opt; do - case $opt in - f) pkgfile="$OPTARG" ;; - g) pathglob=1 ;; - esac -done -shift $((OPTIND - 1)) - -if [ $pathglob -eq 1 ]; then - pathop='glob' -else - pathop='=' -fi - -set -e - -if [ ! -f $pkgfile ]; then - echo cannot find $pkgfile - exit 1 -fi - -item=$1 -shift -#printf "pkg: %s\n" $pkg -pkgid=$(zpm findpkg -f $pkgfile "$item") - -if [ -z "$pkgid" ]; then - die "can't find pkgid for $item in $pkgfile" -fi - -path=$1 -shift -path=$(zpm quote "$path") - -( -rv=0 - -{ -printf "begin;\n" -while [ $# -gt 0 ]; do - item=$1 - shift - show=0 - case "$item" in - :*) - pkgid=$(zpm findpkg -f $pkgfile "${item#:}") - continue - ;; - +*) - path="${item#+}" - path=$(zpm quote "$path") - continue - ;; - *=*) - field=${item%%=*} - value=${item#*=} - ;; - *=) - field=${item%%=*} - value= - ;; - *) - field=$item - show=1 - ;; - esac - - # TODO if field = pkgid, parse and set - # TODO if changing pkgid, and it doesn't exist, better error - # message - - if [ -z "$pkgid" ]; then - warn "can't find pkgid for $item in $pkgfile" - break; - fi - - if [ $field = delete ]; then - printf "delete from packagefiles_pkgid where pkgid = '%s' and path $pathop '%s';\n" "$pkgid" "$path" - else - vfield=$(zpm quote "$field") - - hasfield=$(zpm shell $pkgfile "select name from pragma_table_info('packagefiles') where name = '$vfield';") - if [ -z "$hasfield" ]; then - warn "$field is not a valid packagefile field" - break - fi - - field=$(zpm quote -i "$field") - - if [ $show -eq 1 ]; then - printf "select %s from packagefiles_pkgid where pkgid = '%s' and path $pathop '$path';\n" "$field" "$pkgid" - continue - fi - - if [ -z "$value" ]; then - value=NULL - else - value=$(zpm quote -q "$value") - fi - - printf "update packagefiles_pkgid set %s = %s where pkgid = '$pkgid' and path $pathop '$path';\n" $field $value - fi -done - -if [ $rv -eq 0 ]; then - printf "commit;\n" -else - printf "rollback;\n" -fi - -} | zpm shell $pkgfile -exit $rv -)