diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Eval.hs | 12 | ||||
| -rw-r--r-- | src/Job/Types.hs | 6 |
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 |