summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-11-29 19:51:37 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2025-11-29 19:51:37 +0100
commit60d653c05420f4ca7b41e73bb252268c34d946fe (patch)
treeffc5080d63862d70e80f9f4f3588aa4bb5e5ff22 /src
parent75e7be5f3763bfc425d84e1cf761fe62e607105d (diff)
Include artifacts required via ‘publish’ in the job ID
Diffstat (limited to 'src')
-rw-r--r--src/Eval.hs2
-rw-r--r--src/Job.hs3
-rw-r--r--src/Job/Types.hs4
3 files changed, 6 insertions, 3 deletions
diff --git a/src/Eval.hs b/src/Eval.hs
index 7a5bad3..d260d91 100644
--- a/src/Eval.hs
+++ b/src/Eval.hs
@@ -69,7 +69,7 @@ collectOtherRepos dset decl = do
let gatherDependencies seen (d : ds)
| d `elem` seen = gatherDependencies seen ds
| Just job <- find ((d ==) . jobName) jobs
- = gatherDependencies (d : seen) (map fst (jobUses job) ++ ds)
+ = gatherDependencies (d : seen) (map fst (jobRequiredArtifacts job) ++ ds)
| otherwise = gatherDependencies (d : seen) ds
gatherDependencies seen [] = seen
diff --git a/src/Job.hs b/src/Job.hs
index 5a28a50..116a090 100644
--- a/src/Job.hs
+++ b/src/Job.hs
@@ -23,7 +23,6 @@ import Control.Monad.Catch
import Control.Monad.Except
import Control.Monad.IO.Class
-import Data.Containers.ListUtils
import Data.List
import Data.Map (Map)
import Data.Map qualified as M
@@ -304,7 +303,7 @@ waitForUsedArtifacts
-> m [ ( ArtifactSpec, ArtifactOutput ) ]
waitForUsedArtifacts tout job results outVar = do
origState <- liftIO $ atomically $ readTVar outVar
- let ( selfSpecs, artSpecs ) = partition ((jobName job ==) . fst) $ nubOrd $ jobUses job ++ (map jpArtifact $ jobPublish job)
+ let ( selfSpecs, artSpecs ) = partition ((jobName job ==) . fst) $ jobRequiredArtifacts job
forM_ selfSpecs $ \( _, artName@(ArtifactName tname) ) -> do
when (not (artName `elem` map fst (jobArtifacts job))) $ do
diff --git a/src/Job/Types.hs b/src/Job/Types.hs
index 8d02057..5d3f0f3 100644
--- a/src/Job/Types.hs
+++ b/src/Job/Types.hs
@@ -1,5 +1,6 @@
module Job.Types where
+import Data.Containers.ListUtils
import Data.Kind
import Data.Text (Text)
import Data.Text qualified as T
@@ -41,6 +42,9 @@ stringJobName (JobName name) = T.unpack name
textJobName :: JobName -> Text
textJobName (JobName name) = name
+jobRequiredArtifacts :: Job' d -> [ ArtifactSpec ]
+jobRequiredArtifacts job = nubOrd $ jobUses job ++ (map jpArtifact $ jobPublish job)
+
type family JobRepo d :: Type where
JobRepo Declared = Maybe ( RepoName, Maybe Text )