From 5a7ad400ad957ab452e0319f3127631d4aeae6b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 13 Sep 2026 15:13:27 +0200 Subject: Improve error messages when artifact is not found during eval --- src/Eval.hs | 12 +++++++----- 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 -- cgit v1.2.3