]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blob - htsn-import.cabal
Fix tasty dependencies and bump to 0.0.4.
[dead/htsn-import.git] / htsn-import.cabal
1 name: htsn-import
2 version: 0.0.4
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.dbschema
15 doc/README.schemagen
16 doc/TODO
17 makefile
18 schema/*.dtd
19 schemagen/Auto_Racing_Schedule_XML/*.xml
20 schemagen/Heartbeat/*.xml
21 schemagen/injuriesxml/*.xml
22 schemagen/Injuries_Detail_XML/*.xml
23 schemagen/newsxml/*.xml
24 schemagen/Odds_XML/*.xml
25 schemagen/scoresxml/*.xml
26 schemagen/weatherxml/*.xml
27 test/shell/*.test
28 test/xml/*.xml
29 test/xml/*.dtd
30 synopsis:
31 Import XML files from The Sports Network into an RDBMS.
32 description:
33 /Usage/:
34 .
35 @
36 htsn-import [OPTIONS] [FILES]
37 @
38 .
39 The Sports Network <http://www.sportsnetwork.com/> offers an XML feed
40 containing various sports news and statistics. Our sister program
41 /htsn/ is capable of retrieving the feed and saving the individual
42 XML documents contained therein. But what to do with them?
43 .
44 The purpose of /htsn-import/ is to take these XML documents and
45 get them into something we can use, a relational database management
46 system (RDBMS), loosely known as a SQL database. The structure of
47 relational database, is, well, relational, and the feed XML is not. So
48 there is some work to do before the data can be inserted.
49 .
50 First, we must parse the XML. Each supported document type (see below)
51 has a full pickle/unpickle implementation (\"pickle\" is simply a
52 synonym for serialize here). That means that we parse the entire
53 document into a data structure, and if we pickle (serialize) that data
54 structure, we get the exact same XML document tha we started with.
55 .
56 This is important for two reasons. First, it serves as a second level
57 of validation. The first validation is performed by the XML parser,
58 but if that succeeds and unpicking fails, we know that something is
59 fishy. Second, we don't ever want to be surprised by some new element
60 or attribute showing up in the XML. The fact that we can unpickle the
61 whole thing now means that we won't be surprised in the future.
62 .
63 The aforementioned feature is especially important because we
64 automatically migrate the database schema every time we import a
65 document. If you attempt to import a \"newsxml.dtd\" document, all
66 database objects relating to the news will be created if they do not
67 exist. We don't want the schema to change out from under us without
68 warning, so it's important that no XML be parsed that would result in
69 a different schema than we had previously. Since we can
70 pickle/unpickle everything already, this should be impossible.
71 .
72 Examples and usage documentation are available in the man page.
73
74 executable htsn-import
75 build-depends:
76 base == 4.*,
77 cmdargs >= 0.10.6,
78 configurator == 0.2.*,
79 directory == 1.2.*,
80 filepath == 1.3.*,
81 hslogger == 1.2.*,
82 htsn-common == 0.0.1,
83 hxt == 9.3.*,
84 groundhog == 0.4.*,
85 groundhog-postgresql == 0.4.*,
86 groundhog-sqlite == 0.4.*,
87 groundhog-th == 0.4.*,
88 MissingH == 1.2.*,
89 old-locale == 1.0.*,
90 tasty == 0.8.*,
91 tasty-hunit == 0.8.*,
92 time == 1.4.*,
93 transformers == 0.3.*,
94 tuple == 0.2.*
95
96 main-is:
97 Main.hs
98
99 hs-source-dirs:
100 src/
101
102 other-modules:
103 Backend
104 CommandLine
105 Configuration
106 ConnectionString
107 ExitCodes
108 OptionalConfiguration
109 TSN.Codegen
110 TSN.Database
111 TSN.DbImport
112 TSN.Picklers
113 TSN.XmlImport
114 TSN.XML.AutoRacingSchedule
115 TSN.XML.Heartbeat
116 TSN.XML.Injuries
117 TSN.XML.InjuriesDetail
118 TSN.XML.News
119 TSN.XML.Odds
120 TSN.XML.Scores
121 TSN.XML.Weather
122 Xml
123
124 ghc-options:
125 -Wall
126 -fwarn-hi-shadowing
127 -fwarn-missing-signatures
128 -fwarn-name-shadowing
129 -fwarn-orphans
130 -fwarn-type-defaults
131 -fwarn-tabs
132 -fwarn-incomplete-record-updates
133 -fwarn-monomorphism-restriction
134 -fwarn-unused-do-bind
135 -O2
136
137 ghc-prof-options:
138 -prof
139 -fprof-auto
140 -fprof-cafs
141 -- The following unbreak profiling with template haskell. We have
142 -- to build the program twice; once without profile and again with
143 -- these flags.
144 -hisuf hi_p
145 -osuf o_p
146
147
148 test-suite testsuite
149 type: exitcode-stdio-1.0
150 hs-source-dirs: src test
151 main-is: TestSuite.hs
152 build-depends:
153 base == 4.*,
154 cmdargs >= 0.10.6,
155 configurator == 0.2.*,
156 directory == 1.2.*,
157 filepath == 1.3.*,
158 hslogger == 1.2.*,
159 htsn-common == 0.0.1,
160 hxt == 9.3.*,
161 groundhog == 0.4.*,
162 groundhog-postgresql == 0.4.*,
163 groundhog-sqlite == 0.4.*,
164 groundhog-th == 0.4.*,
165 MissingH == 1.2.*,
166 old-locale == 1.0.*,
167 tasty == 0.8.*,
168 tasty-hunit == 0.8.*,
169 time == 1.4.*,
170 transformers == 0.3.*,
171 tuple == 0.2.*
172
173 -- It's not entirely clear to me why I have to reproduce all of this.
174 ghc-options:
175 -Wall
176 -fwarn-hi-shadowing
177 -fwarn-missing-signatures
178 -fwarn-name-shadowing
179 -fwarn-orphans
180 -fwarn-type-defaults
181 -fwarn-tabs
182 -fwarn-incomplete-record-updates
183 -fwarn-monomorphism-restriction
184 -fwarn-unused-do-bind
185 -O2
186
187
188 test-suite doctests
189 type: exitcode-stdio-1.0
190 hs-source-dirs: test
191 main-is: Doctests.hs
192 build-depends:
193 base == 4.*,
194 -- Additional test dependencies.
195 doctest == 0.9.*
196
197 -- It's not entirely clear to me why I have to reproduce all of this.
198 ghc-options:
199 -Wall
200 -fwarn-hi-shadowing
201 -fwarn-missing-signatures
202 -fwarn-name-shadowing
203 -fwarn-orphans
204 -fwarn-type-defaults
205 -fwarn-tabs
206 -fwarn-incomplete-record-updates
207 -fwarn-monomorphism-restriction
208 -fwarn-unused-do-bind
209 -rtsopts
210 -threaded
211 -optc-O3
212 -optc-march=native
213 -O2
214
215
216 -- These won't work without shelltestrunner installed in your
217 -- $PATH. Maybe there is some way to tell Cabal that.
218 test-suite shelltests
219 type: exitcode-stdio-1.0
220 hs-source-dirs: test
221 main-is: ShellTests.hs
222
223 build-depends:
224 base == 4.*,
225 cmdargs >= 0.10.6,
226 configurator == 0.2.*,
227 directory == 1.2.*,
228 filepath == 1.3.*,
229 hslogger == 1.2.*,
230 htsn-common == 0.0.1,
231 hxt == 9.3.*,
232 groundhog == 0.4.*,
233 groundhog-postgresql == 0.4.*,
234 groundhog-sqlite == 0.4.*,
235 groundhog-th == 0.4.*,
236 MissingH == 1.2.*,
237 old-locale == 1.0.*,
238 process == 1.1.*,
239 tasty == 0.8.*,
240 tasty-hunit == 0.8.*,
241 time == 1.4.*,
242 transformers == 0.3.*,
243 tuple == 0.2.*
244
245
246
247 source-repository head
248 type: git
249 location: http://michael.orlitzky.com/git/htsn-import.git
250 branch: master