Contents of /trunk/pkgtools/mage2mysql.sh
Parent Directory | Revision Log
Revision 807 -
(show annotations)
(download)
(as text)
Wed Feb 11 17:37:27 2009 UTC (15 years, 7 months ago) by niro
File MIME type: application/x-sh
File size: 4364 byte(s)
Wed Feb 11 17:37:27 2009 UTC (15 years, 7 months ago) by niro
File MIME type: application/x-sh
File size: 4364 byte(s)
-changed type of all dependency related fields to 'text'
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})" |
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 |