Contents of /trunk/pkgtools/mage2mysql.sh
Parent Directory | Revision Log
Revision 1331 -
(show annotations)
(download)
(as text)
Tue May 31 17:44:01 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 4808 byte(s)
Tue May 31 17:44:01 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 4808 byte(s)
-sync with current
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 text default NULL, |
39 | sdepend text default NULL, |
40 | provide text 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} | sed "s:':\\\':g")" |
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 | #get last primary key !!! |
117 | |
118 | # found, then update |
119 | if [[ ! -z ${id} ]] |
120 | then |
121 | mysqldo "UPDATE ${SQL_TABLE_PACKAGES} SET |
122 | pname='${PNAME}', |
123 | pver='${PVER}', |
124 | pbuild='${PBUILD}', |
125 | pcat='${pcatid}', |
126 | state='${STATE}', |
127 | description='${DESCRIPTION}', |
128 | homepage='${HOMEPAGE}', |
129 | pkgtype='${PKGTYPE}', |
130 | depend='${DEPEND}', |
131 | sdepend='${SDEPEND}', |
132 | provide='${PROVIDE}', |
133 | time='${time}', |
134 | flag='1' |
135 | WHERE id='${id}'" |
136 | |
137 | else |
138 | # else import to database as new |
139 | mysqldo "INSERT INTO ${SQL_TABLE_PACKAGES} ( |
140 | id, |
141 | pname, |
142 | pver, |
143 | pbuild, |
144 | pcat, |
145 | state, |
146 | description, |
147 | homepage, |
148 | pkgtype, |
149 | depend, |
150 | sdepend, |
151 | provide, |
152 | time, |
153 | flag |
154 | ) |
155 | VALUES ( |
156 | '${id}', |
157 | '${PNAME}', |
158 | '${PVER}', |
159 | '${PBUILD}', |
160 | '${pcatid}', |
161 | '${STATE}', |
162 | '${DESCRIPTION}', |
163 | '${HOMEPAGE}', |
164 | '${PKGTYPE}', |
165 | '${DEPEND}', |
166 | '${SDEPEND}', |
167 | '${PROVIDE}', |
168 | '${time}', |
169 | '1' |
170 | ) ON DUPLICATE KEY UPDATE ${SQL_TABLE_PACKAGES} SET |
171 | pname='${PNAME}', |
172 | pver='${PVER}', |
173 | pbuild='${PBUILD}', |
174 | pcat='${pcatid}', |
175 | state='${STATE}', |
176 | description='${DESCRIPTION}', |
177 | homepage='${HOMEPAGE}', |
178 | pkgtype='${PKGTYPE}', |
179 | depend='${DEPEND}', |
180 | sdepend='${SDEPEND}', |
181 | provide='${PROVIDE}', |
182 | time='${time}', |
183 | flag='1' |
184 | WHERE id='${id}'" |
185 | fi |
186 | } |
187 | |
188 | reset_flags() |
189 | { |
190 | # set all flags to zero |
191 | mysqldo "UPDATE ${SQL_TABLE_PACKAGES} SET flag='0'" |
192 | } |
193 | |
194 | prune_old_packages() |
195 | { |
196 | # debug |
197 | # echo "Debug: following ids are requested for deletion:" |
198 | # mysqldo "SELECT id FROM packages WHERE flag='0'" |
199 | |
200 | # delete them |
201 | mysqldo "DELETE FROM ${SQL_TABLE_PACKAGES} WHERE flag='0'" |
202 | } |
203 | |
204 | echo "Processing Categories ..." |
205 | evaluate_categories |
206 | |
207 | echo "Resetting Flags ..." |
208 | reset_flags |
209 | |
210 | # all magefiles |
211 | ALL_MAGEFILES="$(find ${MAGEDIR} -name \*.mage | sort)" |
212 | |
213 | for magefile in ${ALL_MAGEFILES} |
214 | do |
215 | echo "Processing Magefile ${magefile}" |
216 | evaluate_magefile ${magefile} |
217 | done |
218 | |
219 | echo "Pruning outdated Packages ..." |
220 | prune_old_packages |
Properties
Name | Value |
---|---|
svn:keywords | Id |