]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blob - htsn-import.cabal
Version bump to 0.0.8.
[dead/htsn-import.git] / htsn-import.cabal
1 name: htsn-import
2 version: 0.0.8
3 cabal-version: >= 1.8
4 author: Michael Orlitzky
5 maintainer: Michael Orlitzky <michael@orlitzky.com>
6 category: Utils
7 license: GPL-3
8 license-file: doc/LICENSE
9 build-type: Simple
10 extra-source-files:
11 doc/dbschema/*.png
12 doc/htsn-importrc.example
13 doc/man1/htsn-import.1
14 doc/README.development
15 doc/TODO
16 makefile
17 schema/*.dtd
18 schemagen/AutoRacingResultsXML/*.xml
19 schemagen/Auto_Racing_Schedule_XML/*.xml
20 schemagen/CBASK_3PPctXML/*.xml
21 schemagen/Cbask_All_Tourn_Teams_XML/*.xml
22 schemagen/CBASK_AssistsXML/*.xml
23 schemagen/Cbask_Awards_XML/*.xml
24 schemagen/CBASK_BlocksXML/*.xml
25 schemagen/Cbask_Conf_Standings_XML/*.xml
26 schemagen/Cbask_DivII_III_Indv_Stats_XML/*.xml
27 schemagen/Cbask_DivIII_Team_Stats_XML/*.xml
28 schemagen/Cbask_DivII_Team_Stats_XML/*.xml
29 schemagen/CBASK_FGPctXML/*.xml
30 schemagen/CBASK_FoulsXML/*.xml
31 schemagen/CBASK_FTPctXML/*.xml
32 schemagen/Cbask_Indv_Scoring_XML/*.xml
33 schemagen/CBASK_Lineup_XML/*.xml
34 schemagen/CBASK_MinutesXML/*.xml
35 schemagen/Cbask_Polls_XML/*.xml
36 schemagen/cbaskpreviewxml/*.xml
37 schemagen/CBASK_ReboundsXML/*.xml
38 schemagen/CBASK_ScoringLeadersXML/*.xml
39 schemagen/Cbask_Team_ThreePT_Made_XML/*.xml
40 schemagen/Cbask_Team_ThreePT_PCT_XML/*.xml
41 schemagen/Cbask_Team_Win_Pct_XML/*.xml
42 schemagen/CBASK_TopTwentyFiveResult_XML/*.xml
43 schemagen/Cbask_Top_Twenty_Five_XML/*.xml
44 schemagen/Cbask_Tourn_Awards_XML/*.xml
45 schemagen/Cbask_Tourn_Champs_XML/*.xml
46 schemagen/Cbask_Tourn_Indiv_XML/*.xml
47 schemagen/Cbask_Tourn_Leaders_XML/*.xml
48 schemagen/Cbask_Tourn_MVP_XML/*.xml
49 schemagen/Cbask_Tourn_Records_XML/*.xml
50 schemagen/cflpreviewxml/*.xml
51 schemagen/Heartbeat/*.xml
52 schemagen/Injuries_Detail_XML/*.xml
53 schemagen/injuriesxml/*.xml
54 schemagen/jfilexml/*.xml
55 schemagen/LeagueScheduleXML/*.xml
56 schemagen/Matchup_NBA_NHL_XML/*.xml
57 schemagen/Minor_Baseball_League_Leaders_XML/*.xml
58 schemagen/Minor_Baseball_Standings_XML/*.xml
59 schemagen/Minor_Baseball_Transactions_XML/*.xml
60 schemagen/minorscoresxml/*.xml
61 schemagen/mlbbattingavgxml/*.xml
62 schemagen/mlbdoublesleadersxml/*.xml
63 schemagen/MLB_ERA_Leaders/*.xml
64 schemagen/MLB_Fielding_XML/*.xml
65 schemagen/MLBGamesPlayedXML/*.xml
66 schemagen/MLB_Gaming_Matchup_XML/*.xml
67 schemagen/MLBGIDPXML/*.xml
68 schemagen/MLBHitByPitchXML/*.xml
69 schemagen/mlbhitsleadersxml/*.xml
70 schemagen/mlbhomerunsxml/*.xml
71 schemagen/MLBHRFreqXML/*.xml
72 schemagen/MLBIntWalksXML/*.xml
73 schemagen/MLBKORateXML/*.xml
74 schemagen/MLB_Lineup_XML/*.xml
75 schemagen/MLB_Matchup_XML/*.xml
76 schemagen/mlbonbasepctxml/*.xml
77 schemagen/MLBOPSXML/*.xml
78 schemagen/MLB_Pitching_Appearances_Leaders/*.xml
79 schemagen/MLB_Pitching_Balks_Leaders/*.xml
80 schemagen/MLB_Pitching_CG_Leaders/*.xml
81 schemagen/MLB_Pitching_ER_Allowed_Leaders/*.xml
82 schemagen/MLB_Pitching_Hit_Batters_Leaders/*.xml
83 schemagen/MLB_Pitching_Hits_Allowed_Leaders/*.xml
84 schemagen/MLB_Pitching_HR_Allowed_Leaders/*.xml
85 schemagen/MLB_Pitching_IP_Leaders/*.xml
86 schemagen/MLB_Pitching_Runs_Allowed_Leaders/*.xml
87 schemagen/MLB_Pitching_Saves_Leaders/*.xml
88 schemagen/MLB_Pitching_Shut_Outs_Leaders/*.xml
89 schemagen/MLB_Pitching_Starts_Leaders/*.xml
90 schemagen/MLB_Pitching_Strike_Outs_Leaders/*.xml
91 schemagen/MLB_Pitching_Walks_Leaders/*.xml
92 schemagen/MLB_Pitching_WHIP_Leaders/*.xml
93 schemagen/MLB_Pitching_Wild_Pitches_Leaders/*.xml
94 schemagen/MLB_Pitching_Win_Percentage_Leaders/*.xml
95 schemagen/MLB_Pitching_WL_Leaders/*.xml
96 schemagen/MLBPlateAppsXML/*.xml
97 schemagen/mlbpreviewxml/*.xml
98 schemagen/mlbrbisxml/*.xml
99 schemagen/mlbrunsleadersxml/*.xml
100 schemagen/MLBSacFliesXML/*.xml
101 schemagen/MLBSacrificesXML/*.xml
102 schemagen/MLBSBSuccessXML/*.xml
103 schemagen/mlbsluggingpctxml/*.xml
104 schemagen/mlbstandxml/*.xml
105 schemagen/mlbstandxml_preseason/*.xml
106 schemagen/mlbstolenbasexml/*.xml
107 schemagen/mlbtotalbasesleadersxml/*.xml
108 schemagen/mlbtriplesleadersxml/*.xml
109 schemagen/MLBWalkRateXML/*.xml
110 schemagen/mlbwalksleadersxml/*.xml
111 schemagen/MLBXtraBaseHitsXML/*.xml
112 schemagen/MLS_Preview_XML/*.xml
113 schemagen/NBA3PPctXML/*.xml
114 schemagen/NBAAssistsXML/*.xml
115 schemagen/NBABlocksXML/*.xml
116 schemagen/nbaconfrecxml/*.xml
117 schemagen/nbadaysxml/*.xml
118 schemagen/nbadivisionsxml/*.xml
119 schemagen/NBAFGPctXML/*.xml
120 schemagen/NBAFoulsXML/*.xml
121 schemagen/NBAFTPctXML/*.xml
122 schemagen/NBA_Gaming_Matchup_XML/*.xml
123 schemagen/NBALineupXML/*.xml
124 schemagen/NBAMinutesXML/*.xml
125 schemagen/NBA_Playoff_Matchup_XML/*.xml
126 schemagen/nbapreviewxml/*.xml
127 schemagen/NBAReboundsXML/*.xml
128 schemagen/NBAScorersXML/*.xml
129 schemagen/nbastandxml/*.xml
130 schemagen/NBAStealsXML/*.xml
131 schemagen/nbateamleadersxml/*.xml
132 schemagen/NBA_Team_Stats_XML/*.xml
133 schemagen/nbatripledoublexml/*.xml
134 schemagen/NBATurnoversXML/*.xml
135 schemagen/NCAA_Conference_Schedule_XML/*.xml
136 schemagen/NCAA_FB_Preview_XML/*.xml
137 schemagen/newsxml/*.xml
138 schemagen/nflfirstdownxml/*.xml
139 schemagen/NFLFumbleLeaderXML/*.xml
140 schemagen/NFLGiveTakeXML/*.xml
141 schemagen/NFLInside20XML/*.xml
142 schemagen/NFL_KickingLeaders_XML/*.xml
143 schemagen/NFLKickoffsXML/*.xml
144 schemagen/NFLMondayNightXML/*.xml
145 schemagen/NFL_NBA_Draft_XML/*.xml
146 schemagen/NFL_NCAA_FB_Matchup_XML/*.xml
147 schemagen/NFLPassLeadXML/*.xml
148 schemagen/nflpreviewxml/*.xml
149 schemagen/NFLQBStartsXML/*.xml
150 schemagen/NFL_Roster_XML/*.xml
151 schemagen/NFLSackLeadersXML/*.xml
152 schemagen/nflstandxml/*.xml
153 schemagen/NFLTeamRankingsXML/*.xml
154 schemagen/NFL_Team_Stats_XML/*.xml
155 schemagen/NFLTopPerformanceXML/*.xml
156 schemagen/NFLTotalYardageXML/*.xml
157 schemagen/nhlpreviewxml/*.xml
158 schemagen/Odds_XML/*.xml
159 schemagen/recapxml/*.xml
160 schemagen/Schedule_Changes_XML/*.xml
161 schemagen/scoresxml/*.xml
162 schemagen/Transactions_XML/*.xml
163 schemagen/weatherxml/*.xml
164 schemagen/Weekly_Sched_XML/*.xml
165 schemagen/WNBA3PPctXML/*.xml
166 schemagen/WNBAAssistsXML/*.xml
167 schemagen/WNBABlocksXML/*.xml
168 schemagen/WNBAFGPctXML/*.xml
169 schemagen/WNBAFoulsXML/*.xml
170 schemagen/WNBAFTPctXML/*.xml
171 schemagen/WNBAMinutesXML/*.xml
172 schemagen/WNBAReboundsXML/*.xml
173 schemagen/WNBAScorersXML/*.xml
174 schemagen/wnbastandxml/*.xml
175 schemagen/WNBAStealsXML/*.xml
176 schemagen/WNBA_Team_Leaders_XML/*.xml
177 schemagen/WNBATurnoversXML/*.xml
178 schemagen/WorldBaseballPreviewXML/*.xml
179 test/shell/*.test
180 test/xml/*.xml
181 test/xml/*.dtd
182 test/xml/gameinfo/*.xml
183 test/xml/gameinfo/*.dtd
184 test/xml/sportinfo/*.xml
185 test/xml/sportinfo/*.dtd
186 synopsis:
187 Import XML files from The Sports Network into an RDBMS.
188 description:
189 /Usage/:
190 .
191 @
192 htsn-import [OPTIONS] [FILES]
193 @
194 .
195 The Sports Network <http://www.sportsnetwork.com/> offers an XML feed
196 containing various sports news and statistics. Our sister program
197 /htsn/ is capable of retrieving the feed and saving the individual
198 XML documents contained therein. But what to do with them?
199 .
200 The purpose of /htsn-import/ is to take these XML documents and
201 get them into something we can use, a relational database management
202 system (RDBMS), i.e. \"a SQL database\". The structure of
203 relational database, is, well, relational, and the feed XML is not. So
204 there is some work to do before the data can be inserted.
205 .
206 First, we must parse the XML. Each supported document type (see below)
207 has a full pickle/unpickle implementation (\"pickle\" is simply a
208 synonym for serialize here). That means that we parse the entire
209 document into a data structure, and if we pickle (serialize) that data
210 structure, we get the exact same XML document tha we started with.
211 .
212 This is important for two reasons. First, it serves as a second level
213 of validation. The first validation is performed by the XML parser,
214 but if that succeeds and unpicking fails, we know that something is
215 fishy. Second, we don't ever want to be surprised by some new element
216 or attribute showing up in the XML. The fact that we can unpickle the
217 whole thing now means that we won't be surprised in the future.
218 .
219 The aforementioned feature is especially important because we
220 automatically migrate the database schema every time we import a
221 document. If you attempt to import a \"newsxml.dtd\" document, all
222 database objects relating to the news will be created if they do not
223 exist. We don't want the schema to change out from under us without
224 warning, so it's important that no XML be parsed that would result in
225 a different schema than we had previously. Since we can
226 pickle/unpickle everything already, this should be impossible.
227 .
228 Examples and usage documentation are available in the man page.
229
230 executable htsn-import
231 build-depends:
232 base >= 4.6 && < 5,
233 cmdargs >= 0.10.6,
234 configurator >= 0.2,
235 directory >= 1.2,
236 filepath >= 1.3,
237 hslogger >= 1.2,
238 htsn-common >= 0.0.1,
239 hxt >= 9.3,
240 groundhog >= 0.5,
241 groundhog-postgresql >= 0.5,
242 groundhog-sqlite >= 0.5,
243 groundhog-th >= 0.5,
244 MissingH >= 1.2,
245 old-locale >= 1,
246 split >= 0.2,
247 tasty >= 0.8,
248 tasty-hunit >= 0.8,
249 time >= 1.4,
250 transformers >= 0.3,
251 tuple >= 0.2
252
253 main-is:
254 Main.hs
255
256 hs-source-dirs:
257 src/
258
259 other-modules:
260 Backend
261 CommandLine
262 Configuration
263 ConnectionString
264 ExitCodes
265 OptionalConfiguration
266 TSN.Codegen
267 TSN.Database
268 TSN.DbImport
269 TSN.Location
270 TSN.Parse
271 TSN.Picklers
272 TSN.Team
273 TSN.XmlImport
274 TSN.XML.AutoRacingResults
275 TSN.XML.AutoRacingSchedule
276 TSN.XML.GameInfo
277 TSN.XML.Heartbeat
278 TSN.XML.Injuries
279 TSN.XML.InjuriesDetail
280 TSN.XML.JFile
281 TSN.XML.News
282 TSN.XML.Odds
283 TSN.XML.ScheduleChanges
284 TSN.XML.Scores
285 TSN.XML.SportInfo
286 TSN.XML.Weather
287 Xml
288
289 ghc-options:
290 -Wall
291 -fwarn-hi-shadowing
292 -fwarn-missing-signatures
293 -fwarn-name-shadowing
294 -fwarn-orphans
295 -fwarn-type-defaults
296 -fwarn-tabs
297 -fwarn-incomplete-record-updates
298 -fwarn-monomorphism-restriction
299 -fwarn-unused-do-bind
300 -O2
301
302 ghc-prof-options:
303 -prof
304 -fprof-auto
305 -fprof-cafs
306 -- The following unbreak profiling with template haskell. We have
307 -- to build the program twice; once without profile and again with
308 -- these flags.
309 -hisuf hi_p
310 -osuf o_p
311
312
313 test-suite testsuite
314 type: exitcode-stdio-1.0
315 hs-source-dirs: src test
316 main-is: TestSuite.hs
317 build-depends:
318 base >= 4.6 && < 5,
319 cmdargs >= 0.10.6,
320 configurator >= 0.2,
321 directory >= 1.2,
322 filepath >= 1.3,
323 hslogger >= 1.2,
324 htsn-common >= 0.0.1,
325 hxt >= 9.3,
326 groundhog >= 0.5,
327 groundhog-postgresql >= 0.5,
328 groundhog-sqlite >= 0.5,
329 groundhog-th >= 0.5,
330 MissingH >= 1.2,
331 old-locale >= 1,
332 split >= 0.2,
333 tasty >= 0.8,
334 tasty-hunit >= 0.8,
335 time >= 1.4,
336 transformers >= 0.3,
337 tuple >= 0.2
338
339 -- It's not entirely clear to me why I have to reproduce all of this.
340 ghc-options:
341 -Wall
342 -fwarn-hi-shadowing
343 -fwarn-missing-signatures
344 -fwarn-name-shadowing
345 -fwarn-orphans
346 -fwarn-type-defaults
347 -fwarn-tabs
348 -fwarn-incomplete-record-updates
349 -fwarn-monomorphism-restriction
350 -fwarn-unused-do-bind
351 -O2
352
353
354 test-suite doctests
355 type: exitcode-stdio-1.0
356 hs-source-dirs: test
357 main-is: Doctests.hs
358 build-depends:
359 base >= 4.6 && < 5,
360 -- Additional test dependencies.
361 doctest >= 0.9
362
363 -- It's not entirely clear to me why I have to reproduce all of this.
364 ghc-options:
365 -Wall
366 -fwarn-hi-shadowing
367 -fwarn-missing-signatures
368 -fwarn-name-shadowing
369 -fwarn-orphans
370 -fwarn-type-defaults
371 -fwarn-tabs
372 -fwarn-incomplete-record-updates
373 -fwarn-monomorphism-restriction
374 -fwarn-unused-do-bind
375 -rtsopts
376 -threaded
377 -optc-O3
378 -optc-march=native
379 -O2
380
381
382 -- These won't work without shelltestrunner installed in your
383 -- $PATH. Maybe there is some way to tell Cabal that.
384 test-suite shelltests
385 type: exitcode-stdio-1.0
386 hs-source-dirs: test
387 main-is: ShellTests.hs
388
389 build-depends:
390 base >= 4.6 && < 5,
391 cmdargs >= 0.10.6,
392 configurator >= 0.2,
393 directory >= 1.2,
394 filepath >= 1.3,
395 hslogger >= 1.2,
396 htsn-common >= 0.0.1,
397 hxt >= 9.3,
398 groundhog >= 0.5,
399 groundhog-postgresql >= 0.5,
400 groundhog-sqlite >= 0.5,
401 groundhog-th >= 0.5,
402 MissingH >= 1.2,
403 old-locale >= 1,
404 split >= 0.2,
405 process >= 1.1,
406 tasty >= 0.8,
407 tasty-hunit >= 0.8,
408 time >= 1.4,
409 transformers >= 0.3,
410 tuple >= 0.2
411
412
413
414 source-repository head
415 type: git
416 location: http://michael.orlitzky.com/git/htsn-import.git
417 branch: master