X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fhalcyon.git;a=blobdiff_plain;f=src%2FCommandLine.hs;h=862f9cd9ad92200bd698a41cccbad83f03040230;hp=06c072e8715af292cb8a5d83ffa5ed0cd29b2aa4;hb=eed0d7b0f8ef28864c00925beef5c8853bcd44cc;hpb=f519b55ffe72acd791bdc91b16918603afce1995 diff --git a/src/CommandLine.hs b/src/CommandLine.hs index 06c072e..862f9cd 100644 --- a/src/CommandLine.hs +++ b/src/CommandLine.hs @@ -1,20 +1,27 @@ module CommandLine ( - apply_args, - show_help - ) + get_args, + show_help) where -import System.Console.CmdArgs -import System.Console.CmdArgs.Explicit (process) -import System.Environment (getArgs, withArgs) -import System.Exit (ExitCode(..), exitWith) -import System.IO (hPutStrLn, stderr) +import System.Console.CmdArgs ( + (&=), + args, + cmdArgs, + def, + details, + groupname, + help, + helpArg, + program, + summary, + typ, + versionArg) +import System.Environment (withArgs) -- Get the version from Cabal. import Paths_halcyon (version) import Data.Version (showVersion) -import ExitCodes import OptionalConfiguration description :: String @@ -60,91 +67,73 @@ ignore_retweets_help = "Ignore retweets from other users" verbose_help :: String verbose_help = "Be verbose about stuff" -arg_spec :: Mode (CmdArgs OptionalCfg) +arg_spec :: OptionalCfg arg_spec = - cmdArgsMode $ - OptionalCfg { - consumer_key = - def &= typ "KEY" - &= groupname "Twitter API" - &= help consumer_key_help, - - consumer_secret = - def &= typ "SECRET" - &= groupname "Twitter API" - &= help consumer_secret_help, - - access_token = - def &= typ "TOKEN" - &= groupname "Twitter API" - &= help access_token_help, - - access_secret = - def &= typ "SECRET" - &= groupname "Twitter API" - &= help access_secret_help, - - heartbeat = - def &= groupname "Miscellaneous" - &= help heartbeat_help, - - ignore_replies = - def &= groupname "Miscellaneous" - &= help ignore_replies_help, - - ignore_retweets = - def &= groupname "Miscellaneous" - &= help ignore_retweets_help, - - verbose = - def &= groupname "Miscellaneous" - &= help verbose_help, - - sendmail_path = - def &= typ "PATH" - &= groupname "Mail Options" - &= help sendmail_path_help, - - from_address = - def &= typ "ADDRESS" - &= groupname "Mail Options" - &= help from_address_help, - - to_address = - def &= typ "ADDRESS" - &= groupname "Mail Options" - &= help to_address_help, - - usernames = - def &= args - &= typ "USERNAMES" } - - &= program program_name - &= summary my_summary - &= details [description] - &= helpArg [groupname "Common flags"] - &= versionArg [groupname "Common flags"] + OptionalCfg { + consumer_key = + def &= typ "KEY" + &= groupname "Twitter API" + &= help consumer_key_help, + + consumer_secret = + def &= typ "SECRET" + &= groupname "Twitter API" + &= help consumer_secret_help, + + access_token = + def &= typ "TOKEN" + &= groupname "Twitter API" + &= help access_token_help, + + access_secret = + def &= typ "SECRET" + &= groupname "Twitter API" + &= help access_secret_help, + + heartbeat = + def &= groupname "Miscellaneous" + &= help heartbeat_help, + + ignore_replies = + def &= groupname "Miscellaneous" + &= help ignore_replies_help, + + ignore_retweets = + def &= groupname "Miscellaneous" + &= help ignore_retweets_help, + + verbose = + def &= groupname "Miscellaneous" + &= help verbose_help, + + sendmail_path = + def &= typ "PATH" + &= groupname "Mail Options" + &= help sendmail_path_help, + + from_address = + def &= typ "ADDRESS" + &= groupname "Mail Options" + &= help from_address_help, + + to_address = + def &= typ "ADDRESS" + &= groupname "Mail Options" + &= help to_address_help, + + usernames = + def &= args + &= typ "USERNAMES" } + + &= program program_name + &= summary my_summary + &= details [description] + &= helpArg [groupname "Common flags"] + &= versionArg [groupname "Common flags"] show_help :: IO OptionalCfg -show_help = withArgs ["--help"] parse_args >>= cmdArgsApply +show_help = withArgs ["--help"] get_args - -parse_args :: IO (CmdArgs OptionalCfg) -parse_args = do - x <- getArgs - let y = process arg_spec x - case y of - Right result -> return result - Left err -> do - hPutStrLn stderr err - exitWith (ExitFailure exit_args_parse_failed) - - --- | Really get the command-line arguments. This calls 'parse_args' --- first to replace the default "wrong number of arguments" error, --- and then runs 'cmdArgsApply' on the result to do what the --- 'cmdArgs' function usually does. -apply_args :: IO OptionalCfg -apply_args = - parse_args >>= cmdArgsApply +get_args :: IO OptionalCfg +get_args = cmdArgs arg_spec