diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-06-29 22:20:10 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-06-30 20:38:25 +0200 |
commit | ac70a5f9aebcfd51901740681463d1ac4fa90e33 (patch) | |
tree | 353ea6ed5aaea7dab8e12e31b31e039367c4c58b /src/Command | |
parent | f1beff8cdbf5a2e54ea5e36b6edf337fc45ffc8b (diff) |
Explicit JobSet ID
Diffstat (limited to 'src/Command')
-rw-r--r-- | src/Command/Extract.hs | 2 | ||||
-rw-r--r-- | src/Command/JobId.hs | 2 | ||||
-rw-r--r-- | src/Command/Log.hs | 2 | ||||
-rw-r--r-- | src/Command/Run.hs | 19 |
4 files changed, 12 insertions, 13 deletions
diff --git a/src/Command/Extract.hs b/src/Command/Extract.hs index 8a0a035..cc92587 100644 --- a/src/Command/Extract.hs +++ b/src/Command/Extract.hs @@ -78,7 +78,7 @@ cmdExtract (ExtractCommand ExtractOptions {..} ExtractArguments {..}) = do _ -> return False forM_ extractArtifacts $ \( ref, ArtifactName aname ) -> do - jid@(JobId ids) <- either (tfail . textEvalError) (return . jobId) =<< + jid@(JobId ids) <- either (tfail . textEvalError) (return . jobId . fst) =<< liftIO (runEval (evalJobReference ref) einput) let jdir = joinPath $ (storageDir :) $ ("jobs" :) $ map (T.unpack . textJobIdPart) ids diff --git a/src/Command/JobId.hs b/src/Command/JobId.hs index 173f543..096ed56 100644 --- a/src/Command/JobId.hs +++ b/src/Command/JobId.hs @@ -52,7 +52,7 @@ cmdJobId :: JobIdCommand -> CommandExec () cmdJobId (JobIdCommand JobIdOptions {..} ref) = do einput <- getEvalInput out <- getOutput - JobId ids <- either (tfail . textEvalError) (return . jobId) =<< + JobId ids <- either (tfail . textEvalError) (return . jobId . fst) =<< liftIO (runEval (evalJobReference ref) einput) outputMessage out $ textJobId $ JobId ids diff --git a/src/Command/Log.hs b/src/Command/Log.hs index 25bfc06..e48ce8f 100644 --- a/src/Command/Log.hs +++ b/src/Command/Log.hs @@ -37,7 +37,7 @@ instance Command LogCommand where cmdLog :: LogCommand -> CommandExec () cmdLog (LogCommand ref) = do einput <- getEvalInput - jid <- either (tfail . textEvalError) (return . jobId) =<< + jid <- either (tfail . textEvalError) (return . jobId . fst) =<< liftIO (runEval (evalJobReference ref) einput) output <- getOutput storageDir <- getStorageDir diff --git a/src/Command/Run.hs b/src/Command/Run.hs index ca6d275..a7e7eff 100644 --- a/src/Command/Run.hs +++ b/src/Command/Run.hs @@ -139,6 +139,7 @@ argumentJobSource names = do Just commit -> (: []) <$> getCommitTree commit Nothing -> return [] let cidPart = map (JobIdTree Nothing "" . treeId) jobtree + jobsetId = () jobsetJobsEither <- fmap Right $ forM names $ \name -> case find ((name ==) . jobName) (configJobs config) of Just job -> return job @@ -151,22 +152,20 @@ refJobSource :: [ JobRef ] -> CommandExec JobSource refJobSource [] = emptyJobSource refJobSource refs = do jobs <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReference refs) - oneshotJobSource . map (JobSet Nothing . Right . reverse) $ jobs + oneshotJobSource . map (\( sid, js ) -> JobSet sid Nothing (Right $ reverse js)) $ jobs where - deriveSetId :: Job -> [ JobIdPart ] - deriveSetId job = let JobId parts = jobId job in init parts - - addJobToList :: [[ Job ]] -> Job -> [[ Job ]] - addJobToList (js@(j : _) : rest) job - | deriveSetId j == deriveSetId job = (job : js) : rest - | otherwise = js : addJobToList rest job - addJobToList _ job = [[ job ]] + 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 ] ) ] loadJobSetFromRoot :: (MonadIO m, MonadFail m) => JobRoot -> Commit -> m DeclaredJobSet loadJobSetFromRoot root commit = case root of JobRootRepo _ -> loadJobSetForCommit commit JobRootConfig config -> return JobSet - { jobsetCommit = Just commit + { jobsetId = () + , jobsetCommit = Just commit , jobsetJobsEither = Right $ configJobs config } |