{-# LANGUAGE NoImplicitPrelude #-}
module Stack.Options.BuildMonoidParser where

import qualified Data.Text as T
import           Options.Applicative
import           Options.Applicative.Builder.Extra
import           Stack.Build                       (splitObjsWarning)
import           Stack.Prelude
import           Stack.Options.BenchParser
import           Stack.Options.TestParser
import           Stack.Options.HaddockParser
import           Stack.Options.Utils
import           Stack.Types.Config.Build

buildOptsMonoidParser :: GlobalOptsContext -> Parser BuildOptsMonoid
buildOptsMonoidParser :: GlobalOptsContext -> Parser BuildOptsMonoid
buildOptsMonoidParser hide0 :: GlobalOptsContext
hide0 =
    Any
-> Any
-> Any
-> FirstFalse
-> FirstFalse
-> FirstTrue
-> FirstTrue
-> FirstFalse
-> HaddockOptsMonoid
-> FirstFalse
-> First Bool
-> FirstFalse
-> FirstTrue
-> FirstFalse
-> FirstFalse
-> FirstFalse
-> First Bool
-> FirstFalse
-> FirstFalse
-> FirstFalse
-> TestOptsMonoid
-> FirstFalse
-> BenchmarkOptsMonoid
-> FirstFalse
-> FirstFalse
-> FirstFalse
-> [Text]
-> FirstTrue
-> First Text
-> BuildOptsMonoid
BuildOptsMonoid (Any
 -> Any
 -> Any
 -> FirstFalse
 -> FirstFalse
 -> FirstTrue
 -> FirstTrue
 -> FirstFalse
 -> HaddockOptsMonoid
 -> FirstFalse
 -> First Bool
 -> FirstFalse
 -> FirstTrue
 -> FirstFalse
 -> FirstFalse
 -> FirstFalse
 -> First Bool
 -> FirstFalse
 -> FirstFalse
 -> FirstFalse
 -> TestOptsMonoid
 -> FirstFalse
 -> BenchmarkOptsMonoid
 -> FirstFalse
 -> FirstFalse
 -> FirstFalse
 -> [Text]
 -> FirstTrue
 -> First Text
 -> BuildOptsMonoid)
-> Parser Any
-> Parser
     (Any
      -> Any
      -> FirstFalse
      -> FirstFalse
      -> FirstTrue
      -> FirstTrue
      -> FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser Any
trace' Parser
  (Any
   -> Any
   -> FirstFalse
   -> FirstFalse
   -> FirstTrue
   -> FirstTrue
   -> FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser Any
-> Parser
     (Any
      -> FirstFalse
      -> FirstFalse
      -> FirstTrue
      -> FirstTrue
      -> FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser Any
profile Parser
  (Any
   -> FirstFalse
   -> FirstFalse
   -> FirstTrue
   -> FirstTrue
   -> FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser Any
-> Parser
     (FirstFalse
      -> FirstFalse
      -> FirstTrue
      -> FirstTrue
      -> FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser Any
noStrip Parser
  (FirstFalse
   -> FirstFalse
   -> FirstTrue
   -> FirstTrue
   -> FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> FirstTrue
      -> FirstTrue
      -> FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstFalse
libProfiling Parser
  (FirstFalse
   -> FirstTrue
   -> FirstTrue
   -> FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstTrue
      -> FirstTrue
      -> FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
exeProfiling Parser
  (FirstTrue
   -> FirstTrue
   -> FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstTrue
-> Parser
     (FirstTrue
      -> FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstTrue
libStripping Parser
  (FirstTrue
   -> FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstTrue
-> Parser
     (FirstFalse
      -> HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstTrue
exeStripping Parser
  (FirstFalse
   -> HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (HaddockOptsMonoid
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
haddock Parser
  (HaddockOptsMonoid
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser HaddockOptsMonoid
-> Parser
     (FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Bool -> Parser HaddockOptsMonoid
haddockOptsParser Bool
hideBool Parser
  (FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (First Bool
      -> FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstFalse
openHaddocks Parser
  (First Bool
   -> FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser (First Bool)
-> Parser
     (FirstFalse
      -> FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (First Bool)
haddockDeps Parser
  (FirstFalse
   -> FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstTrue
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
haddockInternal Parser
  (FirstTrue
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstTrue
-> Parser
     (FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstTrue
haddockHyperlinkSource Parser
  (FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
copyBins Parser
  (FirstFalse
   -> FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
copyCompilerTool Parser
  (FirstFalse
   -> First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (First Bool
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstFalse
preFetch Parser
  (First Bool
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser (First Bool)
-> Parser
     (FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (First Bool)
keepGoing Parser
  (FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
keepTmpFiles Parser
  (FirstFalse
   -> FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
forceDirty Parser
  (FirstFalse
   -> TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (TestOptsMonoid
      -> FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstFalse
tests Parser
  (TestOptsMonoid
   -> FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser TestOptsMonoid
-> Parser
     (FirstFalse
      -> BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Bool -> Parser TestOptsMonoid
testOptsParser Bool
hideBool Parser
  (FirstFalse
   -> BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (BenchmarkOptsMonoid
      -> FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
benches Parser
  (BenchmarkOptsMonoid
   -> FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser BenchmarkOptsMonoid
-> Parser
     (FirstFalse
      -> FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Bool -> Parser BenchmarkOptsMonoid
benchOptsParser Bool
hideBool Parser
  (FirstFalse
   -> FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> FirstFalse
      -> [Text]
      -> FirstTrue
      -> First Text
      -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
reconfigure Parser
  (FirstFalse
   -> FirstFalse
   -> [Text]
   -> FirstTrue
   -> First Text
   -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser
     (FirstFalse
      -> [Text] -> FirstTrue -> First Text -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
cabalVerbose Parser
  (FirstFalse
   -> [Text] -> FirstTrue -> First Text -> BuildOptsMonoid)
-> Parser FirstFalse
-> Parser ([Text] -> FirstTrue -> First Text -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser FirstFalse
splitObjs Parser ([Text] -> FirstTrue -> First Text -> BuildOptsMonoid)
-> Parser [Text]
-> Parser (FirstTrue -> First Text -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser [Text]
skipComponents Parser (FirstTrue -> First Text -> BuildOptsMonoid)
-> Parser FirstTrue -> Parser (First Text -> BuildOptsMonoid)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*>
    Parser FirstTrue
interleavedOutput Parser (First Text -> BuildOptsMonoid)
-> Parser (First Text) -> Parser BuildOptsMonoid
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (First Text)
ddumpDir
  where
    hideBool :: Bool
hideBool = GlobalOptsContext
hide0 GlobalOptsContext -> GlobalOptsContext -> Bool
forall a. Eq a => a -> a -> Bool
/= GlobalOptsContext
BuildCmdGlobalOpts
    hide :: Mod f a
hide =
        Bool -> Mod f a
forall (f :: * -> *) a. Bool -> Mod f a
hideMods Bool
hideBool
    hideExceptGhci :: Mod f a
hideExceptGhci =
        Bool -> Mod f a
forall (f :: * -> *) a. Bool -> Mod f a
hideMods (GlobalOptsContext
hide0 GlobalOptsContext -> [GlobalOptsContext] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [GlobalOptsContext
BuildCmdGlobalOpts, GlobalOptsContext
GhciCmdGlobalOpts])

    -- These use 'Any' because they are not settable in stack.yaml, so
    -- there is no need for options like --no-profile.
    trace' :: Parser Any
trace' = Bool -> Any
Any (Bool -> Any) -> Parser Bool -> Parser Any
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
        Bool -> Bool -> Mod FlagFields Bool -> Parser Bool
forall a. a -> a -> Mod FlagFields a -> Parser a
flag
            Bool
False
            Bool
True
            (String -> Mod FlagFields Bool
forall (f :: * -> *) a. HasName f => String -> Mod f a
long "trace" Mod FlagFields Bool -> Mod FlagFields Bool -> Mod FlagFields Bool
forall a. Semigroup a => a -> a -> a
<>
             String -> Mod FlagFields Bool
forall (f :: * -> *) a. String -> Mod f a
help
                 "Enable profiling in libraries, executables, etc. \
                     \for all expressions and generate a backtrace on \
                     \exception" Mod FlagFields Bool -> Mod FlagFields Bool -> Mod FlagFields Bool
forall a. Semigroup a => a -> a -> a
<>
             Mod FlagFields Bool
forall (f :: * -> *) a. Mod f a
hideExceptGhci)
    profile :: Parser Any
profile = Bool -> Any
Any (Bool -> Any) -> Parser Bool -> Parser Any
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
        Bool -> Bool -> Mod FlagFields Bool -> Parser Bool
forall a. a -> a -> Mod FlagFields a -> Parser a
flag
            Bool
False
            Bool
True
            (String -> Mod FlagFields Bool
forall (f :: * -> *) a. HasName f => String -> Mod f a
long "profile" Mod FlagFields Bool -> Mod FlagFields Bool -> Mod FlagFields Bool
forall a. Semigroup a => a -> a -> a
<>
             String -> Mod FlagFields Bool
forall (f :: * -> *) a. String -> Mod f a
help
                 "profiling in libraries, executables, etc. \
                     \for all expressions and generate a profiling report\
                     \ in tests or benchmarks" Mod FlagFields Bool -> Mod FlagFields Bool -> Mod FlagFields Bool
forall a. Semigroup a => a -> a -> a
<>
             Mod FlagFields Bool
forall (f :: * -> *) a. Mod f a
hideExceptGhci)
    noStrip :: Parser Any
noStrip = Bool -> Any
Any (Bool -> Any) -> Parser Bool -> Parser Any
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
        Bool -> Bool -> Mod FlagFields Bool -> Parser Bool
forall a. a -> a -> Mod FlagFields a -> Parser a
flag
             Bool
False
             Bool
True
             (String -> Mod FlagFields Bool
forall (f :: * -> *) a. HasName f => String -> Mod f a
long "no-strip" Mod FlagFields Bool -> Mod FlagFields Bool -> Mod FlagFields Bool
forall a. Semigroup a => a -> a -> a
<>
              String -> Mod FlagFields Bool
forall (f :: * -> *) a. String -> Mod f a
help
                  "Disable DWARF debugging symbol stripping in libraries, \
                      \executables, etc. for all expressions, producing \
                      \larger executables but allowing the use of standard \
                      \debuggers/profiling tools/other utilities that use \
                      \debugging symbols." Mod FlagFields Bool -> Mod FlagFields Bool -> Mod FlagFields Bool
forall a. Semigroup a => a -> a -> a
<>
             Mod FlagFields Bool
forall (f :: * -> *) a. Mod f a
hideExceptGhci)
    libProfiling :: Parser FirstFalse
libProfiling =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "library-profiling"
            "library profiling for TARGETs and all its dependencies"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    exeProfiling :: Parser FirstFalse
exeProfiling =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "executable-profiling"
            "executable profiling for TARGETs and all its dependencies"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    libStripping :: Parser FirstTrue
libStripping =
        String -> String -> Mod FlagFields FirstTrue -> Parser FirstTrue
firstBoolFlagsTrue
            "library-stripping"
            "library stripping for TARGETs and all its dependencies"
            Mod FlagFields FirstTrue
forall (f :: * -> *) a. Mod f a
hide
    exeStripping :: Parser FirstTrue
exeStripping =
        String -> String -> Mod FlagFields FirstTrue -> Parser FirstTrue
firstBoolFlagsTrue
            "executable-stripping"
            "executable stripping for TARGETs and all its dependencies"
            Mod FlagFields FirstTrue
forall (f :: * -> *) a. Mod f a
hide
    haddock :: Parser FirstFalse
haddock =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "haddock"
            "generating Haddocks the package(s) in this directory/configuration"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    openHaddocks :: Parser FirstFalse
openHaddocks =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "open"
            "opening the local Haddock documentation in the browser"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    haddockDeps :: Parser (First Bool)
haddockDeps =
        String
-> String -> Mod FlagFields (Maybe Bool) -> Parser (First Bool)
firstBoolFlagsNoDefault
            "haddock-deps"
            "building Haddocks for dependencies (default: true if building Haddocks, false otherwise)"
            Mod FlagFields (Maybe Bool)
forall (f :: * -> *) a. Mod f a
hide
    haddockInternal :: Parser FirstFalse
haddockInternal =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "haddock-internal"
            "building Haddocks for internal modules (like cabal haddock --internal)"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    haddockHyperlinkSource :: Parser FirstTrue
haddockHyperlinkSource =
        String -> String -> Mod FlagFields FirstTrue -> Parser FirstTrue
firstBoolFlagsTrue
            "haddock-hyperlink-source"
            "building hyperlinked source for Haddock (like haddock --hyperlinked-source)"
            Mod FlagFields FirstTrue
forall (f :: * -> *) a. Mod f a
hide
    copyBins :: Parser FirstFalse
copyBins =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "copy-bins"
            "copying binaries to the local-bin-path (see 'stack path')"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    copyCompilerTool :: Parser FirstFalse
copyCompilerTool =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "copy-compiler-tool"
            "copying binaries of targets to compiler-tools-bin (see 'stack path')"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    keepGoing :: Parser (First Bool)
keepGoing =
        String
-> String -> Mod FlagFields (Maybe Bool) -> Parser (First Bool)
firstBoolFlagsNoDefault
            "keep-going"
            "continue running after a step fails (default: false for build, true for test/bench)"
            Mod FlagFields (Maybe Bool)
forall (f :: * -> *) a. Mod f a
hide
    keepTmpFiles :: Parser FirstFalse
keepTmpFiles =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "keep-tmp-files"
            "keep intermediate files and build directories"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    preFetch :: Parser FirstFalse
preFetch =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "prefetch"
             "Fetch packages necessary for the build immediately, useful with --dry-run"
             Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    forceDirty :: Parser FirstFalse
forceDirty =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "force-dirty"
            "Force treating all local packages as having dirty files (useful for cases where stack can't detect a file change"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    tests :: Parser FirstFalse
tests =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "test"
            "testing the package(s) in this directory/configuration"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hideExceptGhci
    benches :: Parser FirstFalse
benches =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "bench"
            "benchmarking the package(s) in this directory/configuration"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hideExceptGhci
    reconfigure :: Parser FirstFalse
reconfigure =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
             "reconfigure"
             "Perform the configure step even if unnecessary. Useful in some corner cases with custom Setup.hs files"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    cabalVerbose :: Parser FirstFalse
cabalVerbose =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "cabal-verbose"
            "Ask Cabal to be verbose in its output"
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    splitObjs :: Parser FirstFalse
splitObjs =
        String -> String -> Mod FlagFields FirstFalse -> Parser FirstFalse
firstBoolFlagsFalse
            "split-objs"
            ("Enable split-objs, to reduce output size (at the cost of build time). " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
splitObjsWarning)
            Mod FlagFields FirstFalse
forall (f :: * -> *) a. Mod f a
hide
    skipComponents :: Parser [Text]
skipComponents = Parser Text -> Parser [Text]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many
        ((String -> Text) -> Parser String -> Parser Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
            String -> Text
T.pack
            (Mod OptionFields String -> Parser String
forall s. IsString s => Mod OptionFields s -> Parser s
strOption
                (String -> Mod OptionFields String
forall (f :: * -> *) a. HasName f => String -> Mod f a
long "skip" Mod OptionFields String
-> Mod OptionFields String -> Mod OptionFields String
forall a. Semigroup a => a -> a -> a
<>
                 String -> Mod OptionFields String
forall (f :: * -> *) a. String -> Mod f a
help "Skip given component, can be specified multiple times" Mod OptionFields String
-> Mod OptionFields String -> Mod OptionFields String
forall a. Semigroup a => a -> a -> a
<>
                 Mod OptionFields String
forall (f :: * -> *) a. Mod f a
hide)))
    interleavedOutput :: Parser FirstTrue
interleavedOutput =
        String -> String -> Mod FlagFields FirstTrue -> Parser FirstTrue
firstBoolFlagsTrue
            "interleaved-output"
            "Print concurrent GHC output to the console with a prefix for the package name"
            Mod FlagFields FirstTrue
forall (f :: * -> *) a. Mod f a
hide
    ddumpDir :: Parser (First Text)
ddumpDir =
        Parser Text -> Parser (First Text)
forall (f :: * -> *) a. Alternative f => f a -> f (First a)
optionalFirst
            (Mod OptionFields Text -> Parser Text
forall s. IsString s => Mod OptionFields s -> Parser s
strOption
                (String -> Mod OptionFields Text
forall (f :: * -> *) a. HasName f => String -> Mod f a
long "ddump-dir" Mod OptionFields Text
-> Mod OptionFields Text -> Mod OptionFields Text
forall a. Semigroup a => a -> a -> a
<>
                 String -> Mod OptionFields Text
forall (f :: * -> *) a. String -> Mod f a
help "Specify output ddump-files" Mod OptionFields Text
-> Mod OptionFields Text -> Mod OptionFields Text
forall a. Semigroup a => a -> a -> a
<>
                 Mod OptionFields Text
forall (f :: * -> *) a. Mod f a
hide))