X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FCommandLine.hs;fp=src%2FCommandLine.hs;h=28768f98c3995e2d1f36a54856b4210cf17f0351;hb=9d278c8b8eeff1a1317f2c3b0f7fdf5fb759ffb3;hp=0000000000000000000000000000000000000000;hpb=5726138127d880a12421a78b37a178e061c46efe;p=dead%2Fhtsn-import.git diff --git a/src/CommandLine.hs b/src/CommandLine.hs new file mode 100644 index 0000000..28768f9 --- /dev/null +++ b/src/CommandLine.hs @@ -0,0 +1,83 @@ +-- | Parse the command-line options, and display help text if +-- necessary. +module CommandLine ( + get_args ) +where + +import System.Console.CmdArgs ( + (&=), + args, + cmdArgs, + def, + details, + help, + program, + summary, + typ, + typFile ) + +-- This let's us get the version from Cabal. +import Paths_htsn_import (version) +import Data.Version (showVersion) + +import OptionalConfiguration ( OptionalConfiguration(..) ) + +-- | The description of the program, displayed as part of the help. +description :: String +description = "Import XML files from The Sports Network into an RDBMS." + +-- | The name of this program. +program_name :: String +program_name = "htsn-import" + +-- | A summary string output as part of the help. +my_summary :: String +my_summary = program_name ++ "-" ++ (showVersion version) + +-- | A description of the "backend" option. +backend_help :: String +backend_help = + "Database choice, either \"Sqlite\" or \"Postgres\"." + +-- | A description of the "connection_string" option. +connection_string_help :: String +connection_string_help = + "A database-specific connection string (depends on the backend)." + +-- | A description of the "log_file" option. +log_file_help :: String +log_file_help = + "Log to the given file." + +-- | A description of the "log_level" option. +log_level_help :: String +log_level_help = + "How verbose should the logs be? One of INFO, WARNING, ERROR." + +-- | A description of the "syslog" option. +syslog_help :: String +syslog_help = + "Enable logging to syslog." + + +-- | 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 { + backend = def &= typ "BACKEND" &= help backend_help, + connection_string = def &= typ "STRING" &= help connection_string_help, + log_file = def &= typFile &= help log_file_help, + log_level = def &= typ "LEVEL" &= help log_level_help, + syslog = def &= typ "BOOL" &= help syslog_help, + xml_files = def &= typ "XMLFILES" &= args } + &= program program_name + &= summary my_summary + &= 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