summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Command/Extract.hs4
-rw-r--r--src/Command/JobId.hs4
-rw-r--r--src/Command/Log.hs4
-rw-r--r--src/Command/Run.hs2
-rw-r--r--src/Command/Shell.hs4
-rw-r--r--src/Eval.hs12
6 files changed, 15 insertions, 15 deletions
diff --git a/src/Command/Extract.hs b/src/Command/Extract.hs
index 366128c..8dee537 100644
--- a/src/Command/Extract.hs
+++ b/src/Command/Extract.hs
@@ -6,7 +6,6 @@ import Control.Monad
import Control.Monad.Except
import Control.Monad.IO.Class
-import Data.Bifunctor
import Data.Text qualified as T
import System.Console.GetOpt
@@ -80,8 +79,7 @@ cmdExtract (ExtractCommand ExtractOptions {..} ExtractArguments {..}) = do
_ -> return False
forM_ extractArtifacts $ \( ref, aname ) -> do
- [ jid ] <- either tfail (return . map jobId) =<<
- return . either (Left . textEvalError) (first T.pack . jobsetJobsEither) =<<
+ jid <- either (tfail . textEvalError) (return . jobId) =<<
liftIO (runEval (evalJobReference ref) einput)
tpath <- if
diff --git a/src/Command/JobId.hs b/src/Command/JobId.hs
index b349ebe..173f543 100644
--- a/src/Command/JobId.hs
+++ b/src/Command/JobId.hs
@@ -5,7 +5,6 @@ module Command.JobId (
import Control.Monad
import Control.Monad.IO.Class
-import Data.Bifunctor
import Data.Text (Text)
import Data.Text qualified as T
@@ -53,8 +52,7 @@ cmdJobId :: JobIdCommand -> CommandExec ()
cmdJobId (JobIdCommand JobIdOptions {..} ref) = do
einput <- getEvalInput
out <- getOutput
- [ JobId ids ] <- either tfail (return . map jobId) =<<
- return . either (Left . textEvalError) (first T.pack . jobsetJobsEither) =<<
+ JobId ids <- either (tfail . textEvalError) (return . jobId) =<<
liftIO (runEval (evalJobReference ref) einput)
outputMessage out $ textJobId $ JobId ids
diff --git a/src/Command/Log.hs b/src/Command/Log.hs
index 438c25e..25bfc06 100644
--- a/src/Command/Log.hs
+++ b/src/Command/Log.hs
@@ -4,7 +4,6 @@ module Command.Log (
import Control.Monad.IO.Class
-import Data.Bifunctor
import Data.Text (Text)
import Data.Text qualified as T
import Data.Text.Lazy qualified as TL
@@ -38,8 +37,7 @@ instance Command LogCommand where
cmdLog :: LogCommand -> CommandExec ()
cmdLog (LogCommand ref) = do
einput <- getEvalInput
- [ jid ] <- either tfail (return . map jobId) =<<
- return . either (Left . textEvalError) (first T.pack . jobsetJobsEither) =<<
+ jid <- either (tfail . textEvalError) (return . jobId) =<<
liftIO (runEval (evalJobReference ref) einput)
output <- getOutput
storageDir <- getStorageDir
diff --git a/src/Command/Run.hs b/src/Command/Run.hs
index 04c7273..b299931 100644
--- a/src/Command/Run.hs
+++ b/src/Command/Run.hs
@@ -181,7 +181,7 @@ argumentJobSource names = do
refJobSource :: [ JobRef ] -> CommandExec JobSource
refJobSource [] = emptyJobSource
refJobSource refs = do
- sets <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReference refs)
+ sets <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReferenceToSet refs)
oneshotJobSource sets
where
addJobToList :: [ JobSet ] -> JobSet -> [ JobSet ]
diff --git a/src/Command/Shell.hs b/src/Command/Shell.hs
index dfff50a..16f366e 100644
--- a/src/Command/Shell.hs
+++ b/src/Command/Shell.hs
@@ -5,7 +5,6 @@ module Command.Shell (
import Control.Monad
import Control.Monad.IO.Class
-import Data.Bifunctor
import Data.Maybe
import Data.Text (Text)
import Data.Text qualified as T
@@ -38,8 +37,7 @@ instance Command ShellCommand where
cmdShell :: ShellCommand -> CommandExec ()
cmdShell (ShellCommand ref) = do
einput <- getEvalInput
- [ job ] <- either tfail return =<<
- return . either (Left . textEvalError) (first T.pack . jobsetJobsEither) =<<
+ job <- either (tfail . textEvalError) return =<<
liftIO (runEval (evalJobReference ref) einput)
sh <- fromMaybe "/bin/sh" <$> liftIO (lookupEnv "SHELL")
storageDir <- getStorageDir
diff --git a/src/Eval.hs b/src/Eval.hs
index 2afec42..6680c44 100644
--- a/src/Eval.hs
+++ b/src/Eval.hs
@@ -6,6 +6,7 @@ module Eval (
evalJobSet,
evalJobSetSelected,
evalJobReference,
+ evalJobReferenceToSet,
loadJobSetById,
) where
@@ -257,14 +258,21 @@ canonicalCommitConfig rs repo = do
local (\ei -> ei { eiCurrentIdRev = JobIdTree Nothing "" (treeId tree) : eiCurrentIdRev ei }) $
canonicalJobName rs' config (Just tree)
-evalJobReference :: JobRef -> Eval JobSet
-evalJobReference (JobRef rs) =
+evalJobReferenceToSet :: JobRef -> Eval JobSet
+evalJobReferenceToSet (JobRef rs) =
asks eiJobRoot >>= \case
JobRootRepo defRepo -> do
canonicalCommitConfig rs defRepo
JobRootConfig config -> do
canonicalJobName rs config Nothing
+evalJobReference :: JobRef -> Eval Job
+evalJobReference ref = do
+ jset <- evalJobReferenceToSet ref
+ jobs <- either (throwError . OtherEvalError . T.pack) return $ jobsetJobsEither jset
+ [ name ] <- return $ jobsetExplicitlyRequested jset
+ maybe (error "missing job in evalJobReferenceToSet result") return $ find ((name ==) . jobId) jobs
+
jobsetFromConfig :: [ JobIdPart ] -> Config -> Maybe Tree -> Eval ( DeclaredJobSet, [ JobIdPart ], [ ( Maybe RepoName, Tree ) ] )
jobsetFromConfig sid config _ = do