diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2025-11-08 19:50:57 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-11-08 21:43:28 +0100 |
| commit | d8354b8f1b2bbb6d911070ca9822c7e4fbd88bca (patch) | |
| tree | 202c03cc700e59106bc62f5d07068dd532a55c5e /src/Eval.hs | |
| parent | a8aeb1866b221b850a8ece13e1a9b9acca1dc1f9 (diff) | |
Options to select rerun behavior
Changelog: Added `--rerun-*` command-line options to configure which jobs should be rerun
Diffstat (limited to 'src/Eval.hs')
| -rw-r--r-- | src/Eval.hs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Eval.hs b/src/Eval.hs index 67fea8d..cc3c45c 100644 --- a/src/Eval.hs +++ b/src/Eval.hs @@ -124,9 +124,15 @@ evalJobSet revisionOverrides decl = do jobs <- fmap (fmap (map fst)) $ either (return . Left) (handleToEither . mapM (evalJob revisionOverrides decl)) $ jobsetJobsEither decl + let explicit = + case liftM2 zip (jobsetJobsEither decl) jobs of + Left _ -> [] + Right declEval -> catMaybes $ + map (\jid -> jobId . snd <$> find ((jid ==) . jobId . fst) declEval) $ jobsetExplicitlyRequested decl return JobSet { jobsetId = JobSetId $ reverse $ eiCurrentIdRev , jobsetCommit = jobsetCommit decl + , jobsetExplicitlyRequested = explicit , jobsetJobsEither = jobs } where @@ -144,7 +150,7 @@ evalRepo (Just name) = asks (lookup name . eiOtherRepos) >>= \case canonicalJobName :: [ Text ] -> Config -> Maybe Tree -> Eval ( Job, JobSetId ) canonicalJobName (r : rs) config mbDefaultRepo = do let name = JobName r - dset = JobSet () Nothing $ Right $ configJobs config + dset = JobSet () Nothing [] $ Right $ configJobs config case find ((name ==) . jobName) (configJobs config) of Just djob -> do otherRepos <- collectOtherRepos dset djob @@ -187,7 +193,7 @@ evalJobReference (JobRef rs) = jobsetFromConfig :: [ JobIdPart ] -> Config -> Maybe Tree -> Eval ( DeclaredJobSet, [ JobIdPart ], [ ( Maybe RepoName, Tree ) ] ) jobsetFromConfig sid config _ = do EvalInput {..} <- ask - let dset = JobSet () Nothing $ Right $ configJobs config + let dset = JobSet () Nothing [] $ Right $ configJobs config otherRepos <- forM sid $ \case JobIdName name -> do throwError $ OtherEvalError $ "expected tree id, not a job name ‘" <> textJobName name <> "’" |