diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2025-12-03 21:59:38 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-12-03 22:20:50 +0100 |
| commit | a96e4f84c7f0f69704e72a9a1b08baba5aeca0c4 (patch) | |
| tree | 9579fc2c753b8b8b14163beedb506492f65a5b92 /src/Eval.hs | |
| parent | 62ed9f15b8d62767f915ccfed1fecc9ee8ae8695 (diff) | |
Rewrite fillInDependencies using evalJobSet
Diffstat (limited to 'src/Eval.hs')
| -rw-r--r-- | src/Eval.hs | 19 |
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 |