Add default packages list in run-haskell-module

This commit is contained in:
Michal J. Gajda 2020-03-29 18:06:02 +02:00
parent fa03c7bfff
commit 1e0d9209d2
No known key found for this signature in database
GPG Key ID: 4BB8002F87CD4C66

View File

@ -16,6 +16,7 @@ import Control.Exception
import Control.Monad
import Data.Char
import Data.Default
import Data.Semigroup((<>))
import System.Environment
import System.Exit
import System.FilePath.Posix
@ -24,16 +25,18 @@ import System.Process
data RunOptions = RunOptions
{ verbose :: Bool
, showStdout :: Bool
, compileArgs :: [String]
{ verbose :: Bool
, showStdout :: Bool
, compileArgs :: [String]
, additionalPackages :: [String]
}
instance Default RunOptions where
def = RunOptions { verbose = False
, showStdout = False
, compileArgs = []
def = RunOptions { verbose = False
, showStdout = False
, compileArgs = []
, additionalPackages = []
}
@ -52,7 +55,7 @@ callProcess' RunOptions{..} cmd args = do
whenMaybe hClose pstderr
return ExitSuccess
ExitFailure r -> do
whenMaybe (dumpHandle stdout) pstdout
whenMaybe (dumpHandle stderr) pstdout
whenMaybe (dumpHandle stderr) pstderr
fail $ concat ["Running \"", cmd, "\" \"", show args, "\" has failed with \"", show r, "\""]
where
@ -112,11 +115,12 @@ findGhc RunOptions{..} ghcTool = do
stack <- lookupEnv "STACK_EXE"
oldCabal <- lookupEnv "CABAL_SANDBOX_CONFIG"
newCabal <- lookupEnv "HASKELL_DIST_DIR"
additionalFlags <- (maybe [] splitWithQuotes) <$> lookupEnv "CI_GHC_ADDITIONAL_FLAGS"
additionalPackages <- ((additionalPackagesDef ++) . (maybe [] words)) <$> lookupEnv "CI_GHC_ADDITIONAL_PACKAGES"
cabalStyle <- (maybe "v2" id) <$> lookupEnv "CI_GHC_CABAL_STYLE"
additionalFlags <- (maybe [] splitWithQuotes) <$> lookupEnv "CI_GHC_ADDITIONAL_FLAGS"
additionalPackagesList <- ((additionalPackages ++) . (maybe [] words)) <$> lookupEnv "CI_GHC_ADDITIONAL_PACKAGES"
cabalStyle <- (maybe "v2" id) <$> lookupEnv "CI_GHC_CABAL_STYLE"
let cabalExec = cabalStyle ++ "-exec"
let additionalPackagesArgs = map mkAdditionalPackagesArg additionalPackages
let additionalPackagesArgs = map mkAdditionalPackagesArg additionalPackagesList
let res@(exe, exeArgs') | Just stackExec <- stack = (stackExec, additionalFlags ++ [tool, "--"])
| Just _ <- oldCabal = ("cabal", ["exec", tool, "--"])
| Just _ <- newCabal = ("cabal", [cabalExec, tool, "--"] ++ additionalPackagesArgs)
@ -131,9 +135,8 @@ findGhc RunOptions{..} ghcTool = do
Runner -> "runghc"
Compiler -> "ghc"
mkAdditionalPackagesArg arg = case ghcTool of
Runner -> "--ghc-arg=-package " ++ arg
Compiler -> "-package " ++ arg
additionalPackagesDef = []
Runner -> "--ghc-arg=-package=" ++ arg
Compiler -> "-package=" ++ arg
passModuleToGhc :: RunOptions -> GhcTool -> FilePath -> [String] -> IO ExitCode