Magellan Linux

Contents of /trunk/mage/usr/lib/mage/magequery.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 304 - (show annotations) (download) (as text)
Mon Dec 26 23:12:44 2005 UTC (18 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 3339 byte(s)
added -f path search option

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.11 2005-12-26 23:12:44 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 $(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 if [[ ${GET_INVENTORY} = true ]]
90 then
91 for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort)
92 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 for i in ${MROOT}${INSTALLDB}/*/*
110 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}