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