Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 228 - (show annotations) (download) (as text)
Fri Sep 9 16:51:17 2005 UTC (18 years, 7 months ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 2818 byte(s)
added ${MROOT} support

1 #!/bin/bash
2
3 #query mage database for installed packages
4 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.9 2005-09-09 16:51:17 niro Exp $
5
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 echo " -i shows an inventory of all installed packages"
14 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 # default args:
23 GET_INVENTORY=false
24
25 while getopts "n:v:b:hi-" opt ; do
26 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 i)
39 GET_INVENTORY="true"
40 ;;
41 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 ${MROOT}/etc/mage.rc
59 RETVAL=1
60
61 if [[ ${GET_INVENTORY} = true ]]
62 then
63 for package in $(find ${MROOT}${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 for i in ${MROOT}${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}