Magellan Linux

Contents of /trunk/pkgtools/mage2mysql.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 806 - (show annotations) (download) (as text)
Wed Feb 11 16:17:09 2009 UTC (15 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 4388 byte(s)
-added mg_* suffix to table names
1 #!/bin/sh
2 # mage2mysql
3
4 # mage functions
5 source /home/tjoke/svn/alx/alx-src/trunk/tinyalxconfig-ng/functions/mysqlfunctions
6 source /usr/lib/mage/mage4.functions.sh
7 source /etc/mage.rc.global
8 source /etc/mage.rc
9
10 # sql settings
11 SQL_USER=mage
12 SQL_PASS=mage
13 SQL_HOST=localhost
14 SQL_DB=mage
15 SQL_TABLE_PACKAGES=mg_packages
16 SQL_TABLE_CATEGORIES=mg_categories
17
18 create_database()
19 {
20 # create categories table
21 mysqldo "CREATE TABLE IF NOT EXISTS ${SQL_TABLE_CATEGORIES} (
22 id int(10) NOT NULL auto_increment,
23 pcat varchar(255) NOT NULL,
24 PRIMARY KEY (id)
25 )"
26
27 # create packages table
28 mysqldo "CREATE TABLE IF NOT EXISTS ${SQL_TABLE_PACKAGES} (
29 id int(10) NOT NULL auto_increment,
30 pname varchar(255) NOT NULL,
31 pver varchar(255) NOT NULL,
32 pbuild varchar(255) NOT NULL,
33 pcat varchar(255) NOT NULL,
34 state varchar(255) NOT NULL,
35 description text default NULL,
36 homepage varchar(255) default NULL,
37 pkgtype varchar(255) default NULL,
38 depend varchar(255) default NULL,
39 sdepend varchar(255) default NULL,
40 provide varchar(255) default NULL,
41 time datetime NOT NULL,
42 flag int(1) NOT NULL default '1',
43 PRIMARY KEY (id)
44 )"
45 }
46
47 evaluate_categories()
48 {
49 local i
50 local pcat
51
52 # ${MAGEDIR} is known from mage.rc{,.global}
53 for i in ${MAGEDIR}/*
54 do
55 pcat="${i##*/}"
56
57 # exclude includes
58 [[ ${pcat} = include ]] && continue
59
60 id=$(mysqldo "SELECT id FROM ${SQL_TABLE_CATEGORIES} WHERE pcat='${pcat}'")
61
62 # only add if not found
63 if [[ -z ${id} ]]
64 then
65 mysqldo "INSERT INTO ${SQL_TABLE_CATEGORIES} ( pcat ) VALUES ( '${pcat}' )"
66 fi
67 done
68 }
69
70 evaluate_magefile()
71 {
72 local i
73 local MAGEFILE="$1"
74 local PKGNAME
75 local PCAT
76 local PNAME
77 local PVER
78 local PBUILD
79 local STATE
80 local DESCRIPTION
81 local HOMEPAGE
82 local PKGTYPE
83 local DEPEND
84 local SDEPEND
85 local PROVIDE
86
87 # read needed variables within the magefile
88 for i in PKGNAME STATE HOMEPAGE PKGTYPE DEPEND SDEPEND PROVIDE
89 do
90 eval "${i}='$(get_value_from_magefile ${i} ${MAGEFILE})'"
91 done
92
93 # the description may contain some escape characters like ' and "
94 # which break the above loop
95 DESCRIPTION="$(get_value_from_magefile DESCRIPTION ${MAGEFILE})"
96
97 # get var from the name of the magefile
98 PCAT="$(magename2pcat ${MAGEFILE})"
99 PNAME="$(magename2pname ${MAGEFILE})"
100 PVER="$(magename2pver ${MAGEFILE})"
101 PBUILD="$(magename2pbuild ${MAGEFILE})"
102
103 # remove >= etc from depend and sdepend
104 DEPEND=$(echo ${DEPEND} | sed 's/[^a-zA-Z0-9]\{2\}\ //g')
105 SDEPEND=$(echo ${SDEPEND} | sed 's/[^a-zA-Z0-9]\{2\}\ //g')
106
107 # check if there is a pname for the same state
108 local id=$(mysqldo "SELECT id FROM ${SQL_TABLE_PACKAGES} WHERE pname='${PNAME}' AND state='${STATE}'")
109
110 # get categorie id
111 local pcatid=$(mysqldo "SELECT id FROM ${SQL_TABLE_CATEGORIES} WHERE pcat='${PCAT}'")
112
113 # get current time
114 local time="$(date +%F\ %T)"
115
116 # found, then update
117 if [[ ! -z ${id} ]]
118 then
119 mysqldo "UPDATE ${SQL_TABLE_PACKAGES} SET
120 pname='${PNAME}',
121 pver='${PVER}',
122 pbuild='${PBUILD}',
123 pcat='${pcatid}',
124 state='${STATE}',
125 description='${DESCRIPTION}',
126 homepage='${HOMEPAGE}',
127 pkgtype='${PKGTYPE}',
128 depend='${DEPEND}',
129 sdepend='${SDEPEND}',
130 provide='${PROVIDE}',
131 time='${time}',
132 flag='1'
133 WHERE id='${id}'"
134
135 else
136 # else import to database as new
137 mysqldo "INSERT INTO ${SQL_TABLE_PACKAGES} (
138 pname,
139 pver,
140 pbuild,
141 pcat,
142 state,
143 description,
144 homepage,
145 pkgtype,
146 depend,
147 sdepend,
148 provide,
149 time,
150 flag
151 )
152 VALUES (
153 '${PNAME}',
154 '${PVER}',
155 '${PBUILD}',
156 '${pcatid}',
157 '${STATE}',
158 '${DESCRIPTION}',
159 '${HOMEPAGE}',
160 '${PKGTYPE}',
161 '${DEPEND}',
162 '${SDEPEND}',
163 '${PROVIDE}',
164 '${time}',
165 '1'
166 )"
167 fi
168 }
169
170 reset_flags()
171 {
172 # set all flags to zero
173 mysqldo "UPDATE ${SQL_TABLE_PACKAGES} SET flag='0'"
174 }
175
176 prune_old_packages()
177 {
178 # debug
179 # echo "Debug: following ids are requested for deletion:"
180 # mysqldo "SELECT id FROM packages WHERE flag='0'"
181
182 # delete them
183 mysqldo "DELETE FROM ${SQL_TABLE_PACKAGES} WHERE flag='0'"
184 }
185
186 echo "Processing Categories ..."
187 evaluate_categories
188
189 echo "Resetting Flags ..."
190 reset_flags
191
192 # all magefiles
193 ALL_MAGEFILES="$(find ${MAGEDIR} -name \*.mage | sort)"
194
195 for magefile in ${ALL_MAGEFILES}
196 do
197 echo "Processing Magefile ${magefile}"
198 evaluate_magefile ${magefile}
199 done
200
201 echo "Pruning outdated Packages ..."
202 prune_old_packages

Properties

Name Value
svn:keywords Id