Magellan Linux

Annotation of /branches/mage-next/src/magequery.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 332 - (hide annotations) (download) (as text)
Mon Feb 20 00:15:03 2006 UTC (18 years, 2 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 niro 32 #!/bin/bash
2    
3     #query mage database for installed packages
4 niro 332 # $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 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 niro 332 for i in $(fgrep -rl "${SEARCH_PATH}" ${INSTALLDB})
72 niro 304 do
73 niro 332 # print categorie and pkgname
74     pkg="$(basename ${i%/*/*})/$(basename ${i%/*})"
75 niro 304 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 niro 210 if [[ ${GET_INVENTORY} = true ]]
91     then
92 niro 228 for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort)
93 niro 210 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 niro 228 for i in ${MROOT}${INSTALLDB}/*/*
111 niro 32 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}