packages feed

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