--- trunk/mage/usr/lib/mage/magequery.sh 2005/02/15 22:59:14 60 +++ trunk/mage/usr/lib/mage/magequery.sh 2011/05/12 21:28:23 1288 @@ -1,7 +1,7 @@ #!/bin/bash #query mage database for installed packages -# version: 0.3.6-r13 +# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.13 2008-10-05 10:33:04 niro Exp $ print_usage() { @@ -10,6 +10,9 @@ 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 " -c CAT shows all packages of given categorie" + echo " -i shows an inventory of all installed packages" + echo " -f PATH searches package names in given path" echo echo " Examples:" echo @@ -18,7 +21,13 @@ echo } -while getopts "n:v:b:h-" opt ; do +# default args: +GET_INVENTORY=false +SEARCH_ONLY_PATH=false +SEARCH_ONLY_CAT=false + +while getopts "n:v:b:f:c:hi-" opt +do case "${opt}" in n) S_PNAME="${OPTARG}" @@ -31,6 +40,17 @@ b) S_PBUILD="${OPTARG}" ;; + i) + GET_INVENTORY="true" + ;; + f) + SEARCH_ONLY_PATH="true" + SEARCH_PATH="${OPTARG}" + ;; + c) + SEARCH_ONLY_CAT="true" + SEARCH_CAT="${OPTARG}" + ;; h) print_usage exit 0 @@ -47,11 +67,73 @@ done shift $(($OPTIND - 1)) - +source /etc/mage.rc.global source /etc/mage.rc RETVAL=1 -for i in ${INSTALLDB}/*/* +if [[ ${SEARCH_ONLY_PATH} = true ]] +then + unset S_PACKAGES + unset i pkg + for i in $(fgrep -rl "${SEARCH_PATH}" ${INSTALLDB}) + do + # ignore magefiles! + case ${i} in + *.mage) continue ;; + esac + + # print categorie and pkgname + pkg="$(basename ${i%/*/*})/$(basename ${i%/*})" + if [[ -z $(echo ${S_PACKAGES} | grep ${pkg}) ]] + then + S_PACKAGES="${S_PACKAGES} ${pkg}" + fi + done + + # show packages + for pkg in ${S_PACKAGES} + do + echo "${pkg}" + done + + exit 0 +fi + +if [[ ${SEARCH_ONLY_CAT} = true ]] +then + # no packages of SEARCH_CAT are installed + [[ ! -d ${MROOT}${INSTALLDB}/${SEARCH_CAT} ]] && exit 1 + + for i in ${INSTALLDB}/${SEARCH_CAT}/* + do + # print categorie and pkgname + echo "$(basename ${i%/*})/$(basename ${i})" + done + + exit 0 +fi + +if [[ ${GET_INVENTORY} = true ]] +then + for package in $(find ${MROOT}${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 ${MROOT}${INSTALLDB}/*/* do INST_PNAME=no INST_PVER=no