ui-command-0.5.0: examples/ui-cmd-hello.hs
module Main where
import Control.Monad (liftM, when)
import Control.Monad.Trans (liftIO)
import Data.Default
import Data.List (intersperse)
import UI.Command
------------------------------------------------------------
-- world
--
world :: Command ()
world = defCmd {
cmdName = "world",
cmdHandler = worldHandler,
cmdCategory = "Greetings",
cmdShortDesc = "An implementation of the standard software greeting."
}
worldHandler = liftIO $ putStrLn "Hello world!"
------------------------------------------------------------
-- times
--
times = defCmd {
cmdName = "times",
cmdHandler = timesHandler,
cmdCategory = "Cat Math",
cmdShortDesc = "A repetition of salutation",
cmdExamples = [("Say hello 7 times", "7"), ("Say hello 3 times", "3")]
}
timesHandler = do
args <- appArgs
when (args == []) $ return ()
liftIO $ putStrLn $ concat . intersperse " " $ take (read $ head args) (repeat "hello")
------------------------------------------------------------
-- The Application
--
hello :: Application () ()
hello = def {
appName = "hello",
appVersion = "0.1",
appAuthors = ["Joe R. Hacker"],
appBugEmail = "bugs@example.com",
appShortDesc = "UI.Command example program",
appLongDesc = longDesc,
appCategories = ["Greetings", "Cat Math"],
appSeeAlso = ["tractorgen"],
appProject = "Haskell",
appCmds = [world, times]
}
longDesc = "a demonstration program for the UI.Command framework."
------------------------------------------------------------
-- Main
--
main :: IO ()
main = appMain hello