X-Git-Url: https://pd.if.org/git/?p=zpackage;a=blobdiff_plain;f=zpm-pkg;h=56bd581e96f19fe292d4a4754609f648d7897da1;hp=30630d3116149cc68af24df8d5a16a6b07f78d17;hb=09c80a1f8918d888063f4d1a75921a99fe5f0b5c;hpb=ce7282d6a4d481e5de9430fe34ad9772845b5f31 diff --git a/zpm-pkg b/zpm-pkg index 30630d3..56bd581 100755 --- a/zpm-pkg +++ b/zpm-pkg @@ -1,37 +1,114 @@ #!/bin/sh -package=${1:-$ZPMPACKAGE} -pkgver=${ZPMPKGVER:-1.0} -pkgrel=${ZPMPKGREL:-1} +# edit package metadata -while getopts :n:v:r:d:a:u:l:p:b: opt; do +#zpm pkg -s packager=foo zpm + +# zpm pkg -f zpm packager=xyz +# 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 - n) pkgfile="$OPTARG" ;; - v) pkgver="$OPTARG" ;; - r) pkgrel="$OPTARG" ;; - d) description="$OPTARG" ;; - a) arch="$OPTARG" ;; - u) url="$OPTARG" ;; - l) licenses="$OPTARG" ;; - p) packager="$OPTARG" ;; - b) builddate="$OPTARG" ;; + f) pkgfile="$OPTARG" ;; esac done - -pkgfile="$package-$pkgver-$pkgrel.zpm" +shift $((OPTIND - 1)) set -e if [ ! -f $pkgfile ]; then - zpm init $pkgfile + echo cannot find $pkgfile + exit 1 fi -for path in $*; do - hash=$(./zpm-addfile $pkgfile $path) +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 + +( +rv=0 + +{ +printf "begin;\n" +while [ $# -gt 0 ]; do + item=$1 + shift + show=0 + case "$item" in + :*) + pkgid=$(zpm findpkg -f $pkgfile "${item#:}") + continue + ;; + *=*) + field=${item%%=*} + value=${item#*=} + ;; + *=) + field=${item%%=*} + value= + ;; + *) + field=$item + show=1 + ;; + esac + + if [ -z "$pkgid" ]; then + warn "can't find pkgid for $item in $pkgfile" + break; + fi + + vfield=$(zpm quote "$field") + + hasfield=$(zpm shell $pkgfile "select name from pragma_table_info('packages') where name = '$vfield';") + if [ -z "$hasfield" ]; then + warn "$field is not a valid package field" + break + fi + + field=$(zpm quote -i "$field") -sqlite3 $pkgfile <