]> pd.if.org Git - zpackage/blob - zpm-list
add zpm-list
[zpackage] / zpm-list
1 #!/bin/sh
2
3 # zpm-list [-s status] [-vn] [ -f pkgfile ] [pkgid ...]
4
5 verbose=0
6 nameonly=0
7
8 while getopts :s:f:vn opt; do
9         case $opt in
10                 f) pkgfile="$OPTARG" ;;
11                 s) status="$OPTARG" ;;
12                 v) verbose=1 ;;
13                 n) nameonly=1 ;;
14         esac
15 done
16 shift $(( OPTIND - 1))
17
18 : ${pkgfile:=$ZPMDB}
19
20 if [ -z "$pkgfile" ]; then
21         echo "must specify package file"
22         exit 1
23 fi
24
25 if [ -n "$status" ]; then
26         status=$(zpm quote "$status")
27 fi
28
29 if [ $nameonly -eq 0 ]; then
30         cols="pkgid"
31 else
32         cols="package"
33 fi
34
35 if [ $verbose -eq 1 ]; then
36         cols="$cols,coalesce(status,'-')"
37 fi
38
39 if [ -n "$status" ]; then
40         where="where status = '$status'"
41 fi
42
43 pkgid=$1
44
45 if [ -n "$pkgid" ]; then
46         eval $(zpm parse -E "$pkgid")
47         if [ -n "$package" ]; then
48                 package=$(zpm quote "$package")
49                 where="$where and package = '$package'"
50         fi
51         if [ -n "$version" ]; then
52                 version=$(zpm quote "$version")
53                 where="$where and version = '$version'"
54         fi
55         if [ -n "$release" ]; then
56                 release=$(zpm quote "$release")
57                 where="$where and release = '$release'"
58         fi
59 fi
60
61 zpm shell $pkgfile <<EOS
62 .separator "\t"
63 select $cols from packages_pkgid $where
64 ;
65 EOS
66