Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1288 - (hide annotations) (download) (as text)
Thu May 12 21:28:23 2011 UTC (13 years ago) by niro
File MIME type: application/x-sh
File size: 3879 byte(s)
-ignore included mage files
1 niro 32 #!/bin/bash
2    
3     #query mage database for installed packages
4 niro 777 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/magequery.sh,v 1.13 2008-10-05 10:33:04 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 777 echo " -c CAT shows all packages of given categorie"
14 niro 210 echo " -i shows an inventory of all installed packages"
15 niro 1206 echo " -f PATH searches package names in given path"
16 niro 32 echo
17     echo " Examples:"
18     echo
19     echo " $(basename $0 .sh) -n xorg -v 6.8.0 -b r1"
20     echo " searches for package xorg-6.8.0-r1"
21     echo
22     }
23    
24 niro 210 # default args:
25     GET_INVENTORY=false
26 niro 304 SEARCH_ONLY_PATH=false
27 niro 777 SEARCH_ONLY_CAT=false
28 niro 210
29 niro 1206 while getopts "n:v:b:f:c:hi-" opt
30     do
31 niro 32 case "${opt}" in
32     n)
33     S_PNAME="${OPTARG}"
34     ;;
35    
36     v)
37     S_PVER="${OPTARG}"
38     ;;
39    
40     b)
41     S_PBUILD="${OPTARG}"
42     ;;
43 niro 210 i)
44     GET_INVENTORY="true"
45     ;;
46 niro 304 f)
47     SEARCH_ONLY_PATH="true"
48     SEARCH_PATH="${OPTARG}"
49     ;;
50 niro 777 c)
51     SEARCH_ONLY_CAT="true"
52     SEARCH_CAT="${OPTARG}"
53     ;;
54 niro 32 h)
55     print_usage
56     exit 0
57     ;;
58    
59     -) break
60     ;;
61    
62     *)
63     print_usage
64     exit 1
65     ;;
66     esac
67     done
68     shift $(($OPTIND - 1))
69    
70 niro 304 source /etc/mage.rc.global
71 niro 229 source /etc/mage.rc
72 niro 32 RETVAL=1
73    
74 niro 304 if [[ ${SEARCH_ONLY_PATH} = true ]]
75     then
76     unset S_PACKAGES
77     unset i pkg
78 niro 332 for i in $(fgrep -rl "${SEARCH_PATH}" ${INSTALLDB})
79 niro 304 do
80 niro 1288 # ignore magefiles!
81     case ${i} in
82     *.mage) continue ;;
83     esac
84    
85 niro 332 # print categorie and pkgname
86     pkg="$(basename ${i%/*/*})/$(basename ${i%/*})"
87 niro 304 if [[ -z $(echo ${S_PACKAGES} | grep ${pkg}) ]]
88     then
89     S_PACKAGES="${S_PACKAGES} ${pkg}"
90     fi
91     done
92    
93     # show packages
94     for pkg in ${S_PACKAGES}
95     do
96     echo "${pkg}"
97     done
98    
99     exit 0
100     fi
101    
102 niro 777 if [[ ${SEARCH_ONLY_CAT} = true ]]
103     then
104     # no packages of SEARCH_CAT are installed
105     [[ ! -d ${MROOT}${INSTALLDB}/${SEARCH_CAT} ]] && exit 1
106    
107     for i in ${INSTALLDB}/${SEARCH_CAT}/*
108     do
109     # print categorie and pkgname
110     echo "$(basename ${i%/*})/$(basename ${i})"
111     done
112    
113     exit 0
114     fi
115    
116 niro 210 if [[ ${GET_INVENTORY} = true ]]
117     then
118 niro 228 for package in $(find ${MROOT}${INSTALLDB} -mindepth 2 -maxdepth 2 -type d -printf "%h,%f\n" | sort)
119 niro 210 do
120     pcat="$(basename $(echo ${package} | cut -d, -f1))"
121     pname="$(echo ${package} | cut -d, -f2)"
122     if [ -z "${invlist}" ]
123     then
124     invlist="${pcat}/${pname}"
125     else
126     invlist="${invlist}
127     ${pcat}/${pname}"
128     fi
129     done
130    
131     # now show the list
132     echo "${invlist}"
133     exit 0
134     fi
135    
136 niro 228 for i in ${MROOT}${INSTALLDB}/*/*
137 niro 32 do
138     INST_PNAME=no
139     INST_PVER=no
140     INST_PBUILD=no
141    
142     x=$(basename ${i})
143     PNAME=${x%-*-*}
144     PVER=$(echo ${x#${PNAME}-}| cut -d- -f1)
145     PBUILD=$(echo ${x#${PNAME}-}| cut -d- -f2)
146    
147     if [[ ${PNAME} == ${S_PNAME} ]]
148     then
149     INST_PNAME=yes
150    
151     if [ -n "${S_PVER}" ]
152     then
153     if [[ ${PVER} == ${S_PVER} ]]
154     then
155     INST_PVER=yes
156     fi
157    
158     if [ -n "${S_PBUILD}" ]
159     then
160     if [[ ${PBUILD} == ${S_PBUILD} ]]
161     then
162     INST_PBUILD=yes
163     fi
164     fi
165     fi
166    
167     # search for pname only
168     if [ -n "${S_PNAME}" -a -z "${S_PVER}" -a -z "${S_PBUILD}" ]
169     then
170     if [ "${INST_PNAME}" = yes ]
171     then
172     echo "${S_PNAME} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
173     RETVAL=0
174     break
175     fi
176     fi
177    
178     # search for pname and pver
179     if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -z "${S_PBUILD}" ]
180     then
181     if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" ]
182     then
183     echo "${S_PNAME}-${S_PVER} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
184     RETVAL=0
185     break
186     fi
187     fi
188    
189     # search for pname, pver and pbuild
190     if [ -n "${S_PNAME}" -a -n "${S_PVER}" -a -n "${S_PBUILD}" ]
191     then
192     if [ "${INST_PNAME}" = "yes" -a "${INST_PVER}" = "yes" -a "${INST_PBUILD}" = "yes" ]
193     then
194     echo "${S_PNAME}-${S_PVER}-${S_PBUILD} is installed [ ${PNAME}-${PVER}-${PBUILD} ]"
195     RETVAL=0
196     break
197     fi
198     fi
199     fi
200     done
201    
202     exit ${RETVAL}