Magellan Linux

Annotation of /branches/mage-next/src/magequery.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 210 - (hide annotations) (download) (as text)
Sun Aug 28 19:17:48 2005 UTC (18 years, 8 months ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 2794 byte(s)
added fetch_inventory

1 niro 32 #!/bin/bash
2    
3     #query mage database for installed packages
4 niro 210 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.8 2005-08-28 19:17:48 niro Exp $
5 niro 32
6     print_usage()
7     {
8     echo "$(basename $0 .sh) querys the mage database for installed packages."
9     echo
10     echo " -n NAME searches for name NAME"
11     echo " -v VER searches for version VER, needs -n"
12     echo " -b BUILD searches for build number BUILD, needs -n -v"
13 niro 210 echo " -i shows an inventory of all installed packages"
14 niro 32 echo
15     echo " Examples:"
16     echo
17     echo " $(basename $0 .sh) -n xorg -v 6.8.0 -b r1"
18     echo " searches for package xorg-6.8.0-r1"
19     echo
20     }
21    
22 niro 210 # default args:
23     GET_INVENTORY=false
24    
25     while getopts "n:v:b:hi-" opt ; do
26 niro 32 case "${opt}" in
27     n)
28     S_PNAME="${OPTARG}"
29     ;;
30    
31     v)
32     S_PVER="${OPTARG}"
33     ;;
34    
35     b)
36     S_PBUILD="${OPTARG}"
37     ;;
38 niro 210 i)
39     GET_INVENTORY="true"
40     ;;
41 niro 32 h)
42     print_usage
43     exit 0
44     ;;
45    
46     -) break
47     ;;
48    
49     *)
50     print_usage
51     exit 1
52     ;;
53     esac
54     done
55     shift $(($OPTIND - 1))
56    
57    
58     source /etc/mage.rc
59     RETVAL=1
60    
61 niro 210 if [[ ${GET_INVENTORY} = true ]]
62     then
63     for package in $(find ${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort)
64     do
65     pcat="$(basename $(echo ${package} | cut -d, -f1))"
66     pname="$(echo ${package} | cut -d, -f2)"
67     if [ -z "${invlist}" ]
68     then
69     invlist="${pcat}/${pname}"
70     else
71     invlist="${invlist}
72     ${pcat}/${pname}"
73     fi
74     done
75    
76     # now show the list
77     echo "${invlist}"
78     exit 0
79     fi
80    
81 niro 32 for i in ${INSTALLDB}/*/*
82     do
83     INST_PNAME=no
84     INST_PVER=no
85     INST_PBUILD=no
86    
87     x=$(basename ${i})
88     PNAME=${x%-*-*}
89     PVER=$(echo ${x#${PNAME}-}| cut -d- -f1)
90     PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2)
91    
92     if [[ ${PNAME} == ${S_PNAME} ]]
93     then
94     INST_PNAME=yes
95    
96     if [ -n "${S_PVER}" ]
97     then
98     if [[ ${PVER} == ${S_PVER} ]]
99     then
100     INST_PVER=yes
101     fi
102    
103     if [ -n "${S_PBUILD}" ]
104     then
105     if [[ ${PBUILD} == ${S_PBUILD} ]]
106     then
107     INST_PBUILD=yes
108     fi
109     fi
110     fi
111    
112     # search for pname only
113     if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ]
114     then
115     if [ "${INST_PNAME}" = yes ]
116     then
117     echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
118     RETVAL=0
119     break
120     fi
121     fi
122    
123     # search for pname and pver
124     if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ]
125     then
126     if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ]
127     then
128     echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
129     RETVAL=0
130     break
131     fi
132     fi
133    
134     # search for pname, pver and pbuild
135     if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ]
136     then
137     if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ]
138     then
139     echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
140     RETVAL=0
141     break
142     fi
143     fi
144     fi
145     done
146    
147     exit ${RETVAL}