Monadoro-0.2.5.0: src/Monadoro.hs
module Monadoro (monadoro) where
import Data.List (intersect)
import Data.Version (showVersion)
import Paths_Monadoro (version)
import System.Environment (getArgs)
import CountdownLoop (countdown)
import Pomodoro (session)
main :: IO ()
main = monadoro
monadoro :: IO ()
monadoro = getArgs >>= parseArgs
parseArgs :: [String] -> IO ()
parseArgs xs
| xs `containsAnyOf` ["--help", "-h"] = putStrLn usage
| xs `containsAnyOf` ["--version", "-v"] = putStrLn . showVersion $ version
| xs `containsAnyOf` ["--session", "-s"] = session
| otherwise = runTimer xs
containsAnyOf :: (Eq a) => [a] -> [a] -> Bool
containsAnyOf a = not . null . intersect a
usage :: String
usage = "Usage: monadoro [-vh] [--session] [INTERVAL [...]]"
runTimer :: [String] -> IO ()
runTimer [] = countdown "25:00" >> return ()
runTimer (t:[]) = countdown t >> return ()
runTimer (t:ts) = parseArgs [t] >> parseArgs ts