Safe Haskell | Safe-Infered |
---|
- type Build a = ErrorT BuildError (StateT BuildState IO) a
- runBuild :: FilePath -> Build a -> IO (Either BuildError a)
- runBuildWithState :: BuildState -> Build a -> IO (Maybe a)
- throw :: BuildError -> Build a
- needs :: FilePath -> Build ()
- io :: IO a -> Build a
- out :: Pretty a => a -> Build ()
- outLn :: Pretty a => a -> Build ()
Documentation
type Build a = ErrorT BuildError (StateT BuildState IO) aSource
The builder monad encapsulates and IO action that can fail with an error, and also read some global configuration info.
Building
runBuild :: FilePath -> Build a -> IO (Either BuildError a)Source
Run a build command. The first argument is a directory that can be used for temporary files (like "/tmp")
runBuildWithState :: BuildState -> Build a -> IO (Maybe a)Source
Like runBuild
but also takes a BuildState
.
Errors
throw :: BuildError -> Build aSource
Throw an error in the build monad.
needs :: FilePath -> Build ()Source
Throw a needs error saying we needs the given file. A catcher could then usefully create the file, or defer the compuation until it has been created.
Utils
Lift an IO action into the build monad.
If the action throws any exceptions they get caught and turned into
ErrorIOError
exceptions in our Build
monad.