@@ -204,10 +204,9 @@ main =
204204pathCmd :: PathArg -> GlobalOpts -> IO ()
205205pathCmd pathArg go@ GlobalOpts {.. } = do
206206 (manager,lc) <- loadConfigWithOpts go
207- buildConfig <- runStackLoggingT manager globalLogLevel
207+ buildConfig <- runStackLoggingT manager globalLogLevel globalTerminal
208208 (lcLoadBuildConfig lc globalResolver ExecStrategy )
209- runStackT manager globalLogLevel buildConfig (pathString pathArg) >>= putStrLn
210-
209+ runStackT manager globalLogLevel buildConfig globalTerminal (pathString pathArg) >>= putStrLn
211210
212211-- Try to run a plugin
213212tryRunPlugin :: Plugins -> IO ()
@@ -255,18 +254,18 @@ setupParser = SetupCmdOpts
255254setupCmd :: SetupCmdOpts -> GlobalOpts -> IO ()
256255setupCmd SetupCmdOpts {.. } go@ GlobalOpts {.. } = do
257256 (manager,lc) <- loadConfigWithOpts go
258- runStackLoggingT manager globalLogLevel $
257+ runStackLoggingT manager globalLogLevel globalTerminal $
259258 Docker. rerunWithOptionalContainer
260259 (lcConfig lc)
261260 (lcProjectRoot lc)
262- (runStackLoggingT manager globalLogLevel $ do
261+ (runStackLoggingT manager globalLogLevel globalTerminal $ do
263262 (ghc, mstack) <-
264263 case scoGhcVersion of
265264 Just v -> return (v, Nothing )
266265 Nothing -> do
267266 bc <- lcLoadBuildConfig lc globalResolver ThrowException
268267 return (bcGhcVersion bc, Just $ bcStackYaml bc)
269- mpaths <- runStackT manager globalLogLevel (lcConfig lc) $ ensureGHC SetupOpts
268+ mpaths <- runStackT manager globalLogLevel (lcConfig lc) globalTerminal $ ensureGHC SetupOpts
270269 { soptsInstallIfMissing = True
271270 , soptsUseSystem =
272271 (configSystemGHC $ lcConfig lc)
@@ -288,13 +287,13 @@ withBuildConfig :: GlobalOpts
288287 -> IO ()
289288withBuildConfig go@ GlobalOpts {.. } strat inner = do
290289 (manager, lc) <- loadConfigWithOpts go
291- runStackLoggingT manager globalLogLevel $
290+ runStackLoggingT manager globalLogLevel globalTerminal $
292291 Docker. rerunWithOptionalContainer (lcConfig lc) (lcProjectRoot lc) $ do
293- bconfig1 <- runStackLoggingT manager globalLogLevel $
292+ bconfig1 <- runStackLoggingT manager globalLogLevel globalTerminal $
294293 lcLoadBuildConfig lc globalResolver strat
295294 (bconfig2,cabalVer) <-
296295 runStackT
297- manager globalLogLevel bconfig1
296+ manager globalLogLevel bconfig1 globalTerminal
298297 (do cfg <- setupEnv
299298 menv <- runReaderT getMinimalEnvOverride cfg
300299 cabalVer <- getCabalPkgVer menv
@@ -303,6 +302,7 @@ withBuildConfig go@GlobalOpts{..} strat inner = do
303302 manager
304303 globalLogLevel
305304 (EnvConfig bconfig2 cabalVer)
305+ globalTerminal
306306 inner
307307
308308cleanCmd :: () -> GlobalOpts -> IO ()
@@ -351,19 +351,19 @@ installCmd opts go@GlobalOpts{..} = withBuildConfig go ExecStrategy $
351351unpackCmd :: [String ] -> GlobalOpts -> IO ()
352352unpackCmd names go@ GlobalOpts {.. } = do
353353 (manager,lc) <- loadConfigWithOpts go
354- runStackLoggingT manager globalLogLevel $
354+ runStackLoggingT manager globalLogLevel globalTerminal $
355355 Docker. rerunWithOptionalContainer (lcConfig lc) (lcProjectRoot lc) $
356- runStackT manager globalLogLevel (lcConfig lc) $ do
356+ runStackT manager globalLogLevel (lcConfig lc) globalTerminal $ do
357357 menv <- getMinimalEnvOverride
358358 Stack.Fetch. unpackPackages menv " ." names
359359
360360-- | Update the package index
361361updateCmd :: () -> GlobalOpts -> IO ()
362362updateCmd () go@ GlobalOpts {.. } = do
363363 (manager,lc) <- loadConfigWithOpts go
364- runStackLoggingT manager globalLogLevel $
364+ runStackLoggingT manager globalLogLevel globalTerminal $
365365 Docker. rerunWithOptionalContainer (lcConfig lc) (lcProjectRoot lc) $
366- runStackT manager globalLogLevel (lcConfig lc) $
366+ runStackT manager globalLogLevel (lcConfig lc) globalTerminal $
367367 getMinimalEnvOverride >>= Stack.PackageIndex. updateAllIndices
368368
369369-- | Upload to Hackage
@@ -397,28 +397,28 @@ replCmd (targets,args) go@GlobalOpts{..} = withBuildConfig go ExecStrategy $ do
397397dockerPullCmd :: () -> GlobalOpts -> IO ()
398398dockerPullCmd _ go@ GlobalOpts {.. } = do
399399 (manager,lc) <- liftIO $ loadConfigWithOpts go
400- runStackLoggingT manager globalLogLevel $ Docker. preventInContainer $
400+ runStackLoggingT manager globalLogLevel globalTerminal $ Docker. preventInContainer $
401401 Docker. pull (lcConfig lc)
402402
403403-- | Reset the Docker sandbox.
404404dockerResetCmd :: Bool -> GlobalOpts -> IO ()
405405dockerResetCmd keepHome go@ GlobalOpts {.. } = do
406406 (manager,lc) <- liftIO (loadConfigWithOpts go)
407- runStackLoggingT manager globalLogLevel $ Docker. preventInContainer $
407+ runStackLoggingT manager globalLogLevel globalTerminal $ Docker. preventInContainer $
408408 Docker. reset (lcProjectRoot lc) keepHome
409409
410410-- | Cleanup Docker images and containers.
411411dockerCleanupCmd :: Docker. CleanupOpts -> GlobalOpts -> IO ()
412412dockerCleanupCmd cleanupOpts go@ GlobalOpts {.. } = do
413413 (manager,lc) <- liftIO $ loadConfigWithOpts go
414- runStackLoggingT manager globalLogLevel $ Docker. preventInContainer $
414+ runStackLoggingT manager globalLogLevel globalTerminal $ Docker. preventInContainer $
415415 Docker. cleanup (lcConfig lc) cleanupOpts
416416
417417-- | Execute a command
418418dockerExecCmd :: (String , [String ]) -> GlobalOpts -> IO ()
419419dockerExecCmd (cmd,args) go@ GlobalOpts {.. } = do
420420 (manager,lc) <- liftIO $ loadConfigWithOpts go
421- runStackLoggingT manager globalLogLevel $ Docker. preventInContainer $
421+ runStackLoggingT manager globalLogLevel globalTerminal $ Docker. preventInContainer $
422422 Docker. rerunCmdWithRequiredContainer (lcConfig lc)
423423 (lcProjectRoot lc)
424424 (return (cmd,args,lcConfig lc))
@@ -530,10 +530,15 @@ dockerCleanupOpts =
530530-- | Parser for global command-line options.
531531globalOpts :: Parser GlobalOpts
532532globalOpts =
533- GlobalOpts
534- <$> logLevelOpt
535- <*> configOptsParser False
536- <*> optional resolverParser
533+ GlobalOpts <$> logLevelOpt <*>
534+ configOptsParser False <*>
535+ optional resolverParser <*>
536+ flag
537+ True
538+ False
539+ (long " no-terminal" <>
540+ help
541+ " Override terminal detection in the case of running in a false terminal" )
537542
538543-- | Parse for a logging level.
539544logLevelOpt :: Parser LogLevel
@@ -578,6 +583,7 @@ data GlobalOpts = GlobalOpts
578583 { globalLogLevel :: LogLevel -- ^ Log level
579584 , globalConfigMonoid :: ConfigMonoid -- ^ Config monoid, for passing into 'loadConfig'
580585 , globalResolver :: Maybe Resolver -- ^ Resolver override
586+ , globalTerminal :: Bool -- ^ We're in a terminal?
581587 } deriving (Show )
582588
583589-- | Load the configuration with a manager. Convenience function used
@@ -588,14 +594,15 @@ loadConfigWithOpts GlobalOpts{..} = do
588594 lc <- runStackLoggingT
589595 manager
590596 globalLogLevel
597+ globalTerminal
591598 (loadConfig globalConfigMonoid)
592599 return (manager,lc)
593600
594601-- | Project initialization
595602initCmd :: InitOpts -> GlobalOpts -> IO ()
596603initCmd initOpts go@ GlobalOpts {.. } = do
597604 (manager,lc) <- loadConfigWithOpts go
598- runStackLoggingT manager globalLogLevel $
605+ runStackLoggingT manager globalLogLevel globalTerminal $
599606 Docker. rerunWithOptionalContainer (lcConfig lc) (lcProjectRoot lc) $
600- runStackT manager globalLogLevel (lcConfig lc) $
607+ runStackT manager globalLogLevel (lcConfig lc) globalTerminal $
601608 initProject globalResolver initOpts
0 commit comments