diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2025-04-11 20:25:15 +0200 | 
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-04-11 20:25:15 +0200 | 
| commit | d6c4daa2fb0b7f8dd0afb3ef50b2b85106bfd2ac (patch) | |
| tree | a204b588dcd58f5da0f851024f80ed9179b7d6bd /src/Command | |
| parent | 75f57ad0287c8aa1a217ec90cbc8533cc3b8d799 (diff) | |
Evaluate job and jobset in the Eval monad
Diffstat (limited to 'src/Command')
| -rw-r--r-- | src/Command/Run.hs | 22 | 
1 files changed, 10 insertions, 12 deletions
| diff --git a/src/Command/Run.hs b/src/Command/Run.hs index 61a4620..0535955 100644 --- a/src/Command/Run.hs +++ b/src/Command/Run.hs @@ -136,15 +136,13 @@ argumentJobSource names = do      cidPart <- case jobsetCommit of          Just commit -> (: []) . JobIdTree . treeId <$> getCommitTree commit          Nothing -> return [] -    einputBase <- getEvalInput -    let einput = einputBase -            { eiCurrentIdRev = cidPart ++ eiCurrentIdRev einputBase -            }      jobsetJobsEither <- fmap Right $ forM names $ \name ->          case find ((name ==) . jobName) (configJobs config) of              Just job -> return job              Nothing -> tfail $ "job `" <> textJobName name <> "' not found" -    oneshotJobSource [ evalJobSet einput JobSet {..} ] +    oneshotJobSource . (: []) =<< +        cmdEvalWith (\ei -> ei { eiCurrentIdRev = cidPart ++ eiCurrentIdRev ei }) +        (evalJobSet JobSet {..})  loadJobSetFromRoot :: (MonadIO m, MonadFail m) => JobRoot -> Commit -> m DeclaredJobSet  loadJobSetFromRoot root commit = case root of @@ -158,14 +156,12 @@ rangeSource :: Text -> Text -> CommandExec JobSource  rangeSource base tip = do      root <- getJobRoot      repo <- getDefaultRepo -    einputBase <- getEvalInput      commits <- listCommits repo (base <> ".." <> tip)      jobsets <- forM commits $ \commit -> do          tree <- getCommitTree commit -        let einput = einputBase -                { eiCurrentIdRev = JobIdTree (treeId tree) : eiCurrentIdRev einputBase -                } -        evalJobSet einput <$> loadJobSetFromRoot root commit +        cmdEvalWith (\ei -> ei +            { eiCurrentIdRev = JobIdTree (treeId tree) : eiCurrentIdRev ei +            }) . evalJobSet =<< loadJobSetFromRoot root commit      oneshotJobSource jobsets @@ -189,7 +185,8 @@ watchBranchSource branch = do                  let einput = einputBase                          { eiCurrentIdRev = JobIdTree (treeId tree) : eiCurrentIdRev einputBase                          } -                evalJobSet einput <$> loadJobSetFromRoot root commit +                either (fail . T.unpack . textEvalError) return =<< +                    flip runEval einput . evalJobSet =<< loadJobSetFromRoot root commit              nextvar <- newEmptyTMVarIO              atomically $ putTMVar tmvar $ Just ( jobsets, JobSource nextvar )              go cur nextvar @@ -218,7 +215,8 @@ watchTagSource pat = do                  let einput = einputBase                          { eiCurrentIdRev = JobIdTree (treeId tree) : eiCurrentIdRev einputBase                          } -                jobset <- evalJobSet einput <$> (loadJobSetFromRoot root) (tagObject tag) +                jobset <- either (fail . T.unpack . textEvalError) return =<< +                    flip runEval einput . evalJobSet =<< loadJobSetFromRoot root (tagObject tag)                  nextvar <- newEmptyTMVarIO                  atomically $ putTMVar tmvar $ Just ( [ jobset ], JobSource nextvar )                  go nextvar |