]> gitweb.michael.orlitzky.com - dead/htsn.git/blobdiff - src/CommandLine.hs
Add scaffolding to allow logging via syslog or a file.
[dead/htsn.git] / src / CommandLine.hs
index 40a1ac887fe3a78de7fa762f8290e3a655ee4248..6d894b91f55048c746f2c02d07a1f1251f97836c 100644 (file)
@@ -1,3 +1,5 @@
+-- | Parse the command-line options, and display help text if
+--   necessary.
 module CommandLine (
   get_args )
 where
@@ -11,40 +13,69 @@ import System.Console.CmdArgs (
   program,
   summary,
   typ,
+  typFile,
   typDir )
 
--- Get the version from Cabal.
+-- This let's us get the version from Cabal.
 import Paths_htsn (version)
 import Data.Version (showVersion)
 
 import OptionalConfiguration (OptionalConfiguration(..))
 
+
+-- | The description of the program, displayed as part of the help.
 description :: String
-description = "Parse XML files from The Sports Network."
+description = "Parse XML files from The Sports Network feed."
 
+-- | The name of this program.
 program_name :: String
 program_name = "htsn"
 
+-- | A summary string output as part of the help.
 my_summary :: String
 my_summary = program_name ++ "-" ++ (showVersion version)
 
+
+-- | A description of the "log_file" option.
+log_file_help :: String
+log_file_help =
+  "If syslog == False, log to the given file."
+
+log_level_help :: String
+log_level_help =
+  "How verbose should the logs be? One of INFO, WARNING, ERROR."
+
+-- | A description of the "password" option.
 password_help :: String
 password_help =
   "Password to use when connecting to the feed"
 
+-- | A description of the "output_directory" option.
 output_directory_help :: String
 output_directory_help =
   "Directory in which to output the XML files; must be writable"
 
+-- | A description of the "syslog" option.
+syslog_help :: String
+syslog_help =
+  "Enable (default) or disable logging to syslog."
+
+-- | A description of the "username" option.
 username_help :: String
 username_help =
   "Username to use when connecting to the feed"
 
+-- | A data structure representing the possible command-line
+--   options. The CmdArgs library is doing heavy magic beneath the
+--   hood here.
 arg_spec :: OptionalConfiguration
 arg_spec =
   OptionalConfiguration {
+    log_file         = def &= typFile        &= help log_file_help,
+    log_level        = def &= typ "LEVEL"    &= help log_level_help,
     password         = def &= typ "PASSWORD" &= help password_help,
     output_directory = def &= typDir         &= help output_directory_help,
+    syslog           = def &= typ "BOOL"     &= help syslog_help,
     username         = def &= typ "USERNAME" &= help username_help,
     feed_hosts       = def &= typ "HOSTNAMES" }
   &= program program_name
@@ -52,6 +83,7 @@ arg_spec =
   &= details [description]
 
 
-
+-- | A convenience function; our only export. Meant to be used in
+--   'main' to retrieve the command-line arguments.
 get_args :: IO OptionalConfiguration
 get_args = cmdArgs arg_spec