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