#!/bin/bash #query mage database for installed packages # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.8 2005-08-28 19:17:48 niro Exp $ print_usage() { echo "$(basename $0 .sh) querys the mage database for installed packages." echo echo " -n NAME searches for name NAME" echo " -v VER searches for version VER, needs -n" echo " -b BUILD searches for build number BUILD, needs -n -v" echo " -i shows an inventory of all installed packages" echo echo " Examples:" echo echo " $(basename $0 .sh) -n xorg -v 6.8.0 -b r1" echo " searches for package xorg-6.8.0-r1" echo } # default args: GET_INVENTORY=false while getopts "n:v:b:hi-" opt ; do case "${opt}" in n) S_PNAME="${OPTARG}" ;; v) S_PVER="${OPTARG}" ;; b) S_PBUILD="${OPTARG}" ;; i) GET_INVENTORY="true" ;; h) print_usage exit 0 ;; -) break ;; *) print_usage exit 1 ;; esac done shift $(($OPTIND - 1)) source /etc/mage.rc RETVAL=1 if [[ ${GET_INVENTORY} = true ]] then for package in $(find ${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort) do pcat="$(basename $(echo ${package} | cut -d, -f1))" pname="$(echo ${package} | cut -d, -f2)" if [ -z "${invlist}" ] then invlist="${pcat}/${pname}" else invlist="${invlist} ${pcat}/${pname}" fi done # now show the list echo "${invlist}" exit 0 fi for i in ${INSTALLDB}/*/* do INST_PNAME=no INST_PVER=no INST_PBUILD=no x=$(basename ${i}) PNAME=${x%-*-*} PVER=$(echo ${x#${PNAME}-}| cut -d- -f1) PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2) if [[ ${PNAME} == ${S_PNAME} ]] then INST_PNAME=yes if [ -n "${S_PVER}" ] then if [[ ${PVER} == ${S_PVER} ]] then INST_PVER=yes fi if [ -n "${S_PBUILD}" ] then if [[ ${PBUILD} == ${S_PBUILD} ]] then INST_PBUILD=yes fi fi fi # search for pname only if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ] then if [ "${INST_PNAME}" = yes ] then echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" RETVAL=0 break fi fi # search for pname and pver if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ] then if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ] then echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" RETVAL=0 break fi fi # search for pname, pver and pbuild if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ] then if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ] then echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" RETVAL=0 break fi fi fi done exit ${RETVAL}