+++ /dev/null
-#!/bin/sh
-
-# edit package file metadata
-
-#zpm pkg -s packager=foo zpm
-
-# zpm pkg -f <pkgfile> zpm file/path configuration=1
-# 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/local.db}
-
-while getopts f: opt; do
- case $opt in
- f) pkgfile="$OPTARG" ;;
- esac
-done
-shift $((OPTIND - 1))
-
-if [ ! -f $pkgfile ]; then
- echo cannot find $pkgfile
- exit 1
-fi
-
-(
-rv=0
-
-{
-printf "begin;\n"
-while [ $# -gt 0 ]; do
- item=$1
- shift
- if [ -z "$pkgid" ]; then
- item=":${item#:}"
- elif [ -z "$path" ]; then
- item="/${item#/}"
- fi
-
- show=0
- case "$item" in
- :*)
- pkgid=$(zpm findpkg -f $pkgfile "${item#:}")
- if [ -z "$pkgid" ]; then
- warn "can't find pkgid ${item#:} in $pkgfile"
- break;
- fi
- continue
- ;;
- /*)
- path="$item"
- continue
- ;;
- *=*)
- field=${item%%=*}
- value=${item#*=}
- ;;
- *=)
- field=${item%%=*}
- value=
- ;;
- *)
- field=$item
- show=1
- ;;
- esac
-
- if [ -z "$path" ]; then
- warn "no package file path specified"
- break;
- fi
-
- vfield=$(zpm quote "$field")
-
- hasfield=$(zpm shell $pkgfile "select name from pragma_table_info('packagefiles_pkgid') where name = '$vfield';")
- if [ -z "$hasfield" ]; then
- warn "$field is not a valid packagefile field"
- break
- fi
-
- field=$(zpm quote -i "$field")
- vpath=$(zpm quote "$path")
- vpkg=$(zpm quote "$pkgid")
-
- haspath=$(zpm shell $pkgfile "select 1 from packagefiles_pkgid where pkgid = '$vpkg' and path = '$vpath';")
- if [ "$haspath" != 1 ]; then
- warn "$path not in $pkgid"
- break
- fi
-
- if [ $show -eq 1 ]; then
- printf "select %s from packagefiles_pkgid where pkgid = '%s' and path = '%s';\n" "$field" "$pkgid" "$vpath"
- 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 = '%s';\n" $field $value "$vpath"
-done
-
-if [ $rv -eq 0 ]; then
- printf "commit;\n"
-else
- printf "rollback;\n"
-fi
-
-#} | cat
-} | zpm shell $pkgfile
-exit $rv
-)