summaryrefslogtreecommitdiff
path: root/src/Command/Run.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-09-13 14:47:06 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-09-18 20:56:28 +0200
commit76b4a34b8adeff1097874ca683712eb00fd748b1 (patch)
tree89c476f9b2034fa28fef6f35ca0b1a015c6c97e8 /src/Command/Run.hs
parenta6247056a63d52b2253c4c88a0c9b988aaa4ebcd (diff)
Do not fail globally on eval error of individual jobset
Diffstat (limited to 'src/Command/Run.hs')
-rw-r--r--src/Command/Run.hs24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/Command/Run.hs b/src/Command/Run.hs
index 6a0fcd4..85bc59d 100644
--- a/src/Command/Run.hs
+++ b/src/Command/Run.hs
@@ -239,8 +239,16 @@ watchExpressionSource expr = do
let einput = einputBase
{ eiCurrentIdRev = JobIdRepo Nothing (JobIdTree (treeSubdir tree) (treeId tree)) : eiCurrentIdRev einputBase
}
- jsiJobSet <- either (fail . T.unpack . textEvalError) return =<<
- flip runEval einput . evalJobSet [ ( Nothing, RepoRefTree tree ) ] =<< loadJobSetFromRoot root commit
+ dset <- loadJobSetFromRoot root commit
+ let fset err = JobSet
+ { jobsetId = JobSetId $ reverse $ eiCurrentIdRev einput
+ , jobsetConfig = Nothing
+ , jobsetCommit = Just commit
+ , jobsetExplicitlyRequested = []
+ , jobsetJobsEither = Left $ T.unpack $ textEvalError err
+ }
+ jsiJobSet <- fmap (either fset id) $ flip runEval einput $
+ evalJobSet [ ( Nothing, RepoRefTree tree ) ] dset
jsiCancelAction <- Just <$> newEmptyMVar
return JobSourceItem {..}
@@ -285,8 +293,16 @@ watchTagSource pat = do
let einput = einputBase
{ eiCurrentIdRev = JobIdRepo Nothing (JobIdTree (treeSubdir tree) (treeId tree)) : eiCurrentIdRev einputBase
}
- jsiJobSet <- either (fail . T.unpack . textEvalError) return =<<
- flip runEval einput . evalJobSet [ ( Nothing, RepoRefTree tree ) ] =<< loadJobSetFromRoot root (tagObject tag)
+ dset <- loadJobSetFromRoot root (tagObject tag)
+ let fset err = JobSet
+ { jobsetId = JobSetId $ reverse $ eiCurrentIdRev einput
+ , jobsetConfig = Nothing
+ , jobsetCommit = Just $ tagObject tag
+ , jobsetExplicitlyRequested = []
+ , jobsetJobsEither = Left $ T.unpack $ textEvalError err
+ }
+ jsiJobSet <- fmap (either fset id) $ flip runEval einput $
+ evalJobSet [ ( Nothing, RepoRefTree tree ) ] dset
let jsiCancelAction = Nothing
nextvar <- newEmptyTMVarIO
atomically $ putTMVar tmvar $ Just ( [ JobSourceItem {..} ], JobSource nextvar )