X-Git-Url: https://pd.if.org/git/?p=zpackage;a=blobdiff_plain;f=bin%2Fzpm-list;fp=bin%2Fzpm-list;h=7ea697bf1e04ae1323dd33b373f3e9a04d561fca;hp=0000000000000000000000000000000000000000;hb=0419c62f964b259df1c1816f5870ef62eb97ed7c;hpb=0c2216d1e0dc8565a6bf61c9572e47bb1ae1c1fb diff --git a/bin/zpm-list b/bin/zpm-list new file mode 100755 index 0000000..7ea697b --- /dev/null +++ b/bin/zpm-list @@ -0,0 +1,74 @@ +#!/bin/sh + +# zpm-list [-s status] [-vn] [ -f pkgfile ] [pkgid ...] + +verbose=0 +nameonly=0 +latestonly=1 + +while getopts :s:f:vnIF: opt; do + case $opt in + f) pkgfile="$OPTARG" ;; + s) status="$OPTARG" ;; + I) status=installed ;; + v) verbose=1 ;; + n) nameonly=1 ;; + a) latestonly=0 ;; + F) filter="$OPTARG" ;; + esac +done +shift $(( OPTIND - 1)) + +: ${pkgfile:=${ZPMDB:-/var/lib/zpm/local.db}} + +if [ -z "$pkgfile" ]; then + echo "must specify package file" + exit 1 +fi + +if [ $nameonly -eq 0 ]; then + cols="pkgid" +else + cols="package" +fi + +if [ $verbose -eq 1 ]; then + cols="$cols,coalesce(status,'-')" +fi + +if [ -n "$status" ]; then + status=$(zpm quote "$status") + where="and status = '$status'" +fi + +if [ -n "$filter" ]; then + where="$where and ($filter)" +fi + +pkgid=$1 + +if [ -n "$pkgid" ]; then + eval $(zpm parse -E "$pkgid") + if [ -n "$name" ]; then + package=$(zpm quote "$name") + where="$where and package = '$package'" + fi + if [ -n "$version" ]; then + version=$(zpm quote "$version") + where="$where and version = '$version'" + fi + if [ -n "$release" ]; then + release=$(zpm quote "$release") + where="$where and release = '$release'" + fi +fi + +zpm shell $pkgfile <&2 +fi