summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Eval.hs12
-rw-r--r--src/Job/Types.hs6
2 files changed, 13 insertions, 5 deletions
diff --git a/src/Eval.hs b/src/Eval.hs
index 9d83758..32a28b4 100644
--- a/src/Eval.hs
+++ b/src/Eval.hs
@@ -237,16 +237,18 @@ evalJobs (current : evaluating) evaluated repos dset reqs = do
}
uses <- forM (jobUses current) $ \( jname, aname ) -> do
- Just (Right job) <- return $ find ((jname ==) . either id jobName) evaluated
- return ( jobId job, aname )
+ case find ((jname ==) . either id jobName) evaluated of
+ Just (Right job) -> return ( jobId job, aname )
+ _ -> throwError $ OtherEvalError $ "artifact ‘" <> textArtifactName aname <> "’ in job ‘" <> textJobName jname <> "’ required by ‘" <> textJobName (jobName current) <> "’ not found"
destinations <- forM (jobPublish current) $ \dpublish -> do
- let ( jname, _ ) = jpArtifact dpublish
+ let ( jname, aname ) = jpArtifact dpublish
jid <- if
| jname == jobName current -> return currentJobId
| otherwise -> do
- Just (Right job) <- return $ find ((jname ==) . either id jobName) evaluated
- return $ jobId job
+ case find ((jname ==) . either id jobName) evaluated of
+ Just (Right job) -> return $ jobId job
+ _ -> throwError $ OtherEvalError $ "artifact ‘" <> textArtifactName aname <> "’ in job ‘" <> textJobName jname <> "’ required by ‘" <> textJobName (jobName current) <> "’ not found"
case lookup (jpDestination dpublish) eiDestinations of
Just dest -> return dpublish
diff --git a/src/Job/Types.hs b/src/Job/Types.hs
index c7a859d..204df60 100644
--- a/src/Job/Types.hs
+++ b/src/Job/Types.hs
@@ -87,6 +87,12 @@ data ArtifactName = ArtifactName Text
type ArtifactSpec d = ( JobId' d, ArtifactName )
+stringArtifactName :: ArtifactName -> String
+stringArtifactName (ArtifactName name) = T.unpack name
+
+textArtifactName :: ArtifactName -> Text
+textArtifactName (ArtifactName name) = name
+
data JobSet' d = JobSet
{ jobsetId :: JobSetId' d