Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 304 - (hide 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 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}