]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blob - htsn-import.cabal
Move two READMEs into the man page.
[dead/htsn-import.git] / htsn-import.cabal
1 name: htsn-import
2 version: 0.0.5
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/scoresxml/*.xml
161 schemagen/Transactions_XML/*.xml
162 schemagen/weatherxml/*.xml
163 schemagen/Weekly_Sched_XML/*.xml
164 schemagen/WNBA3PPctXML/*.xml
165 schemagen/WNBAAssistsXML/*.xml
166 schemagen/WNBABlocksXML/*.xml
167 schemagen/WNBAFGPctXML/*.xml
168 schemagen/WNBAFoulsXML/*.xml
169 schemagen/WNBAFTPctXML/*.xml
170 schemagen/WNBAMinutesXML/*.xml
171 schemagen/WNBAReboundsXML/*.xml
172 schemagen/WNBAScorersXML/*.xml
173 schemagen/wnbastandxml/*.xml
174 schemagen/WNBAStealsXML/*.xml
175 schemagen/WNBA_Team_Leaders_XML/*.xml
176 schemagen/WNBATurnoversXML/*.xml
177 schemagen/WorldBaseballPreviewXML/*.xml
178 test/shell/*.test
179 test/xml/*.xml
180 test/xml/*.dtd
181 synopsis:
182 Import XML files from The Sports Network into an RDBMS.
183 description:
184 /Usage/:
185 .
186 @
187 htsn-import [OPTIONS] [FILES]
188 @
189 .
190 The Sports Network <http://www.sportsnetwork.com/> offers an XML feed
191 containing various sports news and statistics. Our sister program
192 /htsn/ is capable of retrieving the feed and saving the individual
193 XML documents contained therein. But what to do with them?
194 .
195 The purpose of /htsn-import/ is to take these XML documents and
196 get them into something we can use, a relational database management
197 system (RDBMS), loosely known as a SQL database. The structure of
198 relational database, is, well, relational, and the feed XML is not. So
199 there is some work to do before the data can be inserted.
200 .
201 First, we must parse the XML. Each supported document type (see below)
202 has a full pickle/unpickle implementation (\"pickle\" is simply a
203 synonym for serialize here). That means that we parse the entire
204 document into a data structure, and if we pickle (serialize) that data
205 structure, we get the exact same XML document tha we started with.
206 .
207 This is important for two reasons. First, it serves as a second level
208 of validation. The first validation is performed by the XML parser,
209 but if that succeeds and unpicking fails, we know that something is
210 fishy. Second, we don't ever want to be surprised by some new element
211 or attribute showing up in the XML. The fact that we can unpickle the
212 whole thing now means that we won't be surprised in the future.
213 .
214 The aforementioned feature is especially important because we
215 automatically migrate the database schema every time we import a
216 document. If you attempt to import a \"newsxml.dtd\" document, all
217 database objects relating to the news will be created if they do not
218 exist. We don't want the schema to change out from under us without
219 warning, so it's important that no XML be parsed that would result in
220 a different schema than we had previously. Since we can
221 pickle/unpickle everything already, this should be impossible.
222 .
223 Examples and usage documentation are available in the man page.
224
225 executable htsn-import
226 build-depends:
227 base >= 4.6 && < 5,
228 cmdargs >= 0.10.6,
229 configurator >= 0.2,
230 directory >= 1.2,
231 filepath >= 1.3,
232 hslogger >= 1.2,
233 htsn-common >= 0.0.1,
234 hxt >= 9.3,
235 groundhog >= 0.5,
236 groundhog-postgresql >= 0.5,
237 groundhog-sqlite >= 0.5,
238 groundhog-th >= 0.5,
239 MissingH >= 1.2,
240 old-locale >= 1,
241 split >= 0.2,
242 tasty >= 0.8,
243 tasty-hunit >= 0.8,
244 time >= 1.4,
245 transformers >= 0.3,
246 tuple >= 0.2
247
248 main-is:
249 Main.hs
250
251 hs-source-dirs:
252 src/
253
254 other-modules:
255 Backend
256 CommandLine
257 Configuration
258 ConnectionString
259 ExitCodes
260 OptionalConfiguration
261 TSN.Codegen
262 TSN.Database
263 TSN.DbImport
264 TSN.Parse
265 TSN.Picklers
266 TSN.Team
267 TSN.XmlImport
268 TSN.XML.AutoRacingResults
269 TSN.XML.AutoRacingSchedule
270 TSN.XML.GameInfo
271 TSN.XML.Heartbeat
272 TSN.XML.Injuries
273 TSN.XML.InjuriesDetail
274 TSN.XML.JFile
275 TSN.XML.News
276 TSN.XML.Odds
277 TSN.XML.Scores
278 TSN.XML.SportInfo
279 TSN.XML.Weather
280 Xml
281
282 ghc-options:
283 -Wall
284 -fwarn-hi-shadowing
285 -fwarn-missing-signatures
286 -fwarn-name-shadowing
287 -fwarn-orphans
288 -fwarn-type-defaults
289 -fwarn-tabs
290 -fwarn-incomplete-record-updates
291 -fwarn-monomorphism-restriction
292 -fwarn-unused-do-bind
293 -O2
294
295 ghc-prof-options:
296 -prof
297 -fprof-auto
298 -fprof-cafs
299 -- The following unbreak profiling with template haskell. We have
300 -- to build the program twice; once without profile and again with
301 -- these flags.
302 -hisuf hi_p
303 -osuf o_p
304
305
306 test-suite testsuite
307 type: exitcode-stdio-1.0
308 hs-source-dirs: src test
309 main-is: TestSuite.hs
310 build-depends:
311 base >= 4.6 && < 5,
312 cmdargs >= 0.10.6,
313 configurator >= 0.2,
314 directory >= 1.2,
315 filepath >= 1.3,
316 hslogger >= 1.2,
317 htsn-common >= 0.0.1,
318 hxt >= 9.3,
319 groundhog >= 0.5,
320 groundhog-postgresql >= 0.5,
321 groundhog-sqlite >= 0.5,
322 groundhog-th >= 0.5,
323 MissingH >= 1.2,
324 old-locale >= 1,
325 split >= 0.2,
326 tasty >= 0.8,
327 tasty-hunit >= 0.8,
328 time >= 1.4,
329 transformers >= 0.3,
330 tuple >= 0.2
331
332 -- It's not entirely clear to me why I have to reproduce all of this.
333 ghc-options:
334 -Wall
335 -fwarn-hi-shadowing
336 -fwarn-missing-signatures
337 -fwarn-name-shadowing
338 -fwarn-orphans
339 -fwarn-type-defaults
340 -fwarn-tabs
341 -fwarn-incomplete-record-updates
342 -fwarn-monomorphism-restriction
343 -fwarn-unused-do-bind
344 -O2
345
346
347 test-suite doctests
348 type: exitcode-stdio-1.0
349 hs-source-dirs: test
350 main-is: Doctests.hs
351 build-depends:
352 base >= 4.6 && < 5,
353 -- Additional test dependencies.
354 doctest >= 0.9
355
356 -- It's not entirely clear to me why I have to reproduce all of this.
357 ghc-options:
358 -Wall
359 -fwarn-hi-shadowing
360 -fwarn-missing-signatures
361 -fwarn-name-shadowing
362 -fwarn-orphans
363 -fwarn-type-defaults
364 -fwarn-tabs
365 -fwarn-incomplete-record-updates
366 -fwarn-monomorphism-restriction
367 -fwarn-unused-do-bind
368 -rtsopts
369 -threaded
370 -optc-O3
371 -optc-march=native
372 -O2
373
374
375 -- These won't work without shelltestrunner installed in your
376 -- $PATH. Maybe there is some way to tell Cabal that.
377 test-suite shelltests
378 type: exitcode-stdio-1.0
379 hs-source-dirs: test
380 main-is: ShellTests.hs
381
382 build-depends:
383 base >= 4.6 && < 5,
384 cmdargs >= 0.10.6,
385 configurator >= 0.2,
386 directory >= 1.2,
387 filepath >= 1.3,
388 hslogger >= 1.2,
389 htsn-common >= 0.0.1,
390 hxt >= 9.3,
391 groundhog >= 0.5,
392 groundhog-postgresql >= 0.5,
393 groundhog-sqlite >= 0.5,
394 groundhog-th >= 0.5,
395 MissingH >= 1.2,
396 old-locale >= 1,
397 split >= 0.2,
398 process >= 1.1,
399 tasty >= 0.8,
400 tasty-hunit >= 0.8,
401 time >= 1.4,
402 transformers >= 0.3,
403 tuple >= 0.2
404
405
406
407 source-repository head
408 type: git
409 location: http://michael.orlitzky.com/git/htsn-import.git
410 branch: master