diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2025-11-25 21:13:25 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-11-25 22:23:26 +0100 |
| commit | b100f6e64074c761327e1113a0c8afaf74091a23 (patch) | |
| tree | 10d241594cce1f153886c3fe4b6893c1d1f59d5e /src/Command/Run.hs | |
| parent | 5b19d70e6bb70f951e6a7c1670c54db640eaa1d0 (diff) | |
Add Config reference to JobSet
Diffstat (limited to 'src/Command/Run.hs')
| -rw-r--r-- | src/Command/Run.hs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/Command/Run.hs b/src/Command/Run.hs index bd60bae..3bdfb4e 100644 --- a/src/Command/Run.hs +++ b/src/Command/Run.hs @@ -167,6 +167,7 @@ argumentJobSource names = do jset <- cmdEvalWith (\ei -> ei { eiCurrentIdRev = cidPart ++ eiCurrentIdRev ei }) $ do fullSet <- evalJobSet (map ( Nothing, ) jobtree) JobSet { jobsetId = () + , jobsetConfig = Just config , jobsetCommit = jcommit , jobsetExplicitlyRequested = names , jobsetJobsEither = Right (configJobs config) @@ -178,23 +179,24 @@ argumentJobSource names = do refJobSource :: [ JobRef ] -> CommandExec JobSource refJobSource [] = emptyJobSource refJobSource refs = do - jobs <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReference refs) + jsets <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReference refs) sets <- cmdEvalWith id $ do - forM jobs $ \( sid, js ) -> do - fillInDependencies $ JobSet sid Nothing (map jobId js) (Right $ reverse js) + forM jsets $ \jset -> do + fillInDependencies $ jset { jobsetExplicitlyRequested = either (const []) (map jobId) $ jobsetJobsEither jset } oneshotJobSource sets where - addJobToList :: [ ( JobSetId, [ Job ] ) ] -> ( Job, JobSetId ) -> [ ( JobSetId, [ Job ] ) ] - addJobToList (( sid, js ) : rest ) ( job, jsid ) - | sid == jsid = ( sid, job : js ) : rest - | otherwise = ( sid, js ) : addJobToList rest ( job, jsid ) - addJobToList [] ( job, jsid ) = [ ( jsid, [ job ] ) ] + addJobToList :: [ JobSet ] -> JobSet -> [ JobSet ] + addJobToList (cur : rest) jset + | jobsetId cur == jobsetId jset = cur { jobsetJobsEither = (++) <$> (fmap reverse $ jobsetJobsEither jset) <*> (jobsetJobsEither cur) } : rest + | otherwise = cur : addJobToList rest jset + addJobToList [] jset = [ jset ] loadJobSetFromRoot :: (MonadIO m, MonadFail m) => JobRoot -> Commit -> m DeclaredJobSet loadJobSetFromRoot root commit = case root of JobRootRepo _ -> loadJobSetForCommit commit JobRootConfig config -> return JobSet { jobsetId = () + , jobsetConfig = Just config , jobsetCommit = Just commit , jobsetExplicitlyRequested = [] , jobsetJobsEither = Right $ configJobs config |