]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blob - htsn-import.cabal
Version bump with loosened dependency bounds.
[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.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.6 && < 5,
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.5,
85 groundhog-postgresql >= 0.5,
86 groundhog-sqlite >= 0.5,
87 groundhog-th >= 0.5,
88 MissingH >= 1.2,
89 old-locale >= 1,
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.GameInfo
116 TSN.XML.Heartbeat
117 TSN.XML.Injuries
118 TSN.XML.InjuriesDetail
119 TSN.XML.News
120 TSN.XML.Odds
121 TSN.XML.Scores
122 TSN.XML.SportInfo
123 TSN.XML.Weather
124 Xml
125
126 ghc-options:
127 -Wall
128 -fwarn-hi-shadowing
129 -fwarn-missing-signatures
130 -fwarn-name-shadowing
131 -fwarn-orphans
132 -fwarn-type-defaults
133 -fwarn-tabs
134 -fwarn-incomplete-record-updates
135 -fwarn-monomorphism-restriction
136 -fwarn-unused-do-bind
137 -O2
138
139 ghc-prof-options:
140 -prof
141 -fprof-auto
142 -fprof-cafs
143 -- The following unbreak profiling with template haskell. We have
144 -- to build the program twice; once without profile and again with
145 -- these flags.
146 -hisuf hi_p
147 -osuf o_p
148
149
150 test-suite testsuite
151 type: exitcode-stdio-1.0
152 hs-source-dirs: src test
153 main-is: TestSuite.hs
154 build-depends:
155 base >= 4.6 && < 5,
156 cmdargs >= 0.10.6,
157 configurator >= 0.2,
158 directory >= 1.2,
159 filepath >= 1.3,
160 hslogger >= 1.2,
161 htsn-common >= 0.0.1,
162 hxt >= 9.3,
163 groundhog >= 0.5,
164 groundhog-postgresql >= 0.5,
165 groundhog-sqlite >= 0.5,
166 groundhog-th >= 0.5,
167 MissingH >= 1.2,
168 old-locale >= 1,
169 tasty >= 0.8,
170 tasty-hunit >= 0.8,
171 time >= 1.4,
172 transformers >= 0.3,
173 tuple >= 0.2
174
175 -- It's not entirely clear to me why I have to reproduce all of this.
176 ghc-options:
177 -Wall
178 -fwarn-hi-shadowing
179 -fwarn-missing-signatures
180 -fwarn-name-shadowing
181 -fwarn-orphans
182 -fwarn-type-defaults
183 -fwarn-tabs
184 -fwarn-incomplete-record-updates
185 -fwarn-monomorphism-restriction
186 -fwarn-unused-do-bind
187 -O2
188
189
190 test-suite doctests
191 type: exitcode-stdio-1.0
192 hs-source-dirs: test
193 main-is: Doctests.hs
194 build-depends:
195 base >= 4.6 && < 5,
196 -- Additional test dependencies.
197 doctest >= 0.9
198
199 -- It's not entirely clear to me why I have to reproduce all of this.
200 ghc-options:
201 -Wall
202 -fwarn-hi-shadowing
203 -fwarn-missing-signatures
204 -fwarn-name-shadowing
205 -fwarn-orphans
206 -fwarn-type-defaults
207 -fwarn-tabs
208 -fwarn-incomplete-record-updates
209 -fwarn-monomorphism-restriction
210 -fwarn-unused-do-bind
211 -rtsopts
212 -threaded
213 -optc-O3
214 -optc-march=native
215 -O2
216
217
218 -- These won't work without shelltestrunner installed in your
219 -- $PATH. Maybe there is some way to tell Cabal that.
220 test-suite shelltests
221 type: exitcode-stdio-1.0
222 hs-source-dirs: test
223 main-is: ShellTests.hs
224
225 build-depends:
226 base >= 4.6 && < 5,
227 cmdargs >= 0.10.6,
228 configurator >= 0.2,
229 directory >= 1.2,
230 filepath >= 1.3,
231 hslogger >= 1.2,
232 htsn-common >= 0.0.1,
233 hxt >= 9.3,
234 groundhog >= 0.5,
235 groundhog-postgresql >= 0.5,
236 groundhog-sqlite >= 0.5,
237 groundhog-th >= 0.5,
238 MissingH >= 1.2,
239 old-locale >= 1,
240 process >= 1.1,
241 tasty >= 0.8,
242 tasty-hunit >= 0.8,
243 time >= 1.4,
244 transformers >= 0.3,
245 tuple >= 0.2
246
247
248
249 source-repository head
250 type: git
251 location: http://michael.orlitzky.com/git/htsn-import.git
252 branch: master