X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-pkgdeps;fp=zpm-pkgdeps;h=b1ea0ce58ec551278a1d110bdfb22699ed07b10d;hb=09490cd2433e3c37a0d85220b4f12f01e6740d46;hp=0000000000000000000000000000000000000000;hpb=b6f9b692cd319ffbe43fbd191b13613532d82e37;p=zpackage diff --git a/zpm-pkgdeps b/zpm-pkgdeps new file mode 100755 index 0000000..b1ea0ce --- /dev/null +++ b/zpm-pkgdeps @@ -0,0 +1,71 @@ +#!/bin/sh + +add= +remove= +setlist= +quiet=0 +clearlist=0 + +while getopts :f:s:a:r:qc opt; do + case $opt in + f) pkgfile="$OPTARG" ;; + s) setlist="$setlist $OPTARG"; clearlist=1 ;; + a) add="$add $OPTARG"; ;; + r) remove="$remove $OPTARG" ;; + q) quiet=1 ;; + c) clearlist=1 ;; + esac +done +shift $(( OPTIND - 1)) + +: ${pkgfile:=${ZPMDB:-/var/lib/zpm/local.db}} + +if [ -z "$pkgfile" ]; then + echo "must specify package file" + exit 1 +fi + +pkgid=$(zpm findpkg -f $pkgfile "$1") +if [ -z "$pkgid" ]; then + echo "cannot find pkgid for $1" + exit 1 +fi + +eval $(zpm parse -E "$pkgid") +package=$(zpm quote -q "$name") +version=$(zpm quote -q "$version") +pkgselector="package = $package and version = $version and release = $release" +listdeps="select requires from packagedeps where %s;\n" +adddep='insert or ignore into packagedeps (package,version,release,requires) values (%s,%s,%d,%s);\n' +rmdep='delete from packagedeps where %s and requires = %s;\n' +cleardeps='delete from packagedeps where %s;\n' + +{ + printf ".bail on\n"; + printf "begin;\n"; +if [ $clearlist -eq 1 ]; then + printf "$cleardeps" "$pkgselector" +fi +if [ -n "$setlist" ]; then + for dep in $setlist; do + qdep=$(zpm quote -q "$dep") + printf "$adddep" "$package" "$version" "$release" "$qdep" + done +fi +if [ -n "$add" ]; then + for dep in $add; do + qdep=$(zpm quote -q "$dep") + printf "$adddep" "$package" "$version" "$release" "$qdep" + done +fi +if [ -n "$remove" ]; then + for dep in $remove; do + qdep=$(zpm quote -q "$dep") + printf "$rmdep" "$pkgselector" "$qdep" + done +fi +if [ $quiet -eq 0 ]; then + printf "$listdeps" "$pkgselector" +fi + printf "commit;\n"; +} | zpm shell $pkgfile