diff options
Diffstat (limited to 'Monitors')
-rw-r--r-- | Monitors/Common.hs | 69 |
1 files changed, 16 insertions, 53 deletions
diff --git a/Monitors/Common.hs b/Monitors/Common.hs index 616c8bd..06d5cd2 100644 --- a/Monitors/Common.hs +++ b/Monitors/Common.hs @@ -21,7 +21,6 @@ module Monitors.Common ( , setConfigValue , getConfigValue , mkMConfig - , runMonitor , runM , io -- * Parsers @@ -58,7 +57,6 @@ import Numeric import Text.ParserCombinators.Parsec import System.Console.GetOpt -import System.Environment -- $monitor @@ -71,9 +69,6 @@ data MConfig = , high :: IORef Int , highColor :: IORef (Maybe String) , template :: IORef String --- , packageName :: IORef String --- , usageTail :: IORef String --- , addedArgs :: IORef [OptDescr Opts] , export :: IORef [String] } @@ -108,12 +103,8 @@ mkMConfig tmpl exprts = h <- newIORef 66 hc <- newIORef Nothing t <- newIORef tmpl --- p <- newIORef pkg --- u <- newIORef usg --- a <- newIORef args e <- newIORef exprts return $ MC nc l lc h hc t e --- return $ MC nc l lc h hc t p u a e data Opts = HighColor String | NormalColor String @@ -122,45 +113,24 @@ data Opts = HighColor String | High String | Template String -options :: Monitor [OptDescr Opts] +options :: [OptDescr Opts] options = - do t <- getConfigValue export - tmpl <- getConfigValue template - return $ [ Option ['H'] ["High"] (ReqArg High "number") "The high threshold" - , Option ['L'] ["Low"] (ReqArg Low "number") "The low threshold" - , Option ['h'] ["high"] (ReqArg HighColor "color number") "Color for the high threshold: ex \"#FF0000\"" - , Option ['n'] ["normal"] (ReqArg NormalColor "color number") "Color for the normal threshold: ex \"#00FF00\"" - , Option ['l'] ["low"] (ReqArg LowColor "color number") "Color for the low threshold: ex \"#0000FF\"" - , Option ['t'] ["template"] (ReqArg Template "output template") - ("Output template.\nAvaliable variables: " ++ show t ++ "\nDefault template: " ++ show tmpl) - ] -{- -usage :: Monitor () -usage = - do pn <- io $ getProgName - opts <- options - io $ putStr $ usageInfo ("Usage: " ++ pn ++ " [OPTIONS...] ") opts - -version :: String -version = "0.5" - -versinfo :: String -> String -> IO () -versinfo p v = putStrLn $ p ++" " ++ v --} + [ Option ['H'] ["High"] (ReqArg High "number") "The high threshold" + , Option ['L'] ["Low"] (ReqArg Low "number") "The low threshold" + , Option ['h'] ["high"] (ReqArg HighColor "color number") "Color for the high threshold: ex \"#FF0000\"" + , Option ['n'] ["normal"] (ReqArg NormalColor "color number") "Color for the normal threshold: ex \"#00FF00\"" + , Option ['l'] ["low"] (ReqArg LowColor "color number") "Color for the low threshold: ex \"#0000FF\"" + , Option ['t'] ["template"] (ReqArg Template "output template") "Output template." + ] doArgs :: [String] - -> Monitor String -> ([String] -> Monitor String) -> Monitor String -doArgs args actionFail action = - do opts <- options - case (getOpt Permute opts args) of - (o, n, []) -> do - doConfigOptions o - case n of - [] -> actionFail - nd -> action nd - (_, _, errs) -> io $ error (concat errs) +doArgs args action = + do case (getOpt Permute options args) of + (o, n, []) -> do doConfigOptions o + action n + (_, _, errs) -> return (concat errs) doConfigOptions :: [Opts] -> Monitor () doConfigOptions [] = io $ return () @@ -174,17 +144,10 @@ doConfigOptions (o:oo) = LowColor lc -> setConfigValue (Just lc) lowColor >> next Template t -> setConfigValue t template >> next -runMonitor :: IO MConfig -> Monitor String -> ([String] -> Monitor String) -> IO () -runMonitor conf actionFail action = +runM :: [String] -> IO MConfig -> ([String] -> Monitor String) -> IO String +runM args conf action = do c <- conf - args <- getArgs - let ac = doArgs args actionFail action - putStrLn =<< runReaderT ac c - -runM :: [String] -> IO MConfig -> Monitor String -> ([String] -> Monitor String) -> IO String -runM args conf actionFail action = - do c <- conf - let ac = doArgs args actionFail action + let ac = doArgs args action runReaderT ac c io :: IO a -> Monitor a |