diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-09-13 15:13:27 +0200 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-09-18 20:56:28 +0200 |
| commit | 5a7ad400ad957ab452e0319f3127631d4aeae6b0 (patch) | |
| tree | 67cdec975a52ade38fd008531d82966e8b89f5f0 /src | |
| parent | 76b4a34b8adeff1097874ca683712eb00fd748b1 (diff) | |
Improve error messages when artifact is not found during eval
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 |