summaryrefslogtreecommitdiff
path: root/src/Command
diff options
context:
space:
mode:
Diffstat (limited to 'src/Command')
-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.hs14
-rw-r--r--src/Command/Shell.hs4
5 files changed, 10 insertions, 20 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 982a07a..b299931 100644
--- a/src/Command/Run.hs
+++ b/src/Command/Run.hs
@@ -8,6 +8,7 @@ import Control.Exception
import Control.Monad
import Control.Monad.IO.Class
+import Data.Containers.ListUtils
import Data.Either
import Data.List
import Data.Maybe
@@ -168,29 +169,26 @@ argumentJobSource names = do
Nothing -> tfail $ "job ‘" <> textJobName name <> "’ not found"
jset <- cmdEvalWith (\ei -> ei { eiCurrentIdRev = cidPart ++ eiCurrentIdRev ei }) $ do
- fullSet <- evalJobSet (map ( Nothing, ) jobtree) JobSet
+ evalJobSetSelected names (map ( Nothing, ) jobtree) JobSet
{ jobsetId = ()
, jobsetConfig = Just config
, jobsetCommit = jcommit
, jobsetExplicitlyRequested = names
, jobsetJobsEither = Right (configJobs config)
}
- let selectedSet = fullSet { jobsetJobsEither = fmap (filter ((`elem` names) . jobName)) (jobsetJobsEither fullSet) }
- fillInDependencies selectedSet
oneshotJobSource [ jset ]
refJobSource :: [ JobRef ] -> CommandExec JobSource
refJobSource [] = emptyJobSource
refJobSource refs = do
- jsets <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReference refs)
- sets <- cmdEvalWith id $ do
- forM jsets $ \jset -> do
- fillInDependencies $ jset { jobsetExplicitlyRequested = either (const []) (map jobId) $ jobsetJobsEither jset }
+ sets <- foldl' addJobToList [] <$> cmdEvalWith id (mapM evalJobReferenceToSet refs)
oneshotJobSource sets
where
addJobToList :: [ JobSet ] -> JobSet -> [ JobSet ]
addJobToList (cur : rest) jset
- | jobsetId cur == jobsetId jset = cur { jobsetJobsEither = (++) <$> (fmap reverse $ jobsetJobsEither jset) <*> (jobsetJobsEither cur) } : rest
+ | jobsetId cur == jobsetId jset = cur { jobsetJobsEither = fmap (nubOrdOn jobId) $ (++) <$> (jobsetJobsEither cur) <*> (jobsetJobsEither jset)
+ , jobsetExplicitlyRequested = nubOrd $ jobsetExplicitlyRequested cur ++ jobsetExplicitlyRequested jset
+ } : rest
| otherwise = cur : addJobToList rest jset
addJobToList [] jset = [ jset ]
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