{-# LANGUAGE NoImplicitPrelude     #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NoFieldSelectors      #-}
{-# LANGUAGE OverloadedRecordDot   #-}
{-# LANGUAGE OverloadedStrings     #-}

-- | Configuration options for building from the command line and/or a

-- configuration file.

module Stack.Types.BuildOptsMonoid
  ( BuildOptsMonoid (..)
  , HaddockOptsMonoid (..)
  , TestOptsMonoid (..)
  , BenchmarkOptsMonoid (..)
  , CabalVerbosity (..)
  , ProgressBarFormat (..)
  , buildOptsMonoidHaddockL
  , buildOptsMonoidTestsL
  , buildOptsMonoidBenchmarksL
  , buildOptsMonoidInstallExesL
  , toFirstCabalVerbosity
  , readProgressBarFormat
  ) where

import           Data.Aeson.Types ( FromJSON (..), withText )
import           Data.Aeson.WarningParser
                   ( WithJSONWarnings, (..:?), (..!=), jsonSubWarnings
                   , withObjectWarnings
                   )
import qualified Data.Text as T
import           Distribution.Parsec ( Parsec (..), simpleParsec )
import           Distribution.Verbosity ( Verbosity, normal, verbose )
import           Generics.Deriving.Monoid ( mappenddefault, memptydefault )
import           Stack.Prelude hiding ( trace )

-- | Build options that may be specified in the stack.yaml or from the CLI

data BuildOptsMonoid = BuildOptsMonoid
  { BuildOptsMonoid -> Any
trace :: !Any
  , BuildOptsMonoid -> Any
profile :: !Any
  , BuildOptsMonoid -> Any
noStrip :: !Any
  , BuildOptsMonoid -> FirstFalse
libProfile :: !FirstFalse
  , BuildOptsMonoid -> FirstFalse
exeProfile :: !FirstFalse
  , BuildOptsMonoid -> FirstTrue
libStrip :: !FirstTrue
  , BuildOptsMonoid -> FirstTrue
exeStrip :: !FirstTrue
  , BuildOptsMonoid -> FirstFalse
buildHaddocks :: !FirstFalse
  , BuildOptsMonoid -> HaddockOptsMonoid
haddockOpts :: !HaddockOptsMonoid
  , BuildOptsMonoid -> FirstFalse
openHaddocks :: !FirstFalse
  , BuildOptsMonoid -> First Bool
haddockDeps :: !(First Bool)
  , BuildOptsMonoid -> FirstFalse
haddockInternal :: !FirstFalse
  , BuildOptsMonoid -> FirstTrue
haddockHyperlinkSource :: !FirstTrue
  , BuildOptsMonoid -> FirstFalse
haddockForHackage :: !FirstFalse
  , BuildOptsMonoid -> FirstFalse
installExes :: !FirstFalse
  , BuildOptsMonoid -> FirstFalse
installCompilerTool :: !FirstFalse
  , BuildOptsMonoid -> FirstFalse
preFetch :: !FirstFalse
  , BuildOptsMonoid -> First Bool
keepGoing :: !(First Bool)
  , BuildOptsMonoid -> FirstFalse
keepTmpFiles :: !FirstFalse
  , BuildOptsMonoid -> FirstFalse
forceDirty :: !FirstFalse
  , BuildOptsMonoid -> FirstFalse
tests :: !FirstFalse
  , BuildOptsMonoid -> TestOptsMonoid
testOpts :: !TestOptsMonoid
  , BuildOptsMonoid -> FirstFalse
benchmarks :: !FirstFalse
  , BuildOptsMonoid -> BenchmarkOptsMonoid
benchmarkOpts :: !BenchmarkOptsMonoid
  , BuildOptsMonoid -> FirstFalse
reconfigure :: !FirstFalse
  , BuildOptsMonoid -> First CabalVerbosity
cabalVerbose :: !(First CabalVerbosity)
  , BuildOptsMonoid -> FirstFalse
splitObjs :: !FirstFalse
  , BuildOptsMonoid -> [Text]
skipComponents :: ![Text]
  , BuildOptsMonoid -> FirstTrue
interleavedOutput :: !FirstTrue
  , BuildOptsMonoid -> First ProgressBarFormat
progressBar :: !(First ProgressBarFormat)
  , BuildOptsMonoid -> First Text
ddumpDir :: !(First Text)
  }
  deriving ((forall x. BuildOptsMonoid -> Rep BuildOptsMonoid x)
-> (forall x. Rep BuildOptsMonoid x -> BuildOptsMonoid)
-> Generic BuildOptsMonoid
forall x. Rep BuildOptsMonoid x -> BuildOptsMonoid
forall x. BuildOptsMonoid -> Rep BuildOptsMonoid x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BuildOptsMonoid -> Rep BuildOptsMonoid x
from :: forall x. BuildOptsMonoid -> Rep BuildOptsMonoid x
$cto :: forall x. Rep BuildOptsMonoid x -> BuildOptsMonoid
to :: forall x. Rep BuildOptsMonoid x -> BuildOptsMonoid
Generic, Int -> BuildOptsMonoid -> ShowS
[BuildOptsMonoid] -> ShowS
BuildOptsMonoid -> String
(Int -> BuildOptsMonoid -> ShowS)
-> (BuildOptsMonoid -> String)
-> ([BuildOptsMonoid] -> ShowS)
-> Show BuildOptsMonoid
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BuildOptsMonoid -> ShowS
showsPrec :: Int -> BuildOptsMonoid -> ShowS
$cshow :: BuildOptsMonoid -> String
show :: BuildOptsMonoid -> String
$cshowList :: [BuildOptsMonoid] -> ShowS
showList :: [BuildOptsMonoid] -> ShowS
Show)

instance FromJSON (WithJSONWarnings BuildOptsMonoid) where
  parseJSON :: Value -> Parser (WithJSONWarnings BuildOptsMonoid)
parseJSON = String
-> (Object -> WarningParser BuildOptsMonoid)
-> Value
-> Parser (WithJSONWarnings BuildOptsMonoid)
forall a.
String
-> (Object -> WarningParser a)
-> Value
-> Parser (WithJSONWarnings a)
withObjectWarnings String
"BuildOptsMonoid" ((Object -> WarningParser BuildOptsMonoid)
 -> Value -> Parser (WithJSONWarnings BuildOptsMonoid))
-> (Object -> WarningParser BuildOptsMonoid)
-> Value
-> Parser (WithJSONWarnings BuildOptsMonoid)
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
    let trace :: Any
trace = Bool -> Any
Any Bool
False
        profile :: Any
profile = Bool -> Any
Any Bool
False
        noStrip :: Any
noStrip = Bool -> Any
Any Bool
False
    FirstFalse
libProfile <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
libProfileArgName
    FirstFalse
exeProfile <-Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>  Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
exeProfileArgName
    FirstTrue
libStrip <- Maybe Bool -> FirstTrue
FirstTrue (Maybe Bool -> FirstTrue)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstTrue
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
libStripArgName
    FirstTrue
exeStrip <-Maybe Bool -> FirstTrue
FirstTrue (Maybe Bool -> FirstTrue)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstTrue
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>  Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
exeStripArgName
    FirstFalse
buildHaddocks <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockArgName
    HaddockOptsMonoid
haddockOpts <- WarningParser (WithJSONWarnings HaddockOptsMonoid)
-> WarningParser HaddockOptsMonoid
forall a. WarningParser (WithJSONWarnings a) -> WarningParser a
jsonSubWarnings (Object
o Object
-> Text
-> WarningParser (Maybe (WithJSONWarnings HaddockOptsMonoid))
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockOptsArgName WarningParser (Maybe (WithJSONWarnings HaddockOptsMonoid))
-> WithJSONWarnings HaddockOptsMonoid
-> WarningParser (WithJSONWarnings HaddockOptsMonoid)
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= WithJSONWarnings HaddockOptsMonoid
forall a. Monoid a => a
mempty)
    FirstFalse
openHaddocks <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
openHaddocksArgName
    First Bool
haddockDeps <- Maybe Bool -> First Bool
forall a. Maybe a -> First a
First (Maybe Bool -> First Bool)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser (First Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockDepsArgName
    FirstFalse
haddockInternal <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockInternalArgName
    FirstTrue
haddockHyperlinkSource <- Maybe Bool -> FirstTrue
FirstTrue (Maybe Bool -> FirstTrue)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstTrue
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockHyperlinkSourceArgName
    FirstFalse
haddockForHackage <-  Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockForHackageArgName
    FirstFalse
installExes <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
installExesArgName
    FirstFalse
installCompilerTool <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
installCompilerToolArgName
    FirstFalse
preFetch <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
preFetchArgName
    First Bool
keepGoing <- Maybe Bool -> First Bool
forall a. Maybe a -> First a
First (Maybe Bool -> First Bool)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser (First Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
keepGoingArgName
    FirstFalse
keepTmpFiles <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
keepTmpFilesArgName
    FirstFalse
forceDirty <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
forceDirtyArgName
    FirstFalse
tests <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
testsArgName
    TestOptsMonoid
testOpts <- WarningParser (WithJSONWarnings TestOptsMonoid)
-> WarningParser TestOptsMonoid
forall a. WarningParser (WithJSONWarnings a) -> WarningParser a
jsonSubWarnings (Object
o Object
-> Text -> WarningParser (Maybe (WithJSONWarnings TestOptsMonoid))
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
testOptsArgName WarningParser (Maybe (WithJSONWarnings TestOptsMonoid))
-> WithJSONWarnings TestOptsMonoid
-> WarningParser (WithJSONWarnings TestOptsMonoid)
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= WithJSONWarnings TestOptsMonoid
forall a. Monoid a => a
mempty)
    FirstFalse
benchmarks <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
benchmarksArgName
    BenchmarkOptsMonoid
benchmarkOpts <- WarningParser (WithJSONWarnings BenchmarkOptsMonoid)
-> WarningParser BenchmarkOptsMonoid
forall a. WarningParser (WithJSONWarnings a) -> WarningParser a
jsonSubWarnings (Object
o Object
-> Text
-> WarningParser (Maybe (WithJSONWarnings BenchmarkOptsMonoid))
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
benchmarkOptsArgName WarningParser (Maybe (WithJSONWarnings BenchmarkOptsMonoid))
-> WithJSONWarnings BenchmarkOptsMonoid
-> WarningParser (WithJSONWarnings BenchmarkOptsMonoid)
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= WithJSONWarnings BenchmarkOptsMonoid
forall a. Monoid a => a
mempty)
    FirstFalse
reconfigure <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
reconfigureArgName
    First CabalVerbosity
cabalVerbosity <- Maybe CabalVerbosity -> First CabalVerbosity
forall a. Maybe a -> First a
First (Maybe CabalVerbosity -> First CabalVerbosity)
-> WriterT WarningParserMonoid Parser (Maybe CabalVerbosity)
-> WriterT WarningParserMonoid Parser (First CabalVerbosity)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object
-> Text
-> WriterT WarningParserMonoid Parser (Maybe CabalVerbosity)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
cabalVerbosityArgName
    FirstFalse
cabalVerbose' <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
cabalVerboseArgName
    let cabalVerbose :: First CabalVerbosity
cabalVerbose = First CabalVerbosity
cabalVerbosity First CabalVerbosity
-> First CabalVerbosity -> First CabalVerbosity
forall a. Semigroup a => a -> a -> a
<> FirstFalse -> First CabalVerbosity
toFirstCabalVerbosity FirstFalse
cabalVerbose'
    FirstFalse
splitObjs <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
splitObjsName
    [Text]
skipComponents <- Object
o Object -> Text -> WarningParser (Maybe [Text])
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
skipComponentsName WarningParser (Maybe [Text]) -> [Text] -> WarningParser [Text]
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= [Text]
forall a. Monoid a => a
mempty
    FirstTrue
interleavedOutput <- Maybe Bool -> FirstTrue
FirstTrue (Maybe Bool -> FirstTrue)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstTrue
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
interleavedOutputName
    First ProgressBarFormat
progressBar <- Maybe ProgressBarFormat -> First ProgressBarFormat
forall a. Maybe a -> First a
First (Maybe ProgressBarFormat -> First ProgressBarFormat)
-> WriterT WarningParserMonoid Parser (Maybe ProgressBarFormat)
-> WriterT WarningParserMonoid Parser (First ProgressBarFormat)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object
-> Text
-> WriterT WarningParserMonoid Parser (Maybe ProgressBarFormat)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
progressBarName
    First Text
ddumpDir <- Object
o Object -> Text -> WarningParser (Maybe (First Text))
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
ddumpDirName WarningParser (Maybe (First Text))
-> First Text -> WarningParser (First Text)
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= First Text
forall a. Monoid a => a
mempty
    BuildOptsMonoid -> WarningParser BuildOptsMonoid
forall a. a -> WriterT WarningParserMonoid Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BuildOptsMonoid
      { Any
$sel:trace:BuildOptsMonoid :: Any
trace :: Any
trace
      , Any
$sel:profile:BuildOptsMonoid :: Any
profile :: Any
profile
      , Any
$sel:noStrip:BuildOptsMonoid :: Any
noStrip :: Any
noStrip
      , FirstFalse
$sel:libProfile:BuildOptsMonoid :: FirstFalse
libProfile :: FirstFalse
libProfile
      , FirstFalse
$sel:exeProfile:BuildOptsMonoid :: FirstFalse
exeProfile :: FirstFalse
exeProfile
      , FirstTrue
$sel:libStrip:BuildOptsMonoid :: FirstTrue
libStrip :: FirstTrue
libStrip
      , FirstTrue
$sel:exeStrip:BuildOptsMonoid :: FirstTrue
exeStrip :: FirstTrue
exeStrip
      , FirstFalse
$sel:buildHaddocks:BuildOptsMonoid :: FirstFalse
buildHaddocks :: FirstFalse
buildHaddocks
      , HaddockOptsMonoid
$sel:haddockOpts:BuildOptsMonoid :: HaddockOptsMonoid
haddockOpts :: HaddockOptsMonoid
haddockOpts
      , FirstFalse
$sel:openHaddocks:BuildOptsMonoid :: FirstFalse
openHaddocks :: FirstFalse
openHaddocks
      , First Bool
$sel:haddockDeps:BuildOptsMonoid :: First Bool
haddockDeps :: First Bool
haddockDeps
      , FirstFalse
$sel:haddockInternal:BuildOptsMonoid :: FirstFalse
haddockInternal :: FirstFalse
haddockInternal
      , FirstTrue
$sel:haddockHyperlinkSource:BuildOptsMonoid :: FirstTrue
haddockHyperlinkSource :: FirstTrue
haddockHyperlinkSource
      , FirstFalse
$sel:haddockForHackage:BuildOptsMonoid :: FirstFalse
haddockForHackage :: FirstFalse
haddockForHackage
      , FirstFalse
$sel:installExes:BuildOptsMonoid :: FirstFalse
installExes :: FirstFalse
installExes
      , FirstFalse
$sel:installCompilerTool:BuildOptsMonoid :: FirstFalse
installCompilerTool :: FirstFalse
installCompilerTool
      , FirstFalse
$sel:preFetch:BuildOptsMonoid :: FirstFalse
preFetch :: FirstFalse
preFetch
      , First Bool
$sel:keepGoing:BuildOptsMonoid :: First Bool
keepGoing :: First Bool
keepGoing
      , FirstFalse
$sel:keepTmpFiles:BuildOptsMonoid :: FirstFalse
keepTmpFiles :: FirstFalse
keepTmpFiles
      , FirstFalse
$sel:forceDirty:BuildOptsMonoid :: FirstFalse
forceDirty :: FirstFalse
forceDirty
      , FirstFalse
$sel:tests:BuildOptsMonoid :: FirstFalse
tests :: FirstFalse
tests
      , TestOptsMonoid
$sel:testOpts:BuildOptsMonoid :: TestOptsMonoid
testOpts :: TestOptsMonoid
testOpts
      , FirstFalse
$sel:benchmarks:BuildOptsMonoid :: FirstFalse
benchmarks :: FirstFalse
benchmarks
      , BenchmarkOptsMonoid
$sel:benchmarkOpts:BuildOptsMonoid :: BenchmarkOptsMonoid
benchmarkOpts :: BenchmarkOptsMonoid
benchmarkOpts
      , FirstFalse
$sel:reconfigure:BuildOptsMonoid :: FirstFalse
reconfigure :: FirstFalse
reconfigure
      , First CabalVerbosity
$sel:cabalVerbose:BuildOptsMonoid :: First CabalVerbosity
cabalVerbose :: First CabalVerbosity
cabalVerbose
      , FirstFalse
$sel:splitObjs:BuildOptsMonoid :: FirstFalse
splitObjs :: FirstFalse
splitObjs
      , [Text]
$sel:skipComponents:BuildOptsMonoid :: [Text]
skipComponents :: [Text]
skipComponents
      , FirstTrue
$sel:interleavedOutput:BuildOptsMonoid :: FirstTrue
interleavedOutput :: FirstTrue
interleavedOutput
      , First ProgressBarFormat
$sel:progressBar:BuildOptsMonoid :: First ProgressBarFormat
progressBar :: First ProgressBarFormat
progressBar
      , First Text
$sel:ddumpDir:BuildOptsMonoid :: First Text
ddumpDir :: First Text
ddumpDir
      }

libProfileArgName :: Text
libProfileArgName :: Text
libProfileArgName = Text
"library-profiling"

exeProfileArgName :: Text
exeProfileArgName :: Text
exeProfileArgName = Text
"executable-profiling"

libStripArgName :: Text
libStripArgName :: Text
libStripArgName = Text
"library-stripping"

exeStripArgName :: Text
exeStripArgName :: Text
exeStripArgName = Text
"executable-stripping"

haddockArgName :: Text
haddockArgName :: Text
haddockArgName = Text
"haddock"

haddockOptsArgName :: Text
haddockOptsArgName :: Text
haddockOptsArgName = Text
"haddock-arguments"

openHaddocksArgName :: Text
openHaddocksArgName :: Text
openHaddocksArgName = Text
"open-haddocks"

haddockDepsArgName :: Text
haddockDepsArgName :: Text
haddockDepsArgName = Text
"haddock-deps"

haddockInternalArgName :: Text
haddockInternalArgName :: Text
haddockInternalArgName = Text
"haddock-internal"

haddockHyperlinkSourceArgName :: Text
haddockHyperlinkSourceArgName :: Text
haddockHyperlinkSourceArgName = Text
"haddock-hyperlink-source"

haddockForHackageArgName :: Text
haddockForHackageArgName :: Text
haddockForHackageArgName = Text
"haddock-for-hackage"

installExesArgName :: Text
installExesArgName :: Text
installExesArgName = Text
"copy-bins"

installCompilerToolArgName :: Text
installCompilerToolArgName :: Text
installCompilerToolArgName = Text
"copy-compiler-tool"

preFetchArgName :: Text
preFetchArgName :: Text
preFetchArgName = Text
"prefetch"

keepGoingArgName :: Text
keepGoingArgName :: Text
keepGoingArgName = Text
"keep-going"

keepTmpFilesArgName :: Text
keepTmpFilesArgName :: Text
keepTmpFilesArgName = Text
"keep-tmp-files"

forceDirtyArgName :: Text
forceDirtyArgName :: Text
forceDirtyArgName = Text
"force-dirty"

testsArgName :: Text
testsArgName :: Text
testsArgName = Text
"test"

testOptsArgName :: Text
testOptsArgName :: Text
testOptsArgName = Text
"test-arguments"

benchmarksArgName :: Text
benchmarksArgName :: Text
benchmarksArgName = Text
"bench"

benchmarkOptsArgName :: Text
benchmarkOptsArgName :: Text
benchmarkOptsArgName = Text
"benchmark-opts"

reconfigureArgName :: Text
reconfigureArgName :: Text
reconfigureArgName = Text
"reconfigure"

cabalVerbosityArgName :: Text
cabalVerbosityArgName :: Text
cabalVerbosityArgName = Text
"cabal-verbosity"

cabalVerboseArgName :: Text
cabalVerboseArgName :: Text
cabalVerboseArgName = Text
"cabal-verbose"

splitObjsName :: Text
splitObjsName :: Text
splitObjsName = Text
"split-objs"

skipComponentsName :: Text
skipComponentsName :: Text
skipComponentsName = Text
"skip-components"

interleavedOutputName :: Text
interleavedOutputName :: Text
interleavedOutputName = Text
"interleaved-output"

progressBarName :: Text
progressBarName :: Text
progressBarName = Text
"progress-bar"

ddumpDirName :: Text
ddumpDirName :: Text
ddumpDirName = Text
"ddump-dir"

instance Semigroup BuildOptsMonoid where
  <> :: BuildOptsMonoid -> BuildOptsMonoid -> BuildOptsMonoid
(<>) = BuildOptsMonoid -> BuildOptsMonoid -> BuildOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a -> a -> a
mappenddefault

instance Monoid BuildOptsMonoid where
  mempty :: BuildOptsMonoid
mempty = BuildOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a
memptydefault
  mappend :: BuildOptsMonoid -> BuildOptsMonoid -> BuildOptsMonoid
mappend = BuildOptsMonoid -> BuildOptsMonoid -> BuildOptsMonoid
forall a. Semigroup a => a -> a -> a
(<>)

data TestOptsMonoid = TestOptsMonoid
  { TestOptsMonoid -> FirstTrue
rerunTests :: !FirstTrue
  , TestOptsMonoid -> [String]
additionalArgs :: ![String]
  , TestOptsMonoid -> FirstFalse
coverage :: !FirstFalse
  , TestOptsMonoid -> FirstFalse
disableRun :: !FirstFalse
  , TestOptsMonoid -> First (Maybe Int)
maximumTimeSeconds :: !(First (Maybe Int))
  , TestOptsMonoid -> FirstTrue
allowStdin :: !FirstTrue
  }
  deriving (Int -> TestOptsMonoid -> ShowS
[TestOptsMonoid] -> ShowS
TestOptsMonoid -> String
(Int -> TestOptsMonoid -> ShowS)
-> (TestOptsMonoid -> String)
-> ([TestOptsMonoid] -> ShowS)
-> Show TestOptsMonoid
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TestOptsMonoid -> ShowS
showsPrec :: Int -> TestOptsMonoid -> ShowS
$cshow :: TestOptsMonoid -> String
show :: TestOptsMonoid -> String
$cshowList :: [TestOptsMonoid] -> ShowS
showList :: [TestOptsMonoid] -> ShowS
Show, (forall x. TestOptsMonoid -> Rep TestOptsMonoid x)
-> (forall x. Rep TestOptsMonoid x -> TestOptsMonoid)
-> Generic TestOptsMonoid
forall x. Rep TestOptsMonoid x -> TestOptsMonoid
forall x. TestOptsMonoid -> Rep TestOptsMonoid x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TestOptsMonoid -> Rep TestOptsMonoid x
from :: forall x. TestOptsMonoid -> Rep TestOptsMonoid x
$cto :: forall x. Rep TestOptsMonoid x -> TestOptsMonoid
to :: forall x. Rep TestOptsMonoid x -> TestOptsMonoid
Generic)

instance FromJSON (WithJSONWarnings TestOptsMonoid) where
  parseJSON :: Value -> Parser (WithJSONWarnings TestOptsMonoid)
parseJSON = String
-> (Object -> WarningParser TestOptsMonoid)
-> Value
-> Parser (WithJSONWarnings TestOptsMonoid)
forall a.
String
-> (Object -> WarningParser a)
-> Value
-> Parser (WithJSONWarnings a)
withObjectWarnings String
"TestOptsMonoid" ((Object -> WarningParser TestOptsMonoid)
 -> Value -> Parser (WithJSONWarnings TestOptsMonoid))
-> (Object -> WarningParser TestOptsMonoid)
-> Value
-> Parser (WithJSONWarnings TestOptsMonoid)
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
    FirstTrue
rerunTests <- Maybe Bool -> FirstTrue
FirstTrue (Maybe Bool -> FirstTrue)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstTrue
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
rerunTestsArgName
    [String]
additionalArgs <- Object
o Object -> Text -> WarningParser (Maybe [String])
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
testAdditionalArgsName WarningParser (Maybe [String])
-> [String] -> WarningParser [String]
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= []
    FirstFalse
coverage <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
coverageArgName
    FirstFalse
disableRun <- Maybe Bool -> FirstFalse
FirstFalse (Maybe Bool -> FirstFalse)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstFalse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
testDisableRunArgName
    First (Maybe Int)
maximumTimeSeconds <- Maybe (Maybe Int) -> First (Maybe Int)
forall a. Maybe a -> First a
First (Maybe (Maybe Int) -> First (Maybe Int))
-> WriterT WarningParserMonoid Parser (Maybe (Maybe Int))
-> WriterT WarningParserMonoid Parser (First (Maybe Int))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object
-> Text -> WriterT WarningParserMonoid Parser (Maybe (Maybe Int))
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
maximumTimeSecondsArgName
    FirstTrue
allowStdin <- Maybe Bool -> FirstTrue
FirstTrue (Maybe Bool -> FirstTrue)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser FirstTrue
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
testsAllowStdinName
    TestOptsMonoid -> WarningParser TestOptsMonoid
forall a. a -> WriterT WarningParserMonoid Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure TestOptsMonoid
      { FirstTrue
$sel:rerunTests:TestOptsMonoid :: FirstTrue
rerunTests :: FirstTrue
rerunTests
      , [String]
$sel:additionalArgs:TestOptsMonoid :: [String]
additionalArgs :: [String]
additionalArgs
      , FirstFalse
$sel:coverage:TestOptsMonoid :: FirstFalse
coverage :: FirstFalse
coverage
      , FirstFalse
$sel:disableRun:TestOptsMonoid :: FirstFalse
disableRun :: FirstFalse
disableRun
      , First (Maybe Int)
$sel:maximumTimeSeconds:TestOptsMonoid :: First (Maybe Int)
maximumTimeSeconds :: First (Maybe Int)
maximumTimeSeconds
      , FirstTrue
$sel:allowStdin:TestOptsMonoid :: FirstTrue
allowStdin :: FirstTrue
allowStdin
      }

rerunTestsArgName :: Text
rerunTestsArgName :: Text
rerunTestsArgName = Text
"rerun-tests"

testAdditionalArgsName :: Text
testAdditionalArgsName :: Text
testAdditionalArgsName = Text
"additional-args"

coverageArgName :: Text
coverageArgName :: Text
coverageArgName = Text
"coverage"

testDisableRunArgName :: Text
testDisableRunArgName :: Text
testDisableRunArgName = Text
"no-run-tests"

maximumTimeSecondsArgName :: Text
maximumTimeSecondsArgName :: Text
maximumTimeSecondsArgName = Text
"test-suite-timeout"

testsAllowStdinName :: Text
testsAllowStdinName :: Text
testsAllowStdinName = Text
"tests-allow-stdin"

instance Semigroup TestOptsMonoid where
  <> :: TestOptsMonoid -> TestOptsMonoid -> TestOptsMonoid
(<>) = TestOptsMonoid -> TestOptsMonoid -> TestOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a -> a -> a
mappenddefault

instance Monoid TestOptsMonoid where
  mempty :: TestOptsMonoid
mempty = TestOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a
memptydefault
  mappend :: TestOptsMonoid -> TestOptsMonoid -> TestOptsMonoid
mappend = TestOptsMonoid -> TestOptsMonoid -> TestOptsMonoid
forall a. Semigroup a => a -> a -> a
(<>)

newtype HaddockOptsMonoid = HaddockOptsMonoid
  { HaddockOptsMonoid -> [String]
additionalArgs :: [String]
  }
  deriving ((forall x. HaddockOptsMonoid -> Rep HaddockOptsMonoid x)
-> (forall x. Rep HaddockOptsMonoid x -> HaddockOptsMonoid)
-> Generic HaddockOptsMonoid
forall x. Rep HaddockOptsMonoid x -> HaddockOptsMonoid
forall x. HaddockOptsMonoid -> Rep HaddockOptsMonoid x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. HaddockOptsMonoid -> Rep HaddockOptsMonoid x
from :: forall x. HaddockOptsMonoid -> Rep HaddockOptsMonoid x
$cto :: forall x. Rep HaddockOptsMonoid x -> HaddockOptsMonoid
to :: forall x. Rep HaddockOptsMonoid x -> HaddockOptsMonoid
Generic, Int -> HaddockOptsMonoid -> ShowS
[HaddockOptsMonoid] -> ShowS
HaddockOptsMonoid -> String
(Int -> HaddockOptsMonoid -> ShowS)
-> (HaddockOptsMonoid -> String)
-> ([HaddockOptsMonoid] -> ShowS)
-> Show HaddockOptsMonoid
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HaddockOptsMonoid -> ShowS
showsPrec :: Int -> HaddockOptsMonoid -> ShowS
$cshow :: HaddockOptsMonoid -> String
show :: HaddockOptsMonoid -> String
$cshowList :: [HaddockOptsMonoid] -> ShowS
showList :: [HaddockOptsMonoid] -> ShowS
Show)

instance FromJSON (WithJSONWarnings HaddockOptsMonoid) where
  parseJSON :: Value -> Parser (WithJSONWarnings HaddockOptsMonoid)
parseJSON = String
-> (Object -> WarningParser HaddockOptsMonoid)
-> Value
-> Parser (WithJSONWarnings HaddockOptsMonoid)
forall a.
String
-> (Object -> WarningParser a)
-> Value
-> Parser (WithJSONWarnings a)
withObjectWarnings String
"HaddockOptsMonoid" ((Object -> WarningParser HaddockOptsMonoid)
 -> Value -> Parser (WithJSONWarnings HaddockOptsMonoid))
-> (Object -> WarningParser HaddockOptsMonoid)
-> Value
-> Parser (WithJSONWarnings HaddockOptsMonoid)
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
    [String]
additionalArgs <- Object
o Object -> Text -> WarningParser (Maybe [String])
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
haddockAdditionalArgsName WarningParser (Maybe [String])
-> [String] -> WarningParser [String]
forall a. WarningParser (Maybe a) -> a -> WarningParser a
..!= []
    HaddockOptsMonoid -> WarningParser HaddockOptsMonoid
forall a. a -> WriterT WarningParserMonoid Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure HaddockOptsMonoid { [String]
$sel:additionalArgs:HaddockOptsMonoid :: [String]
additionalArgs :: [String]
additionalArgs }

instance Semigroup HaddockOptsMonoid where
  <> :: HaddockOptsMonoid -> HaddockOptsMonoid -> HaddockOptsMonoid
(<>) = HaddockOptsMonoid -> HaddockOptsMonoid -> HaddockOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a -> a -> a
mappenddefault

instance Monoid HaddockOptsMonoid where
  mempty :: HaddockOptsMonoid
mempty = HaddockOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a
memptydefault
  mappend :: HaddockOptsMonoid -> HaddockOptsMonoid -> HaddockOptsMonoid
mappend = HaddockOptsMonoid -> HaddockOptsMonoid -> HaddockOptsMonoid
forall a. Semigroup a => a -> a -> a
(<>)

haddockAdditionalArgsName :: Text
haddockAdditionalArgsName :: Text
haddockAdditionalArgsName = Text
"haddock-args"

data BenchmarkOptsMonoid = BenchmarkOptsMonoid
  { BenchmarkOptsMonoid -> First String
additionalArgs :: !(First String)
  , BenchmarkOptsMonoid -> First Bool
disableRun :: !(First Bool)
  }
  deriving ((forall x. BenchmarkOptsMonoid -> Rep BenchmarkOptsMonoid x)
-> (forall x. Rep BenchmarkOptsMonoid x -> BenchmarkOptsMonoid)
-> Generic BenchmarkOptsMonoid
forall x. Rep BenchmarkOptsMonoid x -> BenchmarkOptsMonoid
forall x. BenchmarkOptsMonoid -> Rep BenchmarkOptsMonoid x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BenchmarkOptsMonoid -> Rep BenchmarkOptsMonoid x
from :: forall x. BenchmarkOptsMonoid -> Rep BenchmarkOptsMonoid x
$cto :: forall x. Rep BenchmarkOptsMonoid x -> BenchmarkOptsMonoid
to :: forall x. Rep BenchmarkOptsMonoid x -> BenchmarkOptsMonoid
Generic, Int -> BenchmarkOptsMonoid -> ShowS
[BenchmarkOptsMonoid] -> ShowS
BenchmarkOptsMonoid -> String
(Int -> BenchmarkOptsMonoid -> ShowS)
-> (BenchmarkOptsMonoid -> String)
-> ([BenchmarkOptsMonoid] -> ShowS)
-> Show BenchmarkOptsMonoid
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BenchmarkOptsMonoid -> ShowS
showsPrec :: Int -> BenchmarkOptsMonoid -> ShowS
$cshow :: BenchmarkOptsMonoid -> String
show :: BenchmarkOptsMonoid -> String
$cshowList :: [BenchmarkOptsMonoid] -> ShowS
showList :: [BenchmarkOptsMonoid] -> ShowS
Show)

instance FromJSON (WithJSONWarnings BenchmarkOptsMonoid) where
  parseJSON :: Value -> Parser (WithJSONWarnings BenchmarkOptsMonoid)
parseJSON = String
-> (Object -> WarningParser BenchmarkOptsMonoid)
-> Value
-> Parser (WithJSONWarnings BenchmarkOptsMonoid)
forall a.
String
-> (Object -> WarningParser a)
-> Value
-> Parser (WithJSONWarnings a)
withObjectWarnings String
"BenchmarkOptsMonoid" ((Object -> WarningParser BenchmarkOptsMonoid)
 -> Value -> Parser (WithJSONWarnings BenchmarkOptsMonoid))
-> (Object -> WarningParser BenchmarkOptsMonoid)
-> Value
-> Parser (WithJSONWarnings BenchmarkOptsMonoid)
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
    First String
additionalArgs <- Maybe String -> First String
forall a. Maybe a -> First a
First (Maybe String -> First String)
-> WriterT WarningParserMonoid Parser (Maybe String)
-> WriterT WarningParserMonoid Parser (First String)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe String)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
benchmarkAdditionalArgsName
    First Bool
disableRun <- Maybe Bool -> First Bool
forall a. Maybe a -> First a
First (Maybe Bool -> First Bool)
-> WriterT WarningParserMonoid Parser (Maybe Bool)
-> WriterT WarningParserMonoid Parser (First Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Text -> WriterT WarningParserMonoid Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> WarningParser (Maybe a)
..:? Text
benchmarkDisableRunArgName
    BenchmarkOptsMonoid -> WarningParser BenchmarkOptsMonoid
forall a. a -> WriterT WarningParserMonoid Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BenchmarkOptsMonoid
      { First String
$sel:additionalArgs:BenchmarkOptsMonoid :: First String
additionalArgs :: First String
additionalArgs
      , First Bool
$sel:disableRun:BenchmarkOptsMonoid :: First Bool
disableRun :: First Bool
disableRun
      }

benchmarkAdditionalArgsName :: Text
benchmarkAdditionalArgsName :: Text
benchmarkAdditionalArgsName = Text
"benchmark-arguments"

benchmarkDisableRunArgName :: Text
benchmarkDisableRunArgName :: Text
benchmarkDisableRunArgName = Text
"no-run-benchmarks"

instance Semigroup BenchmarkOptsMonoid where
  <> :: BenchmarkOptsMonoid -> BenchmarkOptsMonoid -> BenchmarkOptsMonoid
(<>) = BenchmarkOptsMonoid -> BenchmarkOptsMonoid -> BenchmarkOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a -> a -> a
mappenddefault

instance Monoid BenchmarkOptsMonoid where
  mempty :: BenchmarkOptsMonoid
mempty = BenchmarkOptsMonoid
forall a. (Generic a, Monoid' (Rep a)) => a
memptydefault
  mappend :: BenchmarkOptsMonoid -> BenchmarkOptsMonoid -> BenchmarkOptsMonoid
  mappend :: BenchmarkOptsMonoid -> BenchmarkOptsMonoid -> BenchmarkOptsMonoid
mappend = BenchmarkOptsMonoid -> BenchmarkOptsMonoid -> BenchmarkOptsMonoid
forall a. Semigroup a => a -> a -> a
(<>)

newtype CabalVerbosity
  = CabalVerbosity Verbosity
  deriving (CabalVerbosity -> CabalVerbosity -> Bool
(CabalVerbosity -> CabalVerbosity -> Bool)
-> (CabalVerbosity -> CabalVerbosity -> Bool) -> Eq CabalVerbosity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CabalVerbosity -> CabalVerbosity -> Bool
== :: CabalVerbosity -> CabalVerbosity -> Bool
$c/= :: CabalVerbosity -> CabalVerbosity -> Bool
/= :: CabalVerbosity -> CabalVerbosity -> Bool
Eq, Int -> CabalVerbosity -> ShowS
[CabalVerbosity] -> ShowS
CabalVerbosity -> String
(Int -> CabalVerbosity -> ShowS)
-> (CabalVerbosity -> String)
-> ([CabalVerbosity] -> ShowS)
-> Show CabalVerbosity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CabalVerbosity -> ShowS
showsPrec :: Int -> CabalVerbosity -> ShowS
$cshow :: CabalVerbosity -> String
show :: CabalVerbosity -> String
$cshowList :: [CabalVerbosity] -> ShowS
showList :: [CabalVerbosity] -> ShowS
Show)

toFirstCabalVerbosity :: FirstFalse -> First CabalVerbosity
toFirstCabalVerbosity :: FirstFalse -> First CabalVerbosity
toFirstCabalVerbosity FirstFalse
vf = Maybe CabalVerbosity -> First CabalVerbosity
forall a. Maybe a -> First a
First (Maybe CabalVerbosity -> First CabalVerbosity)
-> Maybe CabalVerbosity -> First CabalVerbosity
forall a b. (a -> b) -> a -> b
$ FirstFalse
vf.firstFalse Maybe Bool -> (Bool -> CabalVerbosity) -> Maybe CabalVerbosity
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \Bool
p ->
  if Bool
p then CabalVerbosity
verboseLevel else CabalVerbosity
normalLevel
 where
  verboseLevel :: CabalVerbosity
verboseLevel = Verbosity -> CabalVerbosity
CabalVerbosity Verbosity
verbose
  normalLevel :: CabalVerbosity
normalLevel  = Verbosity -> CabalVerbosity
CabalVerbosity Verbosity
normal

instance FromJSON CabalVerbosity where

  parseJSON :: Value -> Parser CabalVerbosity
parseJSON = String
-> (Text -> Parser CabalVerbosity)
-> Value
-> Parser CabalVerbosity
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"CabalVerbosity" ((Text -> Parser CabalVerbosity) -> Value -> Parser CabalVerbosity)
-> (Text -> Parser CabalVerbosity)
-> Value
-> Parser CabalVerbosity
forall a b. (a -> b) -> a -> b
$ \Text
t ->
    let s :: String
s = Text -> String
T.unpack Text
t
        errMsg :: Parser a
errMsg = String -> Parser a
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser a) -> String -> Parser a
forall a b. (a -> b) -> a -> b
$ String
"Unrecognised Cabal verbosity: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
s
    in  Parser CabalVerbosity
-> (CabalVerbosity -> Parser CabalVerbosity)
-> Maybe CabalVerbosity
-> Parser CabalVerbosity
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Parser CabalVerbosity
forall {a}. Parser a
errMsg CabalVerbosity -> Parser CabalVerbosity
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (String -> Maybe CabalVerbosity
forall a. Parsec a => String -> Maybe a
simpleParsec String
s)

instance Parsec CabalVerbosity where
  parsec :: forall (m :: * -> *). CabalParsing m => m CabalVerbosity
parsec = Verbosity -> CabalVerbosity
CabalVerbosity (Verbosity -> CabalVerbosity) -> m Verbosity -> m CabalVerbosity
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m Verbosity
forall a (m :: * -> *). (Parsec a, CabalParsing m) => m a
forall (m :: * -> *). CabalParsing m => m Verbosity
parsec

buildOptsMonoidHaddockL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidHaddockL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidHaddockL =
  (BuildOptsMonoid -> Maybe Bool)
-> (BuildOptsMonoid -> Maybe Bool -> BuildOptsMonoid)
-> Lens' BuildOptsMonoid (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (.buildHaddocks.firstFalse)
    (\BuildOptsMonoid
buildMonoid Maybe Bool
t -> BuildOptsMonoid
buildMonoid {buildHaddocks = FirstFalse t})

buildOptsMonoidTestsL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidTestsL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidTestsL =
  (BuildOptsMonoid -> Maybe Bool)
-> (BuildOptsMonoid -> Maybe Bool -> BuildOptsMonoid)
-> Lens' BuildOptsMonoid (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (.tests.firstFalse)
    (\BuildOptsMonoid
buildMonoid Maybe Bool
t -> BuildOptsMonoid
buildMonoid {tests = FirstFalse t})

buildOptsMonoidBenchmarksL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidBenchmarksL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidBenchmarksL =
  (BuildOptsMonoid -> Maybe Bool)
-> (BuildOptsMonoid -> Maybe Bool -> BuildOptsMonoid)
-> Lens' BuildOptsMonoid (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (.benchmarks.firstFalse)
    (\BuildOptsMonoid
buildMonoid Maybe Bool
t -> BuildOptsMonoid
buildMonoid {benchmarks = FirstFalse t})

buildOptsMonoidInstallExesL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidInstallExesL :: Lens' BuildOptsMonoid (Maybe Bool)
buildOptsMonoidInstallExesL =
  (BuildOptsMonoid -> Maybe Bool)
-> (BuildOptsMonoid -> Maybe Bool -> BuildOptsMonoid)
-> Lens' BuildOptsMonoid (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (.installExes.firstFalse)
    (\BuildOptsMonoid
buildMonoid Maybe Bool
t -> BuildOptsMonoid
buildMonoid {installExes = FirstFalse t})

-- Type representing formats of Stack's progress bar when building.

data ProgressBarFormat
  = NoBar -- No progress bar at all.

  | CountOnlyBar -- A bar that only counts packages.

  | CappedBar -- A bar capped at a length equivalent to the terminal's width.

  | FullBar -- A full progress bar.

  deriving (ProgressBarFormat -> ProgressBarFormat -> Bool
(ProgressBarFormat -> ProgressBarFormat -> Bool)
-> (ProgressBarFormat -> ProgressBarFormat -> Bool)
-> Eq ProgressBarFormat
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProgressBarFormat -> ProgressBarFormat -> Bool
== :: ProgressBarFormat -> ProgressBarFormat -> Bool
$c/= :: ProgressBarFormat -> ProgressBarFormat -> Bool
/= :: ProgressBarFormat -> ProgressBarFormat -> Bool
Eq, Int -> ProgressBarFormat -> ShowS
[ProgressBarFormat] -> ShowS
ProgressBarFormat -> String
(Int -> ProgressBarFormat -> ShowS)
-> (ProgressBarFormat -> String)
-> ([ProgressBarFormat] -> ShowS)
-> Show ProgressBarFormat
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProgressBarFormat -> ShowS
showsPrec :: Int -> ProgressBarFormat -> ShowS
$cshow :: ProgressBarFormat -> String
show :: ProgressBarFormat -> String
$cshowList :: [ProgressBarFormat] -> ShowS
showList :: [ProgressBarFormat] -> ShowS
Show)

instance FromJSON ProgressBarFormat where
  parseJSON :: Value -> Parser ProgressBarFormat
parseJSON = String
-> (Text -> Parser ProgressBarFormat)
-> Value
-> Parser ProgressBarFormat
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"ProgressBarFormat" ((Text -> Parser ProgressBarFormat)
 -> Value -> Parser ProgressBarFormat)
-> (Text -> Parser ProgressBarFormat)
-> Value
-> Parser ProgressBarFormat
forall a b. (a -> b) -> a -> b
$ \Text
t -> (String -> Parser ProgressBarFormat)
-> (ProgressBarFormat -> Parser ProgressBarFormat)
-> Either String ProgressBarFormat
-> Parser ProgressBarFormat
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either
    String -> Parser ProgressBarFormat
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail
    ProgressBarFormat -> Parser ProgressBarFormat
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure
    (String -> Either String ProgressBarFormat
readProgressBarFormat (String -> Either String ProgressBarFormat)
-> String -> Either String ProgressBarFormat
forall a b. (a -> b) -> a -> b
$ Text -> String
T.unpack Text
t)

-- | Parse ProgressBarFormat from a String.

readProgressBarFormat :: String -> Either String ProgressBarFormat
readProgressBarFormat :: String -> Either String ProgressBarFormat
readProgressBarFormat String
s
  | String
s String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"none" = ProgressBarFormat -> Either String ProgressBarFormat
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProgressBarFormat
NoBar
  | String
s String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"count-only" = ProgressBarFormat -> Either String ProgressBarFormat
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProgressBarFormat
CountOnlyBar
  | String
s String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"capped" = ProgressBarFormat -> Either String ProgressBarFormat
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProgressBarFormat
CappedBar
  | String
s String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"full" = ProgressBarFormat -> Either String ProgressBarFormat
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProgressBarFormat
FullBar
  | Bool
otherwise = String -> Either String ProgressBarFormat
forall a b. a -> Either a b
Left (String -> Either String ProgressBarFormat)
-> String -> Either String ProgressBarFormat
forall a b. (a -> b) -> a -> b
$ String
"Invalid progress bar format: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
s