Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1288 - (show annotations) (download) (as text)
Thu May 12 21:28:23 2011 UTC (13 years ago) by niro
File MIME type: application/x-sh
File size: 3879 byte(s)
-ignore included mage files
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.13 2008-10-05 10:33:04 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 " -c CAT shows all packages of given categorie"
14 echo " -i shows an inventory of all installed packages"
15 echo " -f PATH searches package names in given path"
16 echo
17 echo " Examples:"
18 echo
19 echo " $(basename $0 .sh) -n xorg -v 6.8.0 -b r1"
20 echo " searches for package xorg-6.8.0-r1"
21 echo
22 }
23
24 # default args:
25 GET_INVENTORY=false
26 SEARCH_ONLY_PATH=false
27 SEARCH_ONLY_CAT=false
28
29 while getopts "n:v:b:f:c:hi-" opt
30 do
31 case "${opt}" in
32 n)
33 S_PNAME="${OPTARG}"
34 ;;
35
36 v)
37 S_PVER="${OPTARG}"
38 ;;
39
40 b)
41 S_PBUILD="${OPTARG}"
42 ;;
43 i)
44 GET_INVENTORY="true"
45 ;;
46 f)
47 SEARCH_ONLY_PATH="true"
48 SEARCH_PATH="${OPTARG}"
49 ;;
50 c)
51 SEARCH_ONLY_CAT="true"
52 SEARCH_CAT="${OPTARG}"
53 ;;
54 h)
55 print_usage
56 exit 0
57 ;;
58
59 -) break
60 ;;
61
62 *)
63 print_usage
64 exit 1
65 ;;
66 esac
67 done
68 shift $(($OPTIND - 1))
69
70 source /etc/mage.rc.global
71 source /etc/mage.rc
72 RETVAL=1
73
74 if [[ ${SEARCH_ONLY_PATH} = true ]]
75 then
76 unset S_PACKAGES
77 unset i pkg
78 for i in $(fgrep -rl "${SEARCH_PATH}" ${INSTALLDB})
79 do
80 # ignore magefiles!
81 case ${i} in
82 *.mage) continue ;;
83 esac
84
85 # print categorie and pkgname
86 pkg="$(basename ${i%/*/*})/$(basename ${i%/*})"
87 if [[ -z $(echo ${S_PACKAGES} | grep ${pkg}) ]]
88 then
89 S_PACKAGES="${S_PACKAGES} ${pkg}"
90 fi
91 done
92
93 # show packages
94 for pkg in ${S_PACKAGES}
95 do
96 echo "${pkg}"
97 done
98
99 exit 0
100 fi
101
102 if [[ ${SEARCH_ONLY_CAT} = true ]]
103 then
104 # no packages of SEARCH_CAT are installed
105 [[ ! -d ${MROOT}${INSTALLDB}/${SEARCH_CAT} ]] && exit 1
106
107 for i in ${INSTALLDB}/${SEARCH_CAT}/*
108 do
109 # print categorie and pkgname
110 echo "$(basename ${i%/*})/$(basename ${i})"
111 done
112
113 exit 0
114 fi
115
116 if [[ ${GET_INVENTORY} = true ]]
117 then
118 for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort)
119 do
120 pcat="$(basename $(echo ${package} | cut -d, -f1))"
121 pname="$(echo ${package} | cut -d, -f2)"
122 if [ -z "${invlist}" ]
123 then
124 invlist="${pcat}/${pname}"
125 else
126 invlist="${invlist}
127 ${pcat}/${pname}"
128 fi
129 done
130
131 # now show the list
132 echo "${invlist}"
133 exit 0
134 fi
135
136 for i in ${MROOT}${INSTALLDB}/*/*
137 do
138 INST_PNAME=no
139 INST_PVER=no
140 INST_PBUILD=no
141
142 x=$(basename ${i})
143 PNAME=${x%-*-*}
144 PVER=$(echo ${x#${PNAME}-}| cut -d- -f1)
145 PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2)
146
147 if [[ ${PNAME} == ${S_PNAME} ]]
148 then
149 INST_PNAME=yes
150
151 if [ -n "${S_PVER}" ]
152 then
153 if [[ ${PVER} == ${S_PVER} ]]
154 then
155 INST_PVER=yes
156 fi
157
158 if [ -n "${S_PBUILD}" ]
159 then
160 if [[ ${PBUILD} == ${S_PBUILD} ]]
161 then
162 INST_PBUILD=yes
163 fi
164 fi
165 fi
166
167 # search for pname only
168 if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ]
169 then
170 if [ "${INST_PNAME}" = yes ]
171 then
172 echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
173 RETVAL=0
174 break
175 fi
176 fi
177
178 # search for pname and pver
179 if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ]
180 then
181 if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ]
182 then
183 echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
184 RETVAL=0
185 break
186 fi
187 fi
188
189 # search for pname, pver and pbuild
190 if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ]
191 then
192 if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ]
193 then
194 echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
195 RETVAL=0
196 break
197 fi
198 fi
199 fi
200 done
201
202 exit ${RETVAL}