From 03795ac2f793421af9ef2e0f3bbe5295de456933 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sun, 1 Aug 2010 17:59:02 +0200 Subject: Moved the CLI argument processing stuff in its own file. --- HsbotIrcBot/Hsbot/Irc/CLI.hs | 63 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 HsbotIrcBot/Hsbot/Irc/CLI.hs (limited to 'HsbotIrcBot/Hsbot/Irc/CLI.hs') diff --git a/HsbotIrcBot/Hsbot/Irc/CLI.hs b/HsbotIrcBot/Hsbot/Irc/CLI.hs new file mode 100644 index 0000000..4147bd1 --- /dev/null +++ b/HsbotIrcBot/Hsbot/Irc/CLI.hs @@ -0,0 +1,63 @@ +module Hsbot.Irc.CLI + ( Options (..) + , defaultOptions + , header + , options + ) where + +import System.Console.GetOpt +import System.Exit + +-- CLI argument parting stuff {{{ +-- | CLI options +data Options = Options + { optDebug :: Bool + , optConfigFile :: Maybe String + , optGroup :: Maybe String + , optUser :: Maybe String + , optVerbose :: Bool + } deriving (Show) + +-- | CLI default options +defaultOptions :: Options +defaultOptions = Options { optDebug = False + , optConfigFile = Nothing + , optGroup = Nothing + , optUser = Nothing + , optVerbose = False } + +-- | CLI options logic +options :: [ OptDescr (Options -> IO Options) ] +options = + [ Option "d" ["debug"] + (NoArg (\opt -> return opt { optDebug = True, optVerbose = True })) + "Enter verbose debug mode and prevents Hsbot from forking in background" + , Option "f" ["file"] + (ReqArg (\arg opt -> return opt { optConfigFile = return arg }) "") + "The config file to use" + , Option "g" ["group"] + (ReqArg (\arg opt -> return opt { optGroup = return arg }) "") + "The group hsbot will run as" + , Option "h" ["help"] + (NoArg (\_ -> do + putStrLn $ usageInfo header options + exitWith ExitSuccess)) + "Print this help message" + , Option "u" ["user"] + (ReqArg (\arg opt -> return opt { optUser = return arg }) "") + "The user hsbot will run as" + , Option "v" ["verbose"] + (NoArg (\opt -> return opt { optVerbose = True })) + "Enable verbose messages" + , Option "V" ["version"] + (NoArg (\_ -> do + putStrLn "hsbot-irc version 0.3" + exitWith ExitSuccess)) + "Show version" + ] + +-- | Usage header +header :: String +header = "Usage: hsbot-irc [-dhvV] [-f config_file] [-u user] [-g group]" +-- }}} + -- cgit v1.2.3