Annotation of /trunk/mage/usr/lib/mage/magequery.sh
Parent Directory | Revision Log
Revision 304 -
(hide annotations)
(download)
(as text)
Mon Dec 26 23:12:44 2005 UTC (18 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 3339 byte(s)
Mon Dec 26 23:12:44 2005 UTC (18 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 3339 byte(s)
added -f path search option
1 | niro | 32 | #!/bin/bash |
2 | |||
3 | #query mage database for installed packages | ||
4 | niro | 304 | # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.11 2005-12-26 23:12:44 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 | 210 | echo " -i shows an inventory of all installed packages" |
14 | niro | 304 | echo " -f searches packages name in given path" |
15 | niro | 32 | 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 | niro | 210 | # default args: |
24 | GET_INVENTORY=false | ||
25 | niro | 304 | SEARCH_ONLY_PATH=false |
26 | niro | 210 | |
27 | niro | 304 | while getopts "n:v:b:f:hi-" opt ; do |
28 | niro | 32 | 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 | niro | 210 | i) |
41 | GET_INVENTORY="true" | ||
42 | ;; | ||
43 | niro | 304 | f) |
44 | SEARCH_ONLY_PATH="true" | ||
45 | SEARCH_PATH="${OPTARG}" | ||
46 | ;; | ||
47 | niro | 32 | 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 | niro | 304 | source /etc/mage.rc.global |
64 | niro | 229 | source /etc/mage.rc |
65 | niro | 32 | RETVAL=1 |
66 | |||
67 | niro | 304 | if [[ ${SEARCH_ONLY_PATH} = true ]] |
68 | then | ||
69 | unset S_PACKAGES | ||
70 | unset i pkg | ||
71 | for i in $(grep -irl "${SEARCH_PATH}" ${INSTALLDB}) | ||
72 | do | ||
73 | pkg="$(basename $(dirname ${i}))" | ||
74 | if [[ -z $(echo ${S_PACKAGES} | grep ${pkg}) ]] | ||
75 | then | ||
76 | S_PACKAGES="${S_PACKAGES} ${pkg}" | ||
77 | fi | ||
78 | done | ||
79 | |||
80 | # show packages | ||
81 | for pkg in ${S_PACKAGES} | ||
82 | do | ||
83 | echo "${pkg}" | ||
84 | done | ||
85 | |||
86 | exit 0 | ||
87 | fi | ||
88 | |||
89 | niro | 210 | if [[ ${GET_INVENTORY} = true ]] |
90 | then | ||
91 | niro | 228 | for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort) |
92 | niro | 210 | do |
93 | pcat="$(basename $(echo ${package} | cut -d, -f1))" | ||
94 | pname="$(echo ${package} | cut -d, -f2)" | ||
95 | if [ -z "${invlist}" ] | ||
96 | then | ||
97 | invlist="${pcat}/${pname}" | ||
98 | else | ||
99 | invlist="${invlist} | ||
100 | ${pcat}/${pname}" | ||
101 | fi | ||
102 | done | ||
103 | |||
104 | # now show the list | ||
105 | echo "${invlist}" | ||
106 | exit 0 | ||
107 | fi | ||
108 | |||
109 | niro | 228 | for i in ${MROOT}${INSTALLDB}/*/* |
110 | niro | 32 | do |
111 | INST_PNAME=no | ||
112 | INST_PVER=no | ||
113 | INST_PBUILD=no | ||
114 | |||
115 | x=$(basename ${i}) | ||
116 | PNAME=${x%-*-*} | ||
117 | PVER=$(echo ${x#${PNAME}-}| cut -d- -f1) | ||
118 | PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2) | ||
119 | |||
120 | if [[ ${PNAME} == ${S_PNAME} ]] | ||
121 | then | ||
122 | INST_PNAME=yes | ||
123 | |||
124 | if [ -n "${S_PVER}" ] | ||
125 | then | ||
126 | if [[ ${PVER} == ${S_PVER} ]] | ||
127 | then | ||
128 | INST_PVER=yes | ||
129 | fi | ||
130 | |||
131 | if [ -n "${S_PBUILD}" ] | ||
132 | then | ||
133 | if [[ ${PBUILD} == ${S_PBUILD} ]] | ||
134 | then | ||
135 | INST_PBUILD=yes | ||
136 | fi | ||
137 | fi | ||
138 | fi | ||
139 | |||
140 | # search for pname only | ||
141 | if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ] | ||
142 | then | ||
143 | if [ "${INST_PNAME}" = yes ] | ||
144 | then | ||
145 | echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" | ||
146 | RETVAL=0 | ||
147 | break | ||
148 | fi | ||
149 | fi | ||
150 | |||
151 | # search for pname and pver | ||
152 | if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ] | ||
153 | then | ||
154 | if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ] | ||
155 | then | ||
156 | echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" | ||
157 | RETVAL=0 | ||
158 | break | ||
159 | fi | ||
160 | fi | ||
161 | |||
162 | # search for pname, pver and pbuild | ||
163 | if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ] | ||
164 | then | ||
165 | if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ] | ||
166 | then | ||
167 | echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" | ||
168 | RETVAL=0 | ||
169 | break | ||
170 | fi | ||
171 | fi | ||
172 | fi | ||
173 | done | ||
174 | |||
175 | exit ${RETVAL} |