puzzle-draw-0.3.0.0: src/Data/CmdLine.hs
module Data.CmdLine
( checkType
, exitErr
, readPuzzle
) where
import Parse.Puzzle
import Data.PuzzleTypes
import qualified Data.Yaml as Y
import System.Exit
checkType :: Maybe String -> IO PuzzleType
checkType mt = do
t <- maybe errno return mt
maybe (errunk t) return (lookupType t)
where
errno = exitErr "no puzzle type given"
errunk t = exitErr $ "unknown puzzle type: " ++ t
readPuzzle :: FilePath -> IO (Either Y.ParseException TypedPuzzle)
readPuzzle = Y.decodeFileEither
exitErr :: String -> IO a
exitErr e = putStrLn e >> exitFailure