#!/bin/sh pkgfile=${ZPMDB:-/var/lib/zpm/db.zpm} long=0 pkgonly=0 quiet=0 while getopts f:qln opt; do case $opt in f) pkgfile="$OPTARG" ;; l) long=1 ;; n) pkgonly=1 ;; q) quiet=1 ;; esac done shift $((OPTIND - 1)) if [ ! -f $pkgfile ]; then echo cannot find $pkgfile exit 1 fi if [ $long -gt 0 ]; then cols="filetype,printf('%3.3s', mode) as mode,username,groupname," fi if [ $pkgonly -eq 1 ]; then cols="pkgid" elif [ $quiet -eq 0 ]; then cols="pkgid,$cols" fi pkglist= while [ $# -gt 0 ]; do pkg=$1 shift if [ "$pkg" = '--' ]; then break; fi pkgid=$(zpm findpkg -f $pkgfile "$pkg") if [ -n "$pkgid" ]; then q=$(zpm quote -q "$pkgid") pkglist=",$q" else warn "package $pkg not found, ignoring" fi done pkglist=${pkglist#,} globlist= for glob in "$@"; do q=$(zpm quote -q "$glob") globlist="or path glob $q" done globlist=${globlist#'or '} cols=${cols%,} { printf '.separator " "\n' printf 'select %s\n' "$cols" if [ $pkgonly -eq 0 ]; then if [ -n "$cols" ]; then printf ', ' fi cat <<-EOC case when filetype = 'd' then rtrim(path,'/') || '/' else path end as path EOC fi printf 'from packagefiles_pkgid\nwhere true\n' if [ -n "$globlist" ]; then printf "and (%s)\n" "$globlist" fi if [ -n "$pkglist" ]; then printf "and pkgid in (%s)\n" "$pkglist" fi printf 'order by pkgid,path\n' printf ';\n' } | zpm shell $pkgfile #} | cat