From 7761fb260bf7745b03a4036185c902bafabec82f Mon Sep 17 00:00:00 2001
From: Andrea Rossato <andrea.rossato@ing.unitn.it>
Date: Thu, 27 Sep 2007 19:31:09 +0200
Subject: Main.hs: updated to reflect the API change - code formatting and
 cleanup

darcs-hash:20070927173109-d6583-6f581f76d50e3c61f7325bd420f05776f4952f09.gz
---
 Main.hs | 100 ++++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 50 insertions(+), 50 deletions(-)

diff --git a/Main.hs b/Main.hs
index 8cf0403..b194b3c 100644
--- a/Main.hs
+++ b/Main.hs
@@ -34,17 +34,17 @@ import System.Posix.Files
 -- | The main entry point
 main :: IO ()
 main = 
-    do args <- getArgs
+    do args     <- getArgs
        (o,file) <- getOpts args
-       conf <- case file of
-                 [cfgfile] -> readConfig cfgfile
-                 _         -> readDefaultConfig
-       c <- newIORef conf 
+       conf     <- case file of
+                     [cfgfile] -> readConfig cfgfile
+                     _         -> readDefaultConfig
+       c        <- newIORef conf 
        doOpts c o
-       config <- readIORef c
-       cl <- parseTemplate config (template config)
-       var <- execCommands config cl
-       (d,w) <- createWin config
+       config   <- readIORef c
+       cl       <- parseTemplate config (template config)
+       var      <- mapM execCommand cl
+       (d,w)    <- createWin config
        eventLoop config var d w
        return ()
 
@@ -52,7 +52,7 @@ main =
 readConfig :: FilePath -> IO Config
 readConfig f = 
     do file <- fileExist f
-       s <- if file then readFile f else error $ f ++ ": file not found!\n" ++ usage
+       s    <- if file then readFile f else error $ f ++ ": file not found!\n" ++ usage
        case reads s of
          [(config,_)] -> return config
          [] -> error $ f ++ ": configuration file contains errors!\n" ++ usage
@@ -68,42 +68,42 @@ readDefaultConfig =
 
 data Opts = Help
           | Version 
-          | Font String
-          | BgColor String
-          | FgColor String
-          | XPos String
-          | YPos String
-          | Width String
-          | Height String
-          | Align String
-          | Refresh String
+          | Font     String
+          | BgColor  String
+          | FgColor  String
+          | XPos     String
+          | YPos     String
+          | Width    String
+          | Height   String
+          | Align    String
+          | Refresh  String
           | Commands String
-          | SepChar String
+          | SepChar  String
           | Template String 
        deriving Show
     
 options :: [OptDescr Opts]
 options =
-    [ Option ['h','?'] ["help"] (NoArg Help) "This help"
-    , Option ['V'] ["version"] (NoArg Version) "Show version information"
-    , Option ['f'] ["font"] (ReqArg Font "font name") "The font name"
-    , Option ['B'] ["bgcolor"] (ReqArg BgColor "bg color") "The background color. Default black"
-    , Option ['F'] ["fgcolor"] (ReqArg FgColor "fg color") "The foreground color. Default grey"
-    , Option ['x'] ["xpos"] (ReqArg XPos "x pos") "The x position. Default 0"
-    , Option ['y'] ["ypos"] (ReqArg YPos "y pos") "The y position. Default 0"
-    , Option ['W'] ["width"] (ReqArg Width "width") "The status bar width. Default 1024"
-    , Option ['H'] ["height"] (ReqArg Height "height") "The status bar height. Default 15"
-    , Option ['a'] ["align"] (ReqArg Align "align") "The text alignment: center, left or right.\nDefault: left"
-    , Option ['r'] ["refresh"] (ReqArg Refresh "rate") "The refresh rate in tenth of seconds:\ndefault 1 sec."
-    , Option ['s'] ["sepchar"] (ReqArg SepChar "char") "The character used to separate commands in\nthe output template. Default '%'"
-    , Option ['t'] ["template"] (ReqArg Template "tempate") "The output template"
-    , Option ['c'] ["commands"] (ReqArg Commands  "commands")  "The list of commands to be executed"
+    [ Option ['h','?' ] ["help"     ] (NoArg  Help                 ) "This help"
+    , Option ['V'     ] ["version"  ] (NoArg  Version              ) "Show version information"
+    , Option ['f'     ] ["font"     ] (ReqArg Font "font name"     ) "The font name"
+    , Option ['B'     ] ["bgcolor"  ] (ReqArg BgColor "bg color"   ) "The background color. Default black"
+    , Option ['F'     ] ["fgcolor"  ] (ReqArg FgColor "fg color"   ) "The foreground color. Default grey"
+    , Option ['x'     ] ["xpos"     ] (ReqArg XPos "x pos"         ) "The x position. Default 0"
+    , Option ['y'     ] ["ypos"     ] (ReqArg YPos "y pos"         ) "The y position. Default 0"
+    , Option ['W'     ] ["width"    ] (ReqArg Width "width"        ) "The status bar width. Default 1024"
+    , Option ['H'     ] ["height"   ] (ReqArg Height "height"      ) "The status bar height. Default 15"
+    , Option ['a'     ] ["align"    ] (ReqArg Align "align"        ) "The text alignment: center, left or right.\nDefault: left"
+    , Option ['r'     ] ["refresh"  ] (ReqArg Refresh "rate"       ) "The refresh rate in tenth of seconds:\ndefault 1 sec."
+    , Option ['s'     ] ["sepchar"  ] (ReqArg SepChar "char"       ) "The character used to separate commands in\nthe output template. Default '%'"
+    , Option ['t'     ] ["template" ] (ReqArg Template "tempate"   ) "The output template"
+    , Option ['c'     ] ["commands" ] (ReqArg Commands  "commands" ) "The list of commands to be executed"
     ]
 
 getOpts :: [String] -> IO ([Opts], [String])
 getOpts argv = 
     case getOpt Permute options argv of
-      (o,n,[]) -> return (o,n)
+      (o,n,[])   -> return (o,n)
       (_,_,errs) -> error (concat errs ++ usage)
 
 usage :: String
@@ -127,22 +127,22 @@ doOpts :: IORef Config -> [Opts] -> IO ()
 doOpts _  [] = return ()
 doOpts conf (o:oo) =
     case o of
-      Help -> putStr usage >> exitWith ExitSuccess
-      Version -> putStrLn version >> exitWith ExitSuccess
-      Font s -> modifyIORef conf (\c -> c { font = s }) >> go
-      BgColor s -> modifyIORef conf (\c -> c { bgColor = s }) >> go
-      FgColor s -> modifyIORef conf (\c -> c { fgColor = s }) >> go
-      XPos s -> modifyIORef conf (\c -> c { xPos = readInt s c xPos}) >> go
-      YPos s -> modifyIORef conf (\c -> c { yPos = readInt s c yPos }) >> go
-      Width s -> modifyIORef conf (\c -> c { width = readInt s c width }) >> go
-      Height s -> modifyIORef conf (\c -> c { height = readInt s c height }) >> go
-      Align s -> modifyIORef conf (\c -> c { align = s }) >> go
-      Refresh s -> modifyIORef conf (\c -> c { refresh = readInt s c refresh }) >> go
-      SepChar s -> modifyIORef conf (\c -> c { sepChar = s }) >> go
-      Template s -> modifyIORef conf (\c -> c { template = s }) >> go
+      Help       -> putStr   usage   >> exitWith ExitSuccess
+      Version    -> putStrLn version >> exitWith ExitSuccess
+      Font     s -> modifyIORef conf (\c -> c { font     = s                   }) >> go
+      BgColor  s -> modifyIORef conf (\c -> c { bgColor  = s                   }) >> go
+      FgColor  s -> modifyIORef conf (\c -> c { fgColor  = s                   }) >> go
+      XPos     s -> modifyIORef conf (\c -> c { xPos     = readInt s c xPos    }) >> go
+      YPos     s -> modifyIORef conf (\c -> c { yPos     = readInt s c yPos    }) >> go
+      Width    s -> modifyIORef conf (\c -> c { width    = readInt s c width   }) >> go
+      Height   s -> modifyIORef conf (\c -> c { height   = readInt s c height  }) >> go
+      Align    s -> modifyIORef conf (\c -> c { align    = s                   }) >> go
+      Refresh  s -> modifyIORef conf (\c -> c { refresh  = readInt s c refresh }) >> go
+      SepChar  s -> modifyIORef conf (\c -> c { sepChar  = s                   }) >> go
+      Template s -> modifyIORef conf (\c -> c { template = s                   }) >> go
       Commands s -> case readCom s of
                       Right x -> modifyIORef conf (\c -> c { commands = x })>> go 
-                      Left e -> putStr (e ++ usage) >> exitWith (ExitFailure 1)
+                      Left e  -> putStr (e ++ usage) >> exitWith (ExitFailure 1)
     where readCom str =
               case readStr str of
 	        [x] -> Right x
@@ -153,4 +153,4 @@ doOpts conf (o:oo) =
 	        _  -> f c
           readStr str =
               [x | (x,t) <- reads str, ("","") <- lex t]
-          go = doOpts conf oo
\ No newline at end of file
+          go = doOpts conf oo
-- 
cgit v1.2.3