From ded067166901805bba63a35b37fe83ebfc4e6aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Thu, 9 Jan 2025 19:39:52 +0100 Subject: Run jobs based on configuration in associated commit Changelog: Run jobs based on configuration in associated commit --- src/Job.hs | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'src/Job.hs') diff --git a/src/Job.hs b/src/Job.hs index ccb8611..068a076 100644 --- a/src/Job.hs +++ b/src/Job.hs @@ -1,5 +1,6 @@ module Job ( Job(..), + JobSet(..), jobsetJobs, JobOutput(..), JobName(..), stringJobName, textJobName, ArtifactName(..), @@ -27,34 +28,16 @@ import System.FilePath import System.IO import System.Process +import Job.Types import Repo -data Job = Job - { jobName :: JobName - , jobRecipe :: [CreateProcess] - , jobArtifacts :: [(ArtifactName, CreateProcess)] - , jobUses :: [(JobName, ArtifactName)] - } - data JobOutput = JobOutput { outName :: JobName , outArtifacts :: [ArtifactOutput] } deriving (Eq) -data JobName = JobName Text - deriving (Eq, Ord, Show) - -stringJobName :: JobName -> String -stringJobName (JobName name) = T.unpack name - -textJobName :: JobName -> Text -textJobName (JobName name) = name - -data ArtifactName = ArtifactName Text - deriving (Eq, Ord, Show) - data ArtifactOutput = ArtifactOutput { aoutName :: ArtifactName , aoutWorkPath :: FilePath @@ -96,7 +79,7 @@ textJobStatus = \case JobDone _ -> "done" -runJobs :: FilePath -> Commit -> [Job] -> IO [TVar (JobStatus JobOutput)] +runJobs :: FilePath -> Commit -> [Job] -> IO [ ( Job, TVar (JobStatus JobOutput) ) ] runJobs dir commit jobs = do results <- forM jobs $ \job -> (job,) <$> newTVarIO JobQueued forM_ results $ \(job, outVar) -> void $ forkIO $ do @@ -112,7 +95,7 @@ runJobs dir commit jobs = do _ -> return () atomically $ writeTVar outVar $ either id JobDone res - return $ map snd results + return results waitForUsedArtifacts :: (MonadIO m, MonadError (JobStatus JobOutput) m) => Job -> [(Job, TVar (JobStatus JobOutput))] -> TVar (JobStatus JobOutput) -> m [ArtifactOutput] -- cgit v1.2.3