]> pd.if.org Git - zpackage/blob - zpm-pkgdeps
fix vercmp bugs
[zpackage] / zpm-pkgdeps
1 #!/bin/sh
2
3 add=
4 remove=
5 setlist=
6 quiet=0
7 clearlist=0
8
9 while getopts :f:s:a:r:qc opt; do
10         case $opt in
11                 f) pkgfile="$OPTARG" ;;
12                 s) setlist="$setlist $OPTARG"; clearlist=1 ;;
13                 a) add="$add $OPTARG"; ;;
14                 r) remove="$remove $OPTARG" ;;
15                 q) quiet=1 ;;
16                 c) clearlist=1 ;;
17         esac
18 done
19 shift $(( OPTIND - 1))
20
21 : ${pkgfile:=${ZPMDB:-/var/lib/zpm/local.db}}
22
23 if [ -z "$pkgfile" ]; then
24         echo "must specify package file"
25         exit 1
26 fi
27
28 pkgid=$(zpm findpkg -f $pkgfile "$1")
29 if [ -z "$pkgid" ]; then
30         echo "cannot find pkgid for $1"
31         exit 1
32 fi
33
34 eval $(zpm parse -E "$pkgid")
35 package=$(zpm quote -q "$name")
36 version=$(zpm quote -q "$version")
37 pkgselector="package = $package and version = $version and release = $release"
38 listdeps="select requires from packagedeps where %s;\n"
39 adddep='insert or ignore into packagedeps (package,version,release,requires) values (%s,%s,%d,%s);\n'
40 rmdep='delete from packagedeps where %s and requires = %s;\n'
41 cleardeps='delete from packagedeps where %s;\n'
42
43 {
44         printf ".bail on\n";
45         printf "begin;\n";
46 if [ $clearlist -eq 1 ]; then
47         printf "$cleardeps" "$pkgselector"
48 fi
49 if [ -n "$setlist" ]; then
50         for dep in $setlist; do
51                 qdep=$(zpm quote -q "$dep")
52                 printf "$adddep" "$package" "$version" "$release" "$qdep"
53         done
54 fi
55 if [ -n "$add" ]; then
56         for dep in $add; do
57                 qdep=$(zpm quote -q "$dep")
58                 printf "$adddep" "$package" "$version" "$release" "$qdep"
59         done
60 fi
61 if [ -n "$remove" ]; then
62         for dep in $remove; do
63                 qdep=$(zpm quote -q "$dep")
64                 printf "$rmdep" "$pkgselector" "$qdep"
65         done
66 fi
67 if [ $quiet -eq 0 ]; then
68         printf "$listdeps" "$pkgselector"
69 fi
70         printf "commit;\n";
71 } | zpm shell $pkgfile