Defines the main Build
monad and common utils.
- module BuildBox.Build.Testable
- data BuildError
- = ErrorOther String
- | ErrorSystemCmdFailed { }
- | ErrorIOError IOError
- | forall prop . Show prop => ErrorCheckFailed Bool prop
- | ErrorNeeds FilePath
- data BuildState = BuildState {}
- buildStateDefault :: Integer -> FilePath -> BuildState
- type Build a = ErrorT BuildError (StateT BuildState IO) a
- runBuild :: FilePath -> Build a -> IO (Either BuildError a)
- runBuildPrint :: FilePath -> Build a -> IO (Maybe a)
- runBuildPrintWithState :: BuildState -> Build a -> IO (Maybe a)
- throw :: BuildError -> Build a
- needs :: FilePath -> Build ()
- io :: IO a -> Build a
- whenM :: Monad m => m Bool -> m () -> m ()
- out :: Pretty a => a -> Build ()
- outLn :: Pretty a => a -> Build ()
- outBlank :: Build ()
- outLine :: Build ()
- outLINE :: Build ()
- logSystem :: String -> Build ()
Documentation
module BuildBox.Build.Testable
data BuildError Source
The errors we recognise.
ErrorOther String | Some generic error |
ErrorSystemCmdFailed | Some system command fell over, and it barfed out the given stdout and stderr. |
ErrorIOError IOError | Some miscellanous IO action failed. |
forall prop . Show prop => ErrorCheckFailed Bool prop | Some property |
ErrorNeeds FilePath | A build command needs the following file to continue. This can be used for writing make-like bots. |
data BuildState Source
Global builder configuration.
BuildState | |
|
buildStateDefault :: Integer -> FilePath -> BuildStateSource
The default build config.
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
runBuildPrint :: FilePath -> Build a -> IO (Maybe a)Source
Run a build command, reporting whether it succeeded to the console. If it succeeded then return Just the result, else Nothing.
runBuildPrintWithState :: BuildState -> Build a -> IO (Maybe a)Source
Like runBuildPrintWithConfig
but also takes a BuildConfig
.
Errors
throw :: BuildError -> Build aSource
Throw an error in the build monad.
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.