Annotation of /branches/mage-next/src/magequery.in
Parent Directory | Revision Log
Revision 210 -
(hide annotations)
(download)
(as text)
Sun Aug 28 19:17:48 2005 UTC (19 years, 1 month ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 2794 byte(s)
Sun Aug 28 19:17:48 2005 UTC (19 years, 1 month ago) by niro
Original Path: trunk/mage/usr/lib/mage/magequery.sh
File MIME type: application/x-sh
File size: 2794 byte(s)
added fetch_inventory
1 | niro | 32 | #!/bin/bash |
2 | |||
3 | #query mage database for installed packages | ||
4 | niro | 210 | # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.8 2005-08-28 19:17:48 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 | 32 | 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 | niro | 210 | # default args: |
23 | GET_INVENTORY=false | ||
24 | |||
25 | while getopts "n:v:b:hi-" opt ; do | ||
26 | niro | 32 | 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 | niro | 210 | i) |
39 | GET_INVENTORY="true" | ||
40 | ;; | ||
41 | niro | 32 | 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 /etc/mage.rc | ||
59 | RETVAL=1 | ||
60 | |||
61 | niro | 210 | if [[ ${GET_INVENTORY} = true ]] |
62 | then | ||
63 | for package in $(find ${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 | niro | 32 | for i in ${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} |