SciFlow-0.1.0: src/Scientific/Workflow.hs
module Scientific.Workflow
( module Scientific.Workflow.Types
, module Scientific.Workflow.Builder
, module Scientific.Workflow.Builder.TH
, module Scientific.Workflow.Serialization.Yaml
, runWorkflow
, mapA
) where
import Control.Arrow (Kleisli(..))
import Control.Monad.Reader (runReaderT, forM_)
import qualified Data.Text as T
import Shelly (mkdir_p, shelly, fromText)
import Scientific.Workflow.Builder
import Scientific.Workflow.Builder.TH
import Scientific.Workflow.Types
import Scientific.Workflow.Serialization.Yaml
runWorkflow :: [Workflow] -> WorkflowOpt -> IO ()
runWorkflow wfs opt = do
shelly $ mkdir_p $ fromText $ T.pack $ _logDir opt
forM_ wfs $ \(Workflow wf) -> do
_ <- runReaderT (runProcessor wf ()) $ Config $ _logDir opt
return ()
mapA :: Monad m => Kleisli m a b -> Kleisli m [a] [b]
mapA (Kleisli f) = Kleisli $ mapM f