{-# LANGUAGE Haskell98 #-} module System.DotFS.Util.Options where import System.DotFS.Util.Version import System.Exit import System.Environment import System.Console.GetOpt import System.IO data Options = Options { optLog :: String, script :: Bool } defaultOptions :: Options defaultOptions = Options { optLog = undefined, script = False } options :: [OptDescr (Options -> IO Options)] options = [ Option "V?" ["version"] (NoArg printVersion) "show version number" , Option "l" ["log"] (ReqArg (\ arg opt -> return opt {optLog = arg}) "FILE") "write log to FILE" , Option "h" ["help"] (NoArg printHelp) "show this help message" , Option "g" ["gen","gen-symlinks"] (NoArg printSyms) "generate a script to set symlinks" ] printSyms :: Options -> IO Options printSyms os = do hPutStrLn stderr "Printing script to stdout." return $ os {script = True} printHelp :: Options -> IO Options printHelp _ = do prg <- getProgName hPutStrLn stderr "Usage:" hPutStrLn stderr $ "\t"++prg++" [options] confdir mountpoint" hPutStrLn stderr (usageInfo prg options) exitSuccess printVersion :: Options -> IO Options printVersion _ = do hPutStrLn stderr $ "DotFS v" ++ version ++ "\n\nCopyright 2012 Sjoerd Timmer, Paul van der Walt" exitSuccess