wasp/waspc/cli/Command.hs

26 lines
818 B
Haskell
Raw Normal View History

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2021-04-28 18:36:00 +03:00
module Command
2021-04-28 18:36:00 +03:00
( Command,
runCommand,
CommandError (..),
)
where
import Control.Monad.Except (ExceptT, MonadError, runExceptT)
import Control.Monad.IO.Class (MonadIO)
2021-04-28 18:36:00 +03:00
newtype Command a = Command {_runCommand :: ExceptT CommandError IO a}
deriving (Functor, Applicative, Monad, MonadIO, MonadError CommandError)
runCommand :: Command a -> IO ()
runCommand cmd = do
2021-04-28 18:36:00 +03:00
errorOrResult <- runExceptT $ _runCommand cmd
case errorOrResult of
Left cmdError -> putStrLn $ "Error: " ++ _errorMsg cmdError
Right _ -> return ()
-- TODO: What if we want to recognize errors in order to handle them?
-- Should we add _commandErrorType? Should CommandError be parametrized by it, is that even possible?
2021-04-28 18:36:00 +03:00
data CommandError = CommandError {_errorMsg :: !String}