Contents of /branches/mage-next/src/magequery.in
Parent Directory | Revision Log
Revision 332 -
(show annotations)
(download)
(as text)
Mon Feb 20 00:15:03 2006 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: 3385 byte(s)
Mon Feb 20 00:15:03 2006 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: 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} |