+++ /dev/null
-#!/bin/sh
-
-# edit package metadata
-
-#zpm pkg -s packager=foo zpm
-
-# zpm pkg -f <pkgfile> 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
-)