+ /Usage/:
+ .
+ @
+ htsn [OPTIONS] [HOSTNAMES]
+ @
+ .
+ The Sports Network <http://www.sportsnetwork.com/> offers an XML feed
+ containing various sports news and statistics. The goal of /htsn/
+ is to watch the XML feed and parse the individual XML documents into
+ files.
+ .
+ Once started, we will choose an XML feed host to connect to. The
+ choice is made from a list in a round-robin fashion, and by default,
+ the list contains all known TSN feed hosts. Once we have a connection,
+ your username and password are sent. If they are accepted, we begin to
+ parse the feed saving all XML files to the configured output directory
+ (see @--output-directory@).
+ .
+ If we encounter an error (say, the connection is dropped), then we
+ will attempt to connect to the next host in the list after waiting
+ five seconds. This process continues indefinitely.
+ .
+ The program can run either interactively (that is, outputting to the
+ console), or as a daemon with the @--daemonize@ flag.
+ .
+ /Input/:
+ .
+ The program takes no input; a username and password must be supplied
+ on the command-line or in a configuration file.
+ .
+ /Output/:
+ .
+ Output is not generated when running as a daemon; otherwise, standard
+ out and standard error are fairly noisy. All traffic between /htsn/ and
+ the feed server is displayed on stdout. Status messages are
+ interspersed when they are generated with warnings and errors going to
+ stderr. The following can be expected:
+ .
+ * The only data we send to the feed are the username and password.
+ These will be highlighted in green on stdout.
+ .
+ * All data received from the feed will be echoed in the default color
+ to stdout.
+ .
+ * Informational messages will be highlighted in cyan and sent to stdout.
+ .
+ * Warnings will be highlighted in yellow and sent to stderr.
+ .
+ * Errors will be highlighted in red and sent to stderr.
+ .
+ /Logging/:
+ .
+ Logging is done either to syslog or a file. The destination and
+ verbosity are controlled by the @--log-file@, @--log-level@,
+ and @--syslog@ parameters which may be specified either on the command
+ line or in the configuration file.
+ .
+ /Options/:
+ .
+ @
+ \--daemonize, -d
+ @
+ .
+ Run as a daemon, in the background. When running as a daemon the
+ \--pidfile, --run-as-group, and --run-as-user flags become relevant.
+ .
+ Default: disabled
+ .
+ @
+ \--log-file
+ @
+ .
+ If you specify a file here, logs will be written to it (possibly in
+ addition to syslog). Can be either a relative or absolute path. It
+ will not be auto-rotated; use something like logrotate for that.
+ .
+ Default: none
+ .
+ @
+ \--log-level
+ @
+ .
+ How verbose should the logs be? We log notifications at four levels:
+ DEBUG, INFO, WARN, and ERROR. Specify the \"most boring\" level of
+ notifications you would like to receive (in all-caps); more
+ interesting notifications will be logged as well. The debug output is
+ extremely verbose and will not be written to syslog even if you try.
+ .
+ Default: INFO
+ .
+ @
+ \--output-directory, -o
+ @
+ .
+ To which directory should we write the XML files?
+ .
+ Default: .
+ .
+ @
+ \--password
+ @
+ .
+ The password associated with your TSN username. A password is
+ required, so you must supply one either on the command line or in a
+ configuration file.
+ .
+ Default: none
+ .
+ @
+ \--pidfile
+ @
+ .
+ (Daemon mode only) Create a PID file in the given location. This is
+ used by the init system on Unix to keep track of the running daemon.
+ .
+ If necessary, its parent directory will be created with owner/group
+ set to the appropriate user/group, but at most one directory will
+ be created (that is, we won't create an entire directory tree).
+ .
+ Default: \/run\/htsn\/htsn.pid
+ .
+ @
+ \--run-as-group
+ @
+ .
+ (Daemon mode only) Run as the given system group. The PID file is
+ written before privileges are dropped, so the only privileges needed
+ by /htsn/ are those necessary to write the XML files and (optionally)
+ the log file.
+ .
+ Default: the current group
+ .
+ @
+ \--run-as-user
+ @
+ .
+ (Daemon mode only) Run as the given system user. The PID file is
+ written before privileges are dropped, so the only privileges needed
+ by /htsn/ are those necessary to write the XML files and (optionally)
+ the log file.
+ .
+ Default: the current user
+ .
+ @
+ \--syslog, -s
+ @
+ .
+ Enable logging to syslog. On Windows this will attempt to communicate
+ (over UDP) with a syslog daemon on localhost, which will most likely
+ not work.
+ .
+ Default: disabled
+ .
+ @
+ \--username, -u
+ @
+ .
+ Your TSN username. A username is required, so you must supply one
+ either on the command line or in a configuration file.
+ .
+ Default: none
+ .
+ /Feed Hosts/:
+ .
+ It is possible to pass a list of feed hostnames on the command-line
+ (see [HOSTNAMES] in the synopsis). By default /htsn/ will attempt
+ to connect to every known TSN XML feed host in a round-robin fashion,
+ so there is rarely a need to do this.
+ .
+ /Configuration File/:
+ .
+ Any of the command-line options mentioned above can be specified in a
+ configuration file instead. We first look for \"htsnrc\" in the
+ system configuration directory. We then look for a file named
+ \".htsnrc\" in the user's home directory. The latter will override
+ the former.
+ .
+ The user's home directory is simply $HOME on Unix; on Windows it's
+ wherever %APPDATA% points. The system configuration directory
+ is determined by Cabal; the /sysconfdir/ parameter during
+ the \"configure\" step is used.
+ .
+ The file's syntax is given by examples in the htsnrc.example file
+ (included with /htsn/).
+ .
+ Options specified on the command-line override those in either
+ configuration file.
+