{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
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 )
import Stack.Types.ComponentUtils ( StackUnqualCompName )
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
haddockExecutables :: !FirstFalse
, BuildOptsMonoid -> FirstFalse
haddockTests :: !FirstFalse
, BuildOptsMonoid -> FirstFalse
haddockBenchmarks :: !FirstFalse
, 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 -> [StackUnqualCompName]
skipComponents :: ![StackUnqualCompName]
, 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
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
exeProfile <-FirstFalse <$> o ..:? exeProfileArgName
libStrip <- FirstTrue <$> o ..:? libStripArgName
exeStrip <-FirstTrue <$> o ..:? exeStripArgName
buildHaddocks <- FirstFalse <$> o ..:? haddockArgName
haddockOpts <- jsonSubWarnings (o ..:? haddockOptsArgName ..!= mempty)
openHaddocks <- FirstFalse <$> o ..:? openHaddocksArgName
haddockDeps <- First <$> o ..:? haddockDepsArgName
haddockExecutables <- FirstFalse <$> o ..:? haddockExecutablesArgName
haddockTests <- FirstFalse <$> o ..:? haddockTestsArgName
haddockBenchmarks <- FirstFalse <$> o ..:? haddockBenchmarksArgName
haddockInternal <- FirstFalse <$> o ..:? haddockInternalArgName
haddockHyperlinkSource <- FirstTrue <$> o ..:? haddockHyperlinkSourceArgName
haddockForHackage <- FirstFalse <$> o ..:? haddockForHackageArgName
installExes <- FirstFalse <$> o ..:? installExesArgName
installCompilerTool <- FirstFalse <$> o ..:? installCompilerToolArgName
preFetch <- FirstFalse <$> o ..:? preFetchArgName
keepGoing <- First <$> o ..:? keepGoingArgName
keepTmpFiles <- FirstFalse <$> o ..:? keepTmpFilesArgName
forceDirty <- FirstFalse <$> o ..:? forceDirtyArgName
tests <- FirstFalse <$> o ..:? testsArgName
testOpts <- jsonSubWarnings (o ..:? testOptsArgName ..!= mempty)
benchmarks <- FirstFalse <$> o ..:? benchmarksArgName
benchmarkOpts <- jsonSubWarnings (o ..:? benchmarkOptsArgName ..!= mempty)
reconfigure <- FirstFalse <$> o ..:? reconfigureArgName
cabalVerbosity <- First <$> o ..:? cabalVerbosityArgName
cabalVerbose' <- FirstFalse <$> o ..:? cabalVerboseArgName
let cabalVerbose = First CabalVerbosity
cabalVerbosity First CabalVerbosity
-> First CabalVerbosity -> First CabalVerbosity
forall a. Semigroup a => a -> a -> a
<> FirstFalse -> First CabalVerbosity
toFirstCabalVerbosity FirstFalse
cabalVerbose'
splitObjs <- FirstFalse <$> o ..:? splitObjsName
skipComponents <- o ..:? skipComponentsName ..!= mempty
interleavedOutput <- FirstTrue <$> o ..:? interleavedOutputName
progressBar <- First <$> o ..:? progressBarName
ddumpDir <- o ..:? ddumpDirName ..!= mempty
pure BuildOptsMonoid
{ trace
, profile
, noStrip
, libProfile
, exeProfile
, libStrip
, exeStrip
, buildHaddocks
, haddockOpts
, openHaddocks
, haddockDeps
, haddockExecutables
, haddockTests
, haddockBenchmarks
, haddockInternal
, haddockHyperlinkSource
, haddockForHackage
, installExes
, installCompilerTool
, preFetch
, keepGoing
, keepTmpFiles
, forceDirty
, tests
, testOpts
, benchmarks
, benchmarkOpts
, reconfigure
, cabalVerbose
, splitObjs
, skipComponents
, interleavedOutput
, progressBar
, 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"
haddockExecutablesArgName :: Text
haddockExecutablesArgName :: Text
haddockExecutablesArgName = Text
"haddock-executables"
haddockTestsArgName :: Text
haddockTestsArgName :: Text
haddockTestsArgName = Text
"haddock-tests"
haddockBenchmarksArgName :: Text
haddockBenchmarksArgName :: Text
haddockBenchmarksArgName = Text
"haddock-benchmarks"
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 -> FirstTrue
runTests :: !FirstTrue
, 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
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
additionalArgs <- o ..:? testAdditionalArgsName ..!= []
coverage <- FirstFalse <$> o ..:? coverageArgName
runTests <- FirstTrue . (not <$>) <$> o ..:? noRunTestsArgName
maximumTimeSeconds <- First <$> o ..:? maximumTimeSecondsArgName
allowStdin <- FirstTrue <$> o ..:? testsAllowStdinName
pure TestOptsMonoid
{ rerunTests
, additionalArgs
, coverage
, runTests
, maximumTimeSeconds
, allowStdin
}
rerunTestsArgName :: Text
rerunTestsArgName :: Text
rerunTestsArgName = Text
"rerun-tests"
testAdditionalArgsName :: Text
testAdditionalArgsName :: Text
testAdditionalArgsName = Text
"additional-args"
coverageArgName :: Text
coverageArgName :: Text
coverageArgName = Text
"coverage"
noRunTestsArgName :: Text
noRunTestsArgName :: Text
noRunTestsArgName = 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
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
..!= []
pure HaddockOptsMonoid { 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 -> FirstTrue
runBenchmarks :: !FirstTrue
}
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
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
runBenchmarks <- FirstTrue . (not <$>) <$> o ..:? noRunBenchmarksArgName
pure BenchmarkOptsMonoid
{ additionalArgs
, runBenchmarks
}
benchmarkAdditionalArgsName :: Text
benchmarkAdditionalArgsName :: Text
benchmarkAdditionalArgsName = Text
"benchmark-arguments"
noRunBenchmarksArgName :: Text
noRunBenchmarksArgName :: Text
noRunBenchmarksArgName = 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 CabalVerbosity
errMsg = String -> Parser CabalVerbosity
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser CabalVerbosity)
-> String -> Parser CabalVerbosity
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
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})
data ProgressBarFormat
= NoBar
| CountOnlyBar
| CappedBar
| FullBar
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)
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