Magellan Linux

Annotation of /trunk/pkgtools/mage2mysql.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 806 - (hide annotations) (download) (as text)
Wed Feb 11 16:17:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 4388 byte(s)
-added mg_* suffix to table names
1 niro 802 #!/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 niro 806 SQL_TABLE_PACKAGES=mg_packages
16     SQL_TABLE_CATEGORIES=mg_categories
17 niro 802
18     create_database()
19     {
20     # create categories table
21 niro 804 mysqldo "CREATE TABLE IF NOT EXISTS ${SQL_TABLE_CATEGORIES} (
22 niro 802 id int(10) NOT NULL auto_increment,
23     pcat varchar(255) NOT NULL,
24     PRIMARY KEY (id)
25     )"
26    
27     # create packages table
28 niro 804 mysqldo "CREATE TABLE IF NOT EXISTS ${SQL_TABLE_PACKAGES} (
29 niro 802 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 niro 805 description text default NULL,
36 niro 802 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 niro 804 id=$(mysqldo "SELECT id FROM ${SQL_TABLE_CATEGORIES} WHERE pcat='${pcat}'")
61 niro 802
62     # only add if not found
63     if [[ -z ${id} ]]
64     then
65 niro 804 mysqldo "INSERT INTO ${SQL_TABLE_CATEGORIES} ( pcat ) VALUES ( '${pcat}' )"
66 niro 802 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 niro 803 DESCRIPTION="$(get_value_from_magefile DESCRIPTION ${MAGEFILE})"
96 niro 802
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 niro 804 local id=$(mysqldo "SELECT id FROM ${SQL_TABLE_PACKAGES} WHERE pname='${PNAME}' AND state='${STATE}'")
109 niro 802
110     # get categorie id
111 niro 804 local pcatid=$(mysqldo "SELECT id FROM ${SQL_TABLE_CATEGORIES} WHERE pcat='${PCAT}'")
112 niro 802
113     # get current time
114     local time="$(date +%F\ %T)"
115    
116     # found, then update
117     if [[ ! -z ${id} ]]
118     then
119 niro 804 mysqldo "UPDATE ${SQL_TABLE_PACKAGES} SET
120 niro 802 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 niro 804 mysqldo "INSERT INTO ${SQL_TABLE_PACKAGES} (
138 niro 802 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 niro 804 mysqldo "UPDATE ${SQL_TABLE_PACKAGES} SET flag='0'"
174 niro 802 }
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 niro 804 mysqldo "DELETE FROM ${SQL_TABLE_PACKAGES} WHERE flag='0'"
184 niro 802 }
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