]> gitweb.michael.orlitzky.com - dead/htsn.git/blob - htsn.cabal
bed9a97bd46ebf29cefc93b10fb5c70200b8c346
[dead/htsn.git] / htsn.cabal
1 name: htsn
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/htsnrc.example
12 doc/man1/htsn.1
13 doc/init.openrc
14 test/xml/*.xml
15 synopsis:
16 Parse XML files from The Sports Network feed.
17 description:
18 /Usage/:
19 .
20 @
21 htsn [OPTIONS] [HOSTNAMES]
22 @
23 .
24 The Sports Network <http://www.sportsnetwork.com/> offers an XML feed
25 containing various sports news and statistics. The goal of /htsn/
26 is to watch the XML feed and parse the individual XML documents into
27 files.
28 .
29 Once started, we will choose an XML feed host to connect to. The
30 choice is made from a list in a round-robin fashion, and by default,
31 the list contains all known TSN feed hosts. Once we have a connection,
32 your username and password are sent. If they are accepted, we begin to
33 parse the feed saving all XML files to the configured output directory
34 (see @--output-directory@).
35 .
36 If we encounter an error (say, the connection is dropped), then we
37 will attempt to connect to the next host in the list after waiting
38 five seconds. This process continues indefinitely.
39 .
40 The program can run either interactively (that is, outputting to the
41 console), or as a daemon with the @--daemonize@ flag.
42 .
43 /Input/:
44 .
45 The program takes no input; a username and password must be supplied
46 on the command-line or in a configuration file.
47 .
48 /Output/:
49 .
50 Output is not generated when running as a daemon; otherwise, standard
51 out and standard error are fairly noisy. All traffic between /htsn/ and
52 the feed server is displayed on stdout. Status messages are
53 interspersed when they are generated with warnings and errors going to
54 stderr. The following can be expected:
55 .
56 * The only data we send to the feed are the username and password.
57 These will be highlighted in green on stdout.
58 .
59 * All data received from the feed will be echoed in the default color
60 to stdout.
61 .
62 * Informational messages will be highlighted in cyan and sent to stdout.
63 .
64 * Warnings will be highlighted in yellow and sent to stderr.
65 .
66 * Errors will be highlighted in red and sent to stderr.
67 .
68 /Logging/:
69 .
70 Logging is done either to syslog or a file. The destination and
71 verbosity are controlled by the @--log-file@, @--log-level@,
72 and @--syslog@ parameters which may be specified either on the command
73 line or in the configuration file.
74 .
75 /Options/:
76 .
77 @
78 \--daemonize, -d
79 @
80 .
81 Run as a daemon, in the background. When running as a daemon the
82 \--pidfile, --run-as-group, and --run-as-user flags become relevant.
83 .
84 Default: disabled
85 .
86 @
87 \--log-file
88 @
89 .
90 If you specify a file here, logs will be written to it (possibly in
91 addition to syslog). Can be either a relative or absolute path. It
92 will not be auto-rotated; use something like logrotate for that.
93 .
94 Default: none
95 .
96 @
97 \--log-level
98 @
99 .
100 How verbose should the logs be? We log notifications at three levels:
101 INFO, WARN, and ERROR. Specify the \"most boring\" level of
102 notifications you would like to receive (in all-caps); more
103 interesting notifications will be logged as well.
104 .
105 Default: INFO
106 .
107 @
108 \--output-directory, -o
109 @
110 .
111 To which directory should we write the XML files?
112 .
113 Default: .
114 .
115 @
116 \--password
117 @
118 .
119 The password associated with your TSN username. A password is
120 required, so you must supply one either on the command line or in a
121 configuration file.
122 .
123 Default: none
124 .
125 @
126 \--pidfile
127 @
128 .
129 (Daemon mode only) Create a PID file in the given location. This is
130 used by the init system on Unix to keep track of the running daemon.
131 .
132 If necessary, its parent directory will be created with owner/group
133 set to the appropriate user/group, but at most one directory will
134 be created (that is, we won't create an entire directory tree).
135 .
136 Default: \/run\/htsn\/htsn.pid
137 .
138 @
139 \--run-as-group
140 @
141 .
142 (Daemon mode only) Run as the given system group. The PID file is
143 written before privileges are dropped, so the only privileges needed
144 by /htsn/ are those necessary to write the XML files and (optionally)
145 the log file.
146 .
147 Default: the current group
148 .
149 @
150 \--run-as-user
151 @
152 .
153 (Daemon mode only) Run as the given system user. The PID file is
154 written before privileges are dropped, so the only privileges needed
155 by /htsn/ are those necessary to write the XML files and (optionally)
156 the log file.
157 .
158 Default: the current user
159 .
160 @
161 \--syslog, -s
162 @
163 .
164 Enable logging to syslog. On Windows this will attempt to communicate
165 (over UDP) with a syslog daemon on localhost, which will most likely
166 not work.
167 .
168 Default: disabled
169 .
170 @
171 \--username, -u
172 @
173 .
174 Your TSN username. A username is required, so you must supply one
175 either on the command line or in a configuration file.
176 .
177 Default: none
178 .
179 /Feed Hosts/:
180 .
181 It is possible to pass a list of feed hostnames on the command-line
182 (see [HOSTNAMES] in the synopsis). By default /htsn/ will attempt
183 to connect to every known TSN XML feed host in a round-robin fashion,
184 so there is rarely a need to do this.
185 .
186 /Configuration File/:
187 .
188 Any of the command-line options mentioned above can be specified in a
189 configuration file instead. We first look for \"htsnrc\" in the
190 system configuration directory. We then look for a file named
191 \".htsnrc\" in the user's home directory. The latter will override
192 the former.
193 .
194 The user's home directory is simply $HOME on Unix; on Windows it's
195 wherever %APPDATA% points. The system configuration directory
196 is determined by Cabal; the /sysconfdir/ parameter during
197 the \"configure\" step is used.
198 .
199 The file's syntax is given by examples in the htsnrc.example file
200 (included with /htsn/).
201 .
202 Options specified on the command-line override those in either
203 configuration file.
204
205
206 executable htsn
207 build-depends:
208 base == 4.*,
209 cmdargs >= 0.10.6,
210 configurator == 0.2.*,
211 directory == 1.2.*,
212 filepath == 1.3.*,
213 hdaemonize == 0.4.*,
214 hslogger == 1.2.*,
215 htsn-common == 0.0.1,
216 hxt == 9.3.*,
217 MissingH == 1.2.*,
218 network == 2.4.*,
219 tasty == 0.7.*,
220 tasty-hunit == 0.4.*,
221 unix == 2.6.*
222
223 main-is:
224 Main.hs
225
226 hs-source-dirs:
227 src/
228
229 other-modules:
230 CommandLine
231 Configuration
232 ExitCodes
233 FeedHosts
234 OptionalConfiguration
235 Unix
236 Xml
237
238 ghc-options:
239 -Wall
240 -fwarn-hi-shadowing
241 -fwarn-missing-signatures
242 -fwarn-name-shadowing
243 -fwarn-orphans
244 -fwarn-type-defaults
245 -fwarn-tabs
246 -fwarn-incomplete-record-updates
247 -fwarn-monomorphism-restriction
248 -fwarn-unused-do-bind
249 -rtsopts
250 -threaded
251 -optc-O3
252 -optc-march=native
253 -O2
254
255 ghc-prof-options:
256 -prof
257 -fprof-auto
258 -fprof-cafs
259
260
261
262 test-suite testsuite
263 type: exitcode-stdio-1.0
264 hs-source-dirs: src test
265 main-is: TestSuite.hs
266 build-depends:
267 base == 4.*,
268 cmdargs >= 0.10.6,
269 configurator == 0.2.*,
270 directory == 1.2.*,
271 filepath == 1.3.*,
272 hdaemonize == 0.4.*,
273 hslogger == 1.2.*,
274 htsn-common == 0.0.1,
275 hxt == 9.3.*,
276 MissingH == 1.2.*,
277 network == 2.4.*,
278 tasty == 0.7.*,
279 tasty-hunit == 0.4.*,
280 unix == 2.6.*
281
282 -- It's not entirely clear to me why I have to reproduce all of this.
283 ghc-options:
284 -Wall
285 -fwarn-hi-shadowing
286 -fwarn-missing-signatures
287 -fwarn-name-shadowing
288 -fwarn-orphans
289 -fwarn-type-defaults
290 -fwarn-tabs
291 -fwarn-incomplete-record-updates
292 -fwarn-monomorphism-restriction
293 -fwarn-unused-do-bind
294 -rtsopts
295 -threaded
296 -optc-O3
297 -optc-march=native
298 -O2
299
300
301 source-repository head
302 type: git
303 location: http://michael.orlitzky.com/git/htsn.git
304 branch: master