summaryrefslogtreecommitdiff
path: root/src/Config.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Config.hs')
-rw-r--r--src/Config.hs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/Config.hs b/src/Config.hs
index fb3a828..40eb1e5 100644
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -117,18 +117,23 @@ parseSingleCheckout = withMap "checkout definition" $ \m -> do
parseMultipleCheckouts :: Node Pos -> Parser [ JobCheckout Declared ]
parseMultipleCheckouts = withSeq "checkout definitions" $ fmap concat . mapM parseSingleCheckout
-cabalJob :: Node Pos -> Parser [CreateProcess]
+cabalJob :: Node Pos -> Parser [ Either CreateProcess Text ]
cabalJob = withMap "cabal job" $ \m -> do
ghcOptions <- m .:? "ghc-options" >>= \case
Nothing -> return []
Just s -> withSeq "GHC option list" (mapM (withStr "GHC option" return)) s
return
- [ proc "cabal" $ concat [ ["build"], ("--ghc-option="++) . T.unpack <$> ghcOptions ] ]
-
-shellJob :: Node Pos -> Parser [CreateProcess]
-shellJob = withSeq "shell commands" $ \xs -> do
- fmap (map shell) $ forM xs $ withStr "shell command" $ return . T.unpack
+ [ Left $ proc "cabal" $ concat [ ["build"], ("--ghc-option="++) . T.unpack <$> ghcOptions ] ]
+
+shellJob :: Node Pos -> Parser [ Either CreateProcess Text ]
+shellJob node = do
+ commands <- choice
+ [ withStr "shell commands" return node
+ , withSeq "shell commands" (\xs -> do
+ fmap T.unlines $ forM xs $ withStr "shell command" $ return) node
+ ]
+ return [ Right commands ]
parseArtifacts :: Mapping Pos -> Parser [ ( ArtifactName, Pattern ) ]
parseArtifacts m = do