diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-07-19 15:06:42 +0200 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-07-24 21:17:52 +0200 |
| commit | 73a141316db78b942160b11bdb3c92208f3eddd6 (patch) | |
| tree | 1f35f0b939c8f467a45c6cbd62be771865ab838b /src/Eval.hs | |
| parent | 0ddc5807cab7cf3b791b1de4cffe2b1165b2480d (diff) | |
Diffstat (limited to 'src/Eval.hs')
| -rw-r--r-- | src/Eval.hs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/Eval.hs b/src/Eval.hs index a918910..bd011cb 100644 --- a/src/Eval.hs +++ b/src/Eval.hs @@ -17,6 +17,7 @@ import Control.Monad.Catch import Control.Monad.Except import Control.Monad.Reader +import Data.Bifunctor import Data.Either import Data.List import Data.Maybe @@ -114,8 +115,9 @@ collectJobSetRepos revisionOverrides dset = do return ( rname, RepoRefCommit commit ) getJobExprDependencies :: DeclaredJob -> [ JobSetDep ] -getJobExprDependencies _ = concat - [ +getJobExprDependencies job = concat + [ concatMap (collectDependencies . jpushSource) $ jobPush job + , concatMap (collectDependencies . jpushDestination) $ jobPush job ] collectOtherRepos :: DeclaredJobSet -> DeclaredJob -> Eval [ ( Maybe ( RepoName, Maybe Text ), RepoDepLevel ) ] @@ -202,6 +204,11 @@ evalJobs (current : evaluating) evaluated repos dset reqs = do return $ Just ( idpart, repoRef' ) return $ fmap (\subtree -> ( mbrepo, subtree )) mbSubtree let otherRepoTrees = catMaybes otherRepoTreesMb + + let jscRepos = maybe id ((:) . ( Nothing, )) eiContainingRepo $ map (first Just) eiOtherRepos + let jscRepoRefs = map (\( repo, ( _, ref ) ) -> ( fst <$> repo, ref )) otherRepoTrees + let ctx = JobSetContext {..} + if all isJust otherRepoTreesMb then do let otherRepoIds = flip mapMaybe otherRepoTrees $ \case @@ -239,6 +246,14 @@ evalJobs (current : evaluating) evaluated repos dset reqs = do } Nothing -> throwError $ OtherEvalError $ "no url defined for destination ‘" <> textDestinationName (jpDestination dpublish) <> "’" + pushes <- forM (jobPush current) $ \JobPush {..} -> do + commit <- eval ctx jpushSource + branch <- eval ctx jpushDestination + return JobPush + { jpushSource = commit + , jpushDestination = branch + } + let job = Job { jobId = currentJobId , jobName = jobName current @@ -247,6 +262,7 @@ evalJobs (current : evaluating) evaluated repos dset reqs = do , jobArtifacts = jobArtifacts current , jobUses = uses , jobPublish = destinations + , jobPush = pushes } evalJobs evaluating (Right job : evaluated) repos dset reqs else do |