Magellan Linux

Contents of /trunk/mage/usr/lib/mage/magequery.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 332 - (show annotations) (download) (as text)
Mon Feb 20 00:15:03 2006 UTC (18 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 3385 byte(s)
- fixed database lookups
- now printing pcat/pkgname

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.12 2006-02-20 00:15:03 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 " -f searches packages name in given path"
15 echo
16 echo " Examples:"
17 echo
18 echo " $(basename $0 .sh) -n xorg -v 6.8.0 -b r1"
19 echo " searches for package xorg-6.8.0-r1"
20 echo
21 }
22
23 # default args:
24 GET_INVENTORY=false
25 SEARCH_ONLY_PATH=false
26
27 while getopts "n:v:b:f:hi-" opt ; do
28 case "${opt}" in
29 n)
30 S_PNAME="${OPTARG}"
31 ;;
32
33 v)
34 S_PVER="${OPTARG}"
35 ;;
36
37 b)
38 S_PBUILD="${OPTARG}"
39 ;;
40 i)
41 GET_INVENTORY="true"
42 ;;
43 f)
44 SEARCH_ONLY_PATH="true"
45 SEARCH_PATH="${OPTARG}"
46 ;;
47 h)
48 print_usage
49 exit 0
50 ;;
51
52 -) break
53 ;;
54
55 *)
56 print_usage
57 exit 1
58 ;;
59 esac
60 done
61 shift $(($OPTIND - 1))
62
63 source /etc/mage.rc.global
64 source /etc/mage.rc
65 RETVAL=1
66
67 if [[ ${SEARCH_ONLY_PATH} = true ]]
68 then
69 unset S_PACKAGES
70 unset i pkg
71 for i in $(fgrep -rl "${SEARCH_PATH}" ${INSTALLDB})
72 do
73 # print categorie and pkgname
74 pkg="$(basename ${i%/*/*})/$(basename ${i%/*})"
75 if [[ -z $(echo ${S_PACKAGES} | grep ${pkg}) ]]
76 then
77 S_PACKAGES="${S_PACKAGES} ${pkg}"
78 fi
79 done
80
81 # show packages
82 for pkg in ${S_PACKAGES}
83 do
84 echo "${pkg}"
85 done
86
87 exit 0
88 fi
89
90 if [[ ${GET_INVENTORY} = true ]]
91 then
92 for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort)
93 do
94 pcat="$(basename $(echo ${package} | cut -d, -f1))"
95 pname="$(echo ${package} | cut -d, -f2)"
96 if [ -z "${invlist}" ]
97 then
98 invlist="${pcat}/${pname}"
99 else
100 invlist="${invlist}
101 ${pcat}/${pname}"
102 fi
103 done
104
105 # now show the list
106 echo "${invlist}"
107 exit 0
108 fi
109
110 for i in ${MROOT}${INSTALLDB}/*/*
111 do
112 INST_PNAME=no
113 INST_PVER=no
114 INST_PBUILD=no
115
116 x=$(basename ${i})
117 PNAME=${x%-*-*}
118 PVER=$(echo ${x#${PNAME}-}| cut -d- -f1)
119 PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2)
120
121 if [[ ${PNAME} == ${S_PNAME} ]]
122 then
123 INST_PNAME=yes
124
125 if [ -n "${S_PVER}" ]
126 then
127 if [[ ${PVER} == ${S_PVER} ]]
128 then
129 INST_PVER=yes
130 fi
131
132 if [ -n "${S_PBUILD}" ]
133 then
134 if [[ ${PBUILD} == ${S_PBUILD} ]]
135 then
136 INST_PBUILD=yes
137 fi
138 fi
139 fi
140
141 # search for pname only
142 if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ]
143 then
144 if [ "${INST_PNAME}" = yes ]
145 then
146 echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
147 RETVAL=0
148 break
149 fi
150 fi
151
152 # search for pname and pver
153 if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ]
154 then
155 if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ]
156 then
157 echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
158 RETVAL=0
159 break
160 fi
161 fi
162
163 # search for pname, pver and pbuild
164 if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ]
165 then
166 if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ]
167 then
168 echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
169 RETVAL=0
170 break
171 fi
172 fi
173 fi
174 done
175
176 exit ${RETVAL}