Annotation of /tags/mage-0_4_113/usr/lib/mage/magequery.sh
Parent Directory | Revision Log
Revision 1288 -
(hide annotations)
(download)
(as text)
Thu May 12 21:28:23 2011 UTC (13 years, 4 months ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 3879 byte(s)
Thu May 12 21:28:23 2011 UTC (13 years, 4 months ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 3879 byte(s)
-ignore included mage files
1 | niro | 32 | #!/bin/bash |
2 | |||
3 | #query mage database for installed packages | ||
4 | niro | 777 | # $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 | 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 | 777 | echo " -c CAT shows all packages of given categorie" |
14 | niro | 210 | echo " -i shows an inventory of all installed packages" |
15 | niro | 1206 | echo " -f PATH searches package names in given path" |
16 | niro | 32 | 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 | niro | 210 | # default args: |
25 | GET_INVENTORY=false | ||
26 | niro | 304 | SEARCH_ONLY_PATH=false |
27 | niro | 777 | SEARCH_ONLY_CAT=false |
28 | niro | 210 | |
29 | niro | 1206 | while getopts "n:v:b:f:c:hi-" opt |
30 | do | ||
31 | niro | 32 | 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 | niro | 210 | i) |
44 | GET_INVENTORY="true" | ||
45 | ;; | ||
46 | niro | 304 | f) |
47 | SEARCH_ONLY_PATH="true" | ||
48 | SEARCH_PATH="${OPTARG}" | ||
49 | ;; | ||
50 | niro | 777 | c) |
51 | SEARCH_ONLY_CAT="true" | ||
52 | SEARCH_CAT="${OPTARG}" | ||
53 | ;; | ||
54 | niro | 32 | 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 | niro | 304 | source /etc/mage.rc.global |
71 | niro | 229 | source /etc/mage.rc |
72 | niro | 32 | RETVAL=1 |
73 | |||
74 | niro | 304 | if [[ ${SEARCH_ONLY_PATH} = true ]] |
75 | then | ||
76 | unset S_PACKAGES | ||
77 | unset i pkg | ||
78 | niro | 332 | for i in $(fgrep -rl "${SEARCH_PATH}" ${INSTALLDB}) |
79 | niro | 304 | do |
80 | niro | 1288 | # ignore magefiles! |
81 | case ${i} in | ||
82 | *.mage) continue ;; | ||
83 | esac | ||
84 | |||
85 | niro | 332 | # print categorie and pkgname |
86 | pkg="$(basename ${i%/*/*})/$(basename ${i%/*})" | ||
87 | niro | 304 | 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 | niro | 777 | 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 | niro | 210 | if [[ ${GET_INVENTORY} = true ]] |
117 | then | ||
118 | niro | 228 | for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort) |
119 | niro | 210 | 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 | niro | 228 | for i in ${MROOT}${INSTALLDB}/*/* |
137 | niro | 32 | 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} |