Contents of /tags/mage-0_4_113/usr/lib/mage/magequery.sh
Parent Directory | Revision Log
Revision 228 -
(show annotations)
(download)
(as text)
Fri Sep 9 16:51:17 2005 UTC (19 years ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 2818 byte(s)
Fri Sep 9 16:51:17 2005 UTC (19 years ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 2818 byte(s)
added ${MROOT} support
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.9 2005-09-09 16:51:17 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 |
15 | echo " Examples:" |
16 | echo |
17 | echo " $(basename $0 .sh) -n xorg -v 6.8.0 -b r1" |
18 | echo " searches for package xorg-6.8.0-r1" |
19 | echo |
20 | } |
21 | |
22 | # default args: |
23 | GET_INVENTORY=false |
24 | |
25 | while getopts "n:v:b:hi-" opt ; do |
26 | case "${opt}" in |
27 | n) |
28 | S_PNAME="${OPTARG}" |
29 | ;; |
30 | |
31 | v) |
32 | S_PVER="${OPTARG}" |
33 | ;; |
34 | |
35 | b) |
36 | S_PBUILD="${OPTARG}" |
37 | ;; |
38 | i) |
39 | GET_INVENTORY="true" |
40 | ;; |
41 | h) |
42 | print_usage |
43 | exit 0 |
44 | ;; |
45 | |
46 | -) break |
47 | ;; |
48 | |
49 | *) |
50 | print_usage |
51 | exit 1 |
52 | ;; |
53 | esac |
54 | done |
55 | shift $(($OPTIND - 1)) |
56 | |
57 | |
58 | source ${MROOT}/etc/mage.rc |
59 | RETVAL=1 |
60 | |
61 | if [[ ${GET_INVENTORY} = true ]] |
62 | then |
63 | for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort) |
64 | do |
65 | pcat="$(basename $(echo ${package} | cut -d, -f1))" |
66 | pname="$(echo ${package} | cut -d, -f2)" |
67 | if [ -z "${invlist}" ] |
68 | then |
69 | invlist="${pcat}/${pname}" |
70 | else |
71 | invlist="${invlist} |
72 | ${pcat}/${pname}" |
73 | fi |
74 | done |
75 | |
76 | # now show the list |
77 | echo "${invlist}" |
78 | exit 0 |
79 | fi |
80 | |
81 | for i in ${MROOT}${INSTALLDB}/*/* |
82 | do |
83 | INST_PNAME=no |
84 | INST_PVER=no |
85 | INST_PBUILD=no |
86 | |
87 | x=$(basename ${i}) |
88 | PNAME=${x%-*-*} |
89 | PVER=$(echo ${x#${PNAME}-}| cut -d- -f1) |
90 | PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2) |
91 | |
92 | if [[ ${PNAME} == ${S_PNAME} ]] |
93 | then |
94 | INST_PNAME=yes |
95 | |
96 | if [ -n "${S_PVER}" ] |
97 | then |
98 | if [[ ${PVER} == ${S_PVER} ]] |
99 | then |
100 | INST_PVER=yes |
101 | fi |
102 | |
103 | if [ -n "${S_PBUILD}" ] |
104 | then |
105 | if [[ ${PBUILD} == ${S_PBUILD} ]] |
106 | then |
107 | INST_PBUILD=yes |
108 | fi |
109 | fi |
110 | fi |
111 | |
112 | # search for pname only |
113 | if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ] |
114 | then |
115 | if [ "${INST_PNAME}" = yes ] |
116 | then |
117 | echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" |
118 | RETVAL=0 |
119 | break |
120 | fi |
121 | fi |
122 | |
123 | # search for pname and pver |
124 | if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ] |
125 | then |
126 | if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ] |
127 | then |
128 | echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" |
129 | RETVAL=0 |
130 | break |
131 | fi |
132 | fi |
133 | |
134 | # search for pname, pver and pbuild |
135 | if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ] |
136 | then |
137 | if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ] |
138 | then |
139 | echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]" |
140 | RETVAL=0 |
141 | break |
142 | fi |
143 | fi |
144 | fi |
145 | done |
146 | |
147 | exit ${RETVAL} |