summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-12-03 21:59:38 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2025-12-03 22:20:50 +0100
commita96e4f84c7f0f69704e72a9a1b08baba5aeca0c4 (patch)
tree9579fc2c753b8b8b14163beedb506492f65a5b92
parent62ed9f15b8d62767f915ccfed1fecc9ee8ae8695 (diff)
Rewrite fillInDependencies using evalJobSet
-rw-r--r--src/Eval.hs19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/Eval.hs b/src/Eval.hs
index f6781a1..86bd963 100644
--- a/src/Eval.hs
+++ b/src/Eval.hs
@@ -266,20 +266,21 @@ fillInDependencies :: JobSet -> Eval JobSet
fillInDependencies jset = do
( dset, idRev, otherRepos ) <- local (\ei -> ei { eiCurrentIdRev = [] }) $ do
loadJobSetById (jobsetId jset)
+ eset <- local (\ei -> ei { eiCurrentIdRev = idRev }) $ do
+ evalJobSet otherRepos dset
origJobs <- either (throwError . OtherEvalError . T.pack) return $ jobsetJobsEither jset
- declJobs <- either (throwError . OtherEvalError . T.pack) return $ jobsetJobsEither dset
- deps <- gather declJobs S.empty (map jobName origJobs)
+ allJobs <- either (throwError . OtherEvalError . T.pack) return $ jobsetJobsEither eset
+ deps <- gather allJobs S.empty (map jobName origJobs)
- jobs <- local (\ei -> ei { eiCurrentIdRev = idRev }) $ do
- fmap catMaybes $ forM declJobs $ \djob -> if
- | Just job <- find ((jobName djob ==) . jobName) origJobs
- -> return (Just job)
+ let jobs = catMaybes $ flip map allJobs $ \ejob -> if
+ | Just job <- find ((jobName ejob ==) . jobName) origJobs
+ -> Just job
- | jobName djob `S.member` deps
- -> Just . fst <$> evalJob otherRepos dset djob
+ | jobName ejob `S.member` deps
+ -> Just ejob
| otherwise
- -> return Nothing
+ -> Nothing
return $ jset { jobsetJobsEither = Right jobs }
where