{-# LANGUAGE ConstraintKinds       #-}
{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings     #-}
{-# LANGUAGE TypeApplications      #-}
module HaskellCI.Config where

import HaskellCI.Prelude

import qualified Data.ByteString                 as BS
import qualified Data.Map                        as M
import qualified Data.Set                        as S
import qualified Distribution.CabalSpecVersion   as C
import qualified Distribution.Compat.CharParsing as C
import qualified Distribution.Compat.Newtype     as C
import qualified Distribution.FieldGrammar       as C
import qualified Distribution.Fields             as C
import qualified Distribution.Parsec             as C
import qualified Distribution.Pretty             as C
import qualified Distribution.Types.PackageName  as C
import qualified Distribution.Types.VersionRange as C
import qualified Text.PrettyPrint                as PP

import HaskellCI.Cabal
import HaskellCI.Config.Components
import HaskellCI.Config.ConstraintSet
import HaskellCI.Config.CopyFields
import HaskellCI.Config.Docspec
import HaskellCI.Config.Doctest
import HaskellCI.Config.Empty
import HaskellCI.Config.Folds
import HaskellCI.Config.HLint
import HaskellCI.Config.Installed
import HaskellCI.Config.Jobs
import HaskellCI.Config.PackageScope
import HaskellCI.Config.Ubuntu
import HaskellCI.Ghcup
import HaskellCI.HeadHackage
import HaskellCI.Newtypes
import HaskellCI.OptionsGrammar
import HaskellCI.ParsecUtils
import HaskellCI.TestedWith

-------------------------------------------------------------------------------
-- Config
-------------------------------------------------------------------------------

-- TODO: split other blocks like DoctestConfig
data Config = Config
    { Config -> Maybe Version
cfgCabalInstallVersion :: Maybe Version
    , Config -> Maybe Jobs
cfgJobs                :: Maybe Jobs
    , Config -> Ubuntu
cfgUbuntu              :: !Ubuntu
    , Config -> TestedWithJobs
cfgTestedWith          :: !TestedWithJobs
    , Config -> VersionRange
cfgEnabledJobs         :: !VersionRange
    , Config -> CopyFields
cfgCopyFields          :: !CopyFields
    , Config -> [[Char]]
cfgLocalGhcOptions     :: [String]
    , Config -> Bool
cfgSubmodules          :: !Bool
    , Config -> Bool
cfgCache               :: !Bool
    , Config -> Bool
cfgInstallDeps         :: !Bool
    , Config -> [Installed]
cfgInstalled           :: [Installed]
    , Config -> VersionRange
cfgTests               :: !VersionRange
    , Config -> VersionRange
cfgRunTests            :: !VersionRange
    , Config -> VersionRange
cfgBenchmarks          :: !VersionRange
    , Config -> VersionRange
cfgHaddock             :: !VersionRange
    , Config -> Components
cfgHaddockComponents   :: !Components
    , Config -> VersionRange
cfgNoTestsNoBench      :: !VersionRange
    , Config -> VersionRange
cfgUnconstrainted      :: !VersionRange
    , Config -> VersionRange
cfgHeadHackage         :: !VersionRange
    , Config -> Bool
cfgHeadHackageOverride :: !Bool
    , Config -> Bool
cfgGhcjsTests          :: !Bool
    , Config -> [PackageName]
cfgGhcjsTools          :: ![C.PackageName]
    , Config -> Bool
cfgTestOutputDirect    :: !Bool
    , Config -> Bool
cfgCheck               :: !Bool
    , Config -> [[Char]]
cfgOnlyBranches        :: [String]
    , Config -> [[Char]]
cfgIrcChannels         :: [String]
    , Config -> Maybe [Char]
cfgIrcNickname         :: Maybe String
    , Config -> Maybe [Char]
cfgIrcPassword         :: Maybe String
    , Config -> Bool
cfgIrcIfInOriginRepo   :: Bool
    , Config -> Bool
cfgEmailNotifications  :: Bool
    , Config -> Maybe [Char]
cfgProjectName         :: Maybe String
    , Config -> Set Fold
cfgFolds               :: S.Set Fold
    , Config -> Bool
cfgGhcHead             :: !Bool
    , Config -> Bool
cfgPostgres            :: !Bool
    , Config -> Bool
cfgGoogleChrome        :: !Bool
    , Config -> Map Version [Char]
cfgEnv                 :: M.Map Version String
    , Config -> VersionRange
cfgAllowFailures       :: !VersionRange
    , Config -> Bool
cfgLastInSeries        :: !Bool
    , Config -> VersionRange
cfgLinuxJobs           :: !VersionRange
    , Config -> VersionRange
cfgMacosJobs           :: !VersionRange
    , Config -> Bool
cfgGhcupCabal          :: !Bool
    , Config -> VersionRange
cfgGhcupJobs           :: !VersionRange
    , Config -> Version
cfgGhcupVersion        :: !Version
    , Config -> Set [Char]
cfgApt                 :: S.Set String
    , Config -> [[Char]]
cfgTravisPatches       :: [FilePath]
    , Config -> [[Char]]
cfgGitHubPatches       :: [FilePath]
    , Config -> Bool
cfgInsertVersion       :: !Bool
    , Config -> PackageScope
cfgErrorMissingMethods :: !PackageScope
    , Config -> DoctestConfig
cfgDoctest             :: !DoctestConfig
    , Config -> DocspecConfig
cfgDocspec             :: !DocspecConfig
    , Config -> HLintConfig
cfgHLint               :: !HLintConfig
    , Config -> [ConstraintSet]
cfgConstraintSets      :: [ConstraintSet]
    , Config -> [PrettyField ()]
cfgRawProject          :: [C.PrettyField ()]
    , Config -> [Char]
cfgRawTravis           :: !String
    , Config -> Maybe [Char]
cfgGitHubActionName    :: !(Maybe String)
    , Config -> Natural
cfgTimeoutMinutes      :: !Natural
    }
  deriving ((forall x. Config -> Rep Config x)
-> (forall x. Rep Config x -> Config) -> Generic Config
forall x. Rep Config x -> Config
forall x. Config -> Rep Config x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Config -> Rep Config x
from :: forall x. Config -> Rep Config x
$cto :: forall x. Rep Config x -> Config
to :: forall x. Rep Config x -> Config
Generic)

emptyConfig :: Config
emptyConfig :: Config
emptyConfig = case EmptyGrammar Config Config -> Either (NonEmpty ByteString) Config
forall s a. EmptyGrammar s a -> Either (NonEmpty ByteString) a
runEG EmptyGrammar Config Config
forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g Config), c (Identity HLintJob),
 c (Identity PackageScope), c (Identity TestedWithJobs),
 c (Identity Ubuntu), c (Identity Jobs), c (Identity CopyFields),
 c (Identity Version), c (Identity Natural),
 c (Identity Components), c Env, c Folds, c CopyFields,
 c HeadVersion, c (List FSep (Identity Installed) Installed),
 Applicative (g DoctestConfig), Applicative (g DocspecConfig),
 Applicative (g HLintConfig)) =>
g Config Config
configGrammar of
    Left NonEmpty ByteString
xs -> [Char] -> Config
forall a. HasCallStack => [Char] -> a
error ([Char] -> Config) -> [Char] -> Config
forall a b. (a -> b) -> a -> b
$ [Char]
"Required fields: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ NonEmpty ByteString -> [Char]
forall a. Show a => a -> [Char]
show NonEmpty ByteString
xs
    Right Config
x -> Config
x

-------------------------------------------------------------------------------
-- Grammar
-------------------------------------------------------------------------------

configGrammar
    :: ( OptionsGrammar c g, Applicative (g Config)
       , c (Identity HLintJob)
       , c (Identity PackageScope)
       , c (Identity TestedWithJobs)
       , c (Identity Ubuntu)
       , c (Identity Jobs)
       , c (Identity CopyFields)
       , c (Identity Version)
       , c (Identity Natural)
       , c (Identity Components)
       , c Env, c Folds, c CopyFields, c HeadVersion
       , c (C.List C.FSep (Identity Installed) Installed)
       , Applicative (g DoctestConfig)
       , Applicative (g DocspecConfig)
       , Applicative (g HLintConfig))
    => g Config Config
configGrammar :: forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g Config), c (Identity HLintJob),
 c (Identity PackageScope), c (Identity TestedWithJobs),
 c (Identity Ubuntu), c (Identity Jobs), c (Identity CopyFields),
 c (Identity Version), c (Identity Natural),
 c (Identity Components), c Env, c Folds, c CopyFields,
 c HeadVersion, c (List FSep (Identity Installed) Installed),
 Applicative (g DoctestConfig), Applicative (g DocspecConfig),
 Applicative (g HLintConfig)) =>
g Config Config
configGrammar = Maybe Version
-> Maybe Jobs
-> Ubuntu
-> TestedWithJobs
-> VersionRange
-> CopyFields
-> [[Char]]
-> Bool
-> Bool
-> Bool
-> [Installed]
-> VersionRange
-> VersionRange
-> VersionRange
-> VersionRange
-> Components
-> VersionRange
-> VersionRange
-> VersionRange
-> Bool
-> Bool
-> [PackageName]
-> Bool
-> Bool
-> [[Char]]
-> [[Char]]
-> Maybe [Char]
-> Maybe [Char]
-> Bool
-> Bool
-> Maybe [Char]
-> Set Fold
-> Bool
-> Bool
-> Bool
-> Map Version [Char]
-> VersionRange
-> Bool
-> VersionRange
-> VersionRange
-> Bool
-> VersionRange
-> Version
-> Set [Char]
-> [[Char]]
-> [[Char]]
-> Bool
-> PackageScope
-> DoctestConfig
-> DocspecConfig
-> HLintConfig
-> [ConstraintSet]
-> [PrettyField ()]
-> [Char]
-> Maybe [Char]
-> Natural
-> Config
Config
    (Maybe Version
 -> Maybe Jobs
 -> Ubuntu
 -> TestedWithJobs
 -> VersionRange
 -> CopyFields
 -> [[Char]]
 -> Bool
 -> Bool
 -> Bool
 -> [Installed]
 -> VersionRange
 -> VersionRange
 -> VersionRange
 -> VersionRange
 -> Components
 -> VersionRange
 -> VersionRange
 -> VersionRange
 -> Bool
 -> Bool
 -> [PackageName]
 -> Bool
 -> Bool
 -> [[Char]]
 -> [[Char]]
 -> Maybe [Char]
 -> Maybe [Char]
 -> Bool
 -> Bool
 -> Maybe [Char]
 -> Set Fold
 -> Bool
 -> Bool
 -> Bool
 -> Map Version [Char]
 -> VersionRange
 -> Bool
 -> VersionRange
 -> VersionRange
 -> Bool
 -> VersionRange
 -> Version
 -> Set [Char]
 -> [[Char]]
 -> [[Char]]
 -> Bool
 -> PackageScope
 -> DoctestConfig
 -> DocspecConfig
 -> HLintConfig
 -> [ConstraintSet]
 -> [PrettyField ()]
 -> [Char]
 -> Maybe [Char]
 -> Natural
 -> Config)
-> g Config (Maybe Version)
-> g Config
     (Maybe Jobs
      -> Ubuntu
      -> TestedWithJobs
      -> VersionRange
      -> CopyFields
      -> [[Char]]
      -> Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ByteString
-> (Maybe Version -> HeadVersion)
-> ALens' Config (Maybe Version)
-> Maybe Version
-> g Config (Maybe Version)
forall b a s.
(c b, Newtype a b, Eq a) =>
ByteString -> (a -> b) -> ALens' s a -> a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Newtype a b, Eq a) =>
ByteString -> (a -> b) -> ALens' s a -> a -> g s a
C.optionalFieldDefAla ByteString
"cabal-install-version"     Maybe Version -> HeadVersion
HeadVersion                         (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgCabalInstallVersion") Maybe Version
defaultCabalInstallVersion
        g Config (Maybe Version)
-> (g Config (Maybe Version) -> g Config (Maybe Version))
-> g Config (Maybe Version)
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> g Config (Maybe Version) -> g Config (Maybe Version)
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"VERSION" [Char]
"cabal-install version for all jobs"
    g Config
  (Maybe Jobs
   -> Ubuntu
   -> TestedWithJobs
   -> VersionRange
   -> CopyFields
   -> [[Char]]
   -> Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Maybe Jobs)
-> g Config
     (Ubuntu
      -> TestedWithJobs
      -> VersionRange
      -> CopyFields
      -> [[Char]]
      -> Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config (Maybe Jobs) -> g Config (Maybe Jobs)
forall (c :: * -> Constraint) (g :: * -> * -> *) a s.
(FieldGrammar c g, c (Identity a)) =>
ByteString -> ALens' s (Maybe a) -> g s (Maybe a)
C.optionalField       ByteString
"jobs"                                                          (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgJobs")
        g Config (Maybe Jobs)
-> (g Config (Maybe Jobs) -> g Config (Maybe Jobs))
-> g Config (Maybe Jobs)
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config (Maybe Jobs) -> g Config (Maybe Jobs)
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"JOBS" [Char]
"jobs (N:M - cabal:ghc)"
    g Config
  (Ubuntu
   -> TestedWithJobs
   -> VersionRange
   -> CopyFields
   -> [[Char]]
   -> Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Ubuntu
-> g Config
     (TestedWithJobs
      -> VersionRange
      -> CopyFields
      -> [[Char]]
      -> Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Ubuntu -> Ubuntu -> g Config Ubuntu
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef    ByteString
"distribution"                                                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgUbuntu") Ubuntu
Bionic
        g Config Ubuntu
-> (g Config Ubuntu -> g Config Ubuntu) -> g Config Ubuntu
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config Ubuntu -> g Config Ubuntu
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"DIST" ([[Char]] -> [Char]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
              [ [Char]
"distribution version ("
              , [Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " ([[Char]] -> [Char]) -> [[Char]] -> [Char]
forall a b. (a -> b) -> a -> b
$ (Ubuntu -> [Char]) -> [Ubuntu] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map Ubuntu -> [Char]
showUbuntu [Ubuntu
forall a. Bounded a => a
minBound..Ubuntu
forall a. Bounded a => a
maxBound]
              , [Char]
")"
              ])
    g Config
  (TestedWithJobs
   -> VersionRange
   -> CopyFields
   -> [[Char]]
   -> Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config TestedWithJobs
-> g Config
     (VersionRange
      -> CopyFields
      -> [[Char]]
      -> Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config TestedWithJobs
-> TestedWithJobs
-> g Config TestedWithJobs
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef    ByteString
"jobs-selection"                                                (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgTestedWith") TestedWithJobs
TestedWithUniform
        g Config TestedWithJobs
-> (g Config TestedWithJobs -> g Config TestedWithJobs)
-> g Config TestedWithJobs
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> g Config TestedWithJobs -> g Config TestedWithJobs
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"uniform|any" [Char]
"Jobs selection across packages"
    g Config
  (VersionRange
   -> CopyFields
   -> [[Char]]
   -> Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (CopyFields
      -> [[Char]]
      -> Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"enabled"                                                       (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgEnabledJobs") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Restrict jobs selection futher from per package tested-with"
    g Config
  (CopyFields
   -> [[Char]]
   -> Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config CopyFields
-> g Config
     ([[Char]]
      -> Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config CopyFields -> CopyFields -> g Config CopyFields
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef    ByteString
"copy-fields"                                                   (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgCopyFields") CopyFields
CopyFieldsSome
        g Config CopyFields
-> (g Config CopyFields -> g Config CopyFields)
-> g Config CopyFields
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config CopyFields -> g Config CopyFields
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"none|some|all" [Char]
"Copy ? fields from cabal.project fields"
    g Config
  ([[Char]]
   -> Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [[Char]]
-> g Config
     (Bool
      -> Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([[Char]] -> List NoCommaFSep Token' [Char])
-> ALens' Config [[Char]]
-> g Config [[Char]]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"local-ghc-options"         (NoCommaFSep
-> ([Char] -> Token') -> [[Char]] -> List NoCommaFSep Token' [Char]
forall sep a b. sep -> (a -> b) -> [a] -> List sep b a
C.alaList' NoCommaFSep
C.NoCommaFSep [Char] -> Token'
C.Token') (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgLocalGhcOptions")
        g Config [[Char]]
-> (g Config [[Char]] -> g Config [[Char]]) -> g Config [[Char]]
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config [[Char]] -> g Config [[Char]]
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"OPTS" [Char]
"--ghc-options for local packages"
    g Config
  (Bool
   -> Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"submodules"                                                    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgSubmodules") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Clone submodules, i.e. recursively"
    g Config
  (Bool
   -> Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> [Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"cache"                                                         (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgCache") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Disable caching"
    g Config
  (Bool
   -> [Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     ([Installed]
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"install-dependencies"                                          (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgInstallDeps") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Skip separate dependency installation step"
    g Config
  ([Installed]
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [Installed]
-> g Config
     (VersionRange
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([Installed] -> List FSep (Identity Installed) Installed)
-> ALens' Config [Installed]
-> g Config [Installed]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"installed"                 (FSep -> [Installed] -> List FSep (Identity Installed) Installed
forall sep a. sep -> [a] -> List sep (Identity a) a
C.alaList FSep
C.FSep)                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgInstalled")
        g Config [Installed]
-> (g Config [Installed] -> g Config [Installed])
-> g Config [Installed]
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config [Installed] -> g Config [Installed]
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"+/-PKG" [Char]
"Specify 'constraint: ... installed' packages"
    g Config
  (VersionRange
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (VersionRange
      -> VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"tests"                                                         (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgTests") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Build tests with"
    g Config
  (VersionRange
   -> VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (VersionRange
      -> VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"run-tests"                                                     (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgRunTests") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Run tests with (note: only built tests are run)"
    g Config
  (VersionRange
   -> VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (VersionRange
      -> Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField           ByteString
"benchmarks"                                                     (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgBenchmarks") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Build benchmarks"
    g Config
  (VersionRange
   -> Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (Components
      -> VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField           ByteString
"haddock"                                                        (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgHaddock") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Haddock step"
    g Config
  (Components
   -> VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Components
-> g Config
     (VersionRange
      -> VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config Components -> Components -> g Config Components
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef   ByteString
"haddock-components"                                             (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgHaddockComponents") Components
ComponentsAll
        g Config Components
-> (g Config Components -> g Config Components)
-> g Config Components
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config Components -> g Config Components
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"all|libs" [Char]
"Haddock components"
    g Config
  (VersionRange
   -> VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (VersionRange
      -> VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField           ByteString
"no-tests-no-benchmarks"                                         (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgNoTestsNoBench") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Build without tests and benchmarks"
    g Config
  (VersionRange
   -> VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (VersionRange
      -> Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"unconstrained"                                                 (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgUnconstrainted") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Make unconstrained build"
    g Config
  (VersionRange
   -> Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (Bool
      -> Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"head-hackage"                                                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgHeadHackage") VersionRange
defaultHeadHackage
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Use head.hackage repository. Also marks as allow-failures"
    g Config
  (Bool
   -> Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> [PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"head-hackage-override"                                         (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgHeadHackageOverride") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Use :override for head.hackage repository"
    g Config
  (Bool
   -> [PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     ([PackageName]
      -> Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"ghcjs-tests"                                                   (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGhcjsTests") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Run tests with GHCJS (experimental, relies on cabal-plan finding test-suites)"
    g Config
  ([PackageName]
   -> Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [PackageName]
-> g Config
     (Bool
      -> Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([PackageName] -> List FSep (Identity PackageName) PackageName)
-> ALens' Config [PackageName]
-> g Config [PackageName]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"ghcjs-tools"               (FSep
-> [PackageName] -> List FSep (Identity PackageName) PackageName
forall sep a. sep -> [a] -> List sep (Identity a) a
C.alaList FSep
C.FSep)                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGhcjsTools")
--        ^^^ metahelp "TOOL" "Additional host tools to install with GHCJS"
    g Config
  (Bool
   -> Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> [[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef ByteString
"test-output-direct"                                                (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgTestOutputDirect") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Use --test-show-details=direct, may cause problems with build-type: Custom"
    g Config
  (Bool
   -> [[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     ([[Char]]
      -> [[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef ByteString
"cabal-check"                                                       (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgCheck") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Disable cabal check run"
    g Config
  ([[Char]]
   -> [[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [[Char]]
-> g Config
     ([[Char]]
      -> Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([[Char]] -> List FSep Token' [Char])
-> ALens' Config [[Char]]
-> g Config [[Char]]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"branches"                  (FSep -> ([Char] -> Token') -> [[Char]] -> List FSep Token' [Char]
forall sep a b. sep -> (a -> b) -> [a] -> List sep b a
C.alaList' FSep
C.FSep [Char] -> Token'
C.Token')        (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgOnlyBranches")
        g Config [[Char]]
-> (g Config [[Char]] -> g Config [[Char]]) -> g Config [[Char]]
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config [[Char]] -> g Config [[Char]]
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"BRANCH" [Char]
"Enable builds only for specific branches"
    g Config
  ([[Char]]
   -> Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [[Char]]
-> g Config
     (Maybe [Char]
      -> Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([[Char]] -> List FSep Token' [Char])
-> ALens' Config [[Char]]
-> g Config [[Char]]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"irc-channels"              (FSep -> ([Char] -> Token') -> [[Char]] -> List FSep Token' [Char]
forall sep a b. sep -> (a -> b) -> [a] -> List sep b a
C.alaList' FSep
C.FSep [Char] -> Token'
C.Token')        (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgIrcChannels")
        g Config [[Char]]
-> (g Config [[Char]] -> g Config [[Char]]) -> g Config [[Char]]
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config [[Char]] -> g Config [[Char]]
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"IRC" [Char]
"Enable IRC notifications to given channel (e.g. 'irc.libera.chat#haskell-lens')"
    g Config
  (Maybe [Char]
   -> Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Maybe [Char])
-> g Config
     (Maybe [Char]
      -> Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s.
ByteString -> ALens' s (Maybe [Char]) -> g s (Maybe [Char])
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s (Maybe [Char]) -> g s (Maybe [Char])
C.freeTextField       ByteString
"irc-nickname"                                                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgIrcNickname")
        g Config (Maybe [Char])
-> (g Config (Maybe [Char]) -> g Config (Maybe [Char]))
-> g Config (Maybe [Char])
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> g Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"NICKNAME" [Char]
"Nickname with which to authenticate to an IRC server. Only used if `irc-channels` are set."
    g Config
  (Maybe [Char]
   -> Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Maybe [Char])
-> g Config
     (Bool
      -> Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s.
ByteString -> ALens' s (Maybe [Char]) -> g s (Maybe [Char])
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s (Maybe [Char]) -> g s (Maybe [Char])
C.freeTextField       ByteString
"irc-password"                                                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgIrcPassword")
        g Config (Maybe [Char])
-> (g Config (Maybe [Char]) -> g Config (Maybe [Char]))
-> g Config (Maybe [Char])
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> g Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"PASSWORD" [Char]
"Password with which to authenticate to an IRC server. Only used if `irc-channels` are set."
    g Config
  (Bool
   -> Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"irc-if-in-origin-repo"                                         (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgIrcIfInOriginRepo") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Only send IRC notifications if run from the original remote (GitHub Actions only)"
    g Config
  (Bool
   -> Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Maybe [Char]
      -> Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef ByteString
"email-notifications"                                               (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgEmailNotifications") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Disable email notifications"
    g Config
  (Maybe [Char]
   -> Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Maybe [Char])
-> g Config
     (Set Fold
      -> Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([Char] -> Token')
-> ALens' Config (Maybe [Char])
-> g Config (Maybe [Char])
forall b a s.
(c b, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s (Maybe a) -> g s (Maybe a)
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s (Maybe a) -> g s (Maybe a)
C.optionalFieldAla    ByteString
"project-name"              [Char] -> Token'
C.Token'                            (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgProjectName")
        g Config (Maybe [Char])
-> (g Config (Maybe [Char]) -> g Config (Maybe [Char]))
-> g Config (Maybe [Char])
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> g Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"NAME" [Char]
"Project name (used for IRC notifications), defaults to package name or name of first package listed in cabal.project file"
    g Config
  (Set Fold
   -> Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Set Fold)
-> g Config
     (Bool
      -> Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> (Set Fold -> Folds)
-> ALens' Config (Set Fold)
-> g Config (Set Fold)
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"folds"                     Set Fold -> Folds
Folds                               (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgFolds")
        g Config (Set Fold)
-> (g Config (Set Fold) -> g Config (Set Fold))
-> g Config (Set Fold)
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config (Set Fold) -> g Config (Set Fold)
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"FOLD" [Char]
"Build steps to fold"
    g Config
  (Bool
   -> Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"ghc-head"                                                      (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGhcHead") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Add ghc-head job"
    g Config
  (Bool
   -> Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Bool
      -> Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"postgresql"                                                    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgPostgres") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Add postgresql service"
    g Config
  (Bool
   -> Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (Map Version [Char]
      -> VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"google-chrome"                                                 (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGoogleChrome") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Add google-chrome service"
    g Config
  (Map Version [Char]
   -> VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Map Version [Char])
-> g Config
     (VersionRange
      -> Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> (Map Version [Char] -> Env)
-> ALens' Config (Map Version [Char])
-> g Config (Map Version [Char])
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"env"                       Map Version [Char] -> Env
Env                                 (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgEnv")
        g Config (Map Version [Char])
-> (g Config (Map Version [Char]) -> g Config (Map Version [Char]))
-> g Config (Map Version [Char])
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char]
-> g Config (Map Version [Char])
-> g Config (Map Version [Char])
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"ENV" [Char]
"Environment variables per job (e.g. `8.0.2:HADDOCK=false`)"
    g Config
  (VersionRange
   -> Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (Bool
      -> VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> (VersionRange -> Range)
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall b a s.
(c b, Newtype a b, Eq a) =>
ByteString -> (a -> b) -> ALens' s a -> a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Newtype a b, Eq a) =>
ByteString -> (a -> b) -> ALens' s a -> a -> g s a
C.optionalFieldDefAla ByteString
"allow-failures"            VersionRange -> Range
Range                               (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgAllowFailures") VersionRange
noVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"JOB" [Char]
"Allow failures of particular GHC version"
    g Config
  (Bool
   -> VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (VersionRange
      -> VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"last-in-series"                                                (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgLastInSeries") Bool
False
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"[Discouraged] Assume there are only GHCs last in major series: 8.2.* will match only 8.2.2"
    g Config
  (VersionRange
   -> VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (VersionRange
      -> Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"linux-jobs"                                                    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgLinuxJobs") VersionRange
anyVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Jobs to build on Linux"
    g Config
  (VersionRange
   -> Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (Bool
      -> VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"macos-jobs"                                                    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgMacosJobs") VersionRange
noVersion
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"Jobs to additionally build with OSX"
    g Config
  (Bool
   -> VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (VersionRange
      -> Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef     ByteString
"ghcup-cabal"                                                   (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGhcupCabal") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Use (or don't) ghcup to install cabal"
    g Config
  (VersionRange
   -> Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config VersionRange
-> g Config
     (Version
      -> Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config VersionRange
-> VersionRange
-> g Config VersionRange
forall s.
ByteString
-> ALens' s VersionRange -> VersionRange -> g s VersionRange
forall (c :: * -> Constraint) (p :: * -> * -> *) s.
OptionsGrammar c p =>
ByteString
-> ALens' s VersionRange -> VersionRange -> p s VersionRange
rangeField            ByteString
"ghcup-jobs"                                                    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGhcupJobs") (VersionRange -> VersionRange -> VersionRange
C.unionVersionRanges (VersionRange -> VersionRange -> VersionRange
C.intersectVersionRanges (Version -> VersionRange
C.laterVersion ([Int] -> Version
mkVersion [Int
8,Int
10,Int
4])) (Version -> VersionRange
C.earlierVersion ([Int] -> Version
mkVersion [Int
9]))) (Version -> VersionRange
C.laterVersion ([Int] -> Version
mkVersion [Int
9,Int
0,Int
1])))
        g Config VersionRange
-> (g Config VersionRange -> g Config VersionRange)
-> g Config VersionRange
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config VersionRange -> g Config VersionRange
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"RANGE" [Char]
"(Linux) jobs to use ghcup to install tools"
    g Config
  (Version
   -> Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Version
-> g Config
     (Set [Char]
      -> [[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Version -> Version -> g Config Version
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef    ByteString
"ghcup-version"                                                 (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGhcupVersion") Version
defaultGhcupVersion
        g Config Version
-> (g Config Version -> g Config Version) -> g Config Version
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config Version -> g Config Version
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"VERSION" [Char]
"ghcup version"
    g Config
  (Set [Char]
   -> [[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config (Set [Char])
-> g Config
     ([[Char]]
      -> [[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> (Set [Char] -> AlaSet NoCommaFSep Token' [Char])
-> ALens' Config (Set [Char])
-> g Config (Set [Char])
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"apt"                       (NoCommaFSep
-> ([Char] -> Token')
-> Set [Char]
-> AlaSet NoCommaFSep Token' [Char]
forall sep a b. sep -> (a -> b) -> Set a -> AlaSet sep b a
alaSet' NoCommaFSep
C.NoCommaFSep [Char] -> Token'
C.Token')    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgApt")
        g Config (Set [Char])
-> (g Config (Set [Char]) -> g Config (Set [Char]))
-> g Config (Set [Char])
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config (Set [Char]) -> g Config (Set [Char])
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"PKG" [Char]
"Additional apt packages to install"
    g Config
  ([[Char]]
   -> [[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [[Char]]
-> g Config
     ([[Char]]
      -> Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([[Char]] -> List NoCommaFSep Token' [Char])
-> ALens' Config [[Char]]
-> g Config [[Char]]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"travis-patches"            (NoCommaFSep
-> ([Char] -> Token') -> [[Char]] -> List NoCommaFSep Token' [Char]
forall sep a b. sep -> (a -> b) -> [a] -> List sep b a
C.alaList' NoCommaFSep
C.NoCommaFSep [Char] -> Token'
C.Token') (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgTravisPatches")
        g Config [[Char]]
-> (g Config [[Char]] -> g Config [[Char]]) -> g Config [[Char]]
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> [Char] -> g Config [[Char]] -> g Config [[Char]]
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> [Char] -> p s a -> p s a
metaActionHelp [Char]
"PATCH" [Char]
"file" [Char]
".patch files to apply to the generated Travis YAML file"
    g Config
  ([[Char]]
   -> Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config [[Char]]
-> g Config
     (Bool
      -> PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ([[Char]] -> List NoCommaFSep Token' [Char])
-> ALens' Config [[Char]]
-> g Config [[Char]]
forall b a s.
(c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
forall (c :: * -> Constraint) (g :: * -> * -> *) b a s.
(FieldGrammar c g, c b, Monoid a, Newtype a b) =>
ByteString -> (a -> b) -> ALens' s a -> g s a
C.monoidalFieldAla    ByteString
"github-patches"            (NoCommaFSep
-> ([Char] -> Token') -> [[Char]] -> List NoCommaFSep Token' [Char]
forall sep a b. sep -> (a -> b) -> [a] -> List sep b a
C.alaList' NoCommaFSep
C.NoCommaFSep [Char] -> Token'
C.Token') (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGitHubPatches")
        g Config [[Char]]
-> (g Config [[Char]] -> g Config [[Char]]) -> g Config [[Char]]
forall a b. a -> (a -> b) -> b
^^^ [Char]
-> [Char] -> [Char] -> g Config [[Char]] -> g Config [[Char]]
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> [Char] -> p s a -> p s a
metaActionHelp [Char]
"PATCH" [Char]
"file" [Char]
".patch files to apply to the generated GitHub Actions YAML file"
    g Config
  (Bool
   -> PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config Bool
-> g Config
     (PackageScope
      -> DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Bool -> Bool -> g Config Bool
forall s. ByteString -> ALens' s Bool -> Bool -> g s Bool
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s Bool -> Bool -> g s Bool
C.booleanFieldDef ByteString
"insert-version"                                                    (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgInsertVersion") Bool
True
        g Config Bool -> (g Config Bool -> g Config Bool) -> g Config Bool
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config Bool -> g Config Bool
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Don't insert the haskell-ci version into the generated Travis YAML file"
    g Config
  (PackageScope
   -> DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config PackageScope
-> g Config
     (DoctestConfig
      -> DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config PackageScope
-> PackageScope
-> g Config PackageScope
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef ByteString
"error-missing-methods"                                            (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgErrorMissingMethods") PackageScope
PackageScopeLocal
        g Config PackageScope
-> (g Config PackageScope -> g Config PackageScope)
-> g Config PackageScope
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config PackageScope -> g Config PackageScope
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"PKGSCOPE" [Char]
"Insert -Werror=missing-methods for package scope (none, local, all)"
    g Config
  (DoctestConfig
   -> DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config DoctestConfig
-> g Config
     (DocspecConfig
      -> HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ALens' Config DoctestConfig
-> g DoctestConfig DoctestConfig -> g Config DoctestConfig
forall a b d. ALens' a b -> g b d -> g a d
forall (c :: * -> Constraint) (g :: * -> * -> *) a b d.
FieldGrammar c g =>
ALens' a b -> g b d -> g a d
C.blurFieldGrammar (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgDoctest") g DoctestConfig DoctestConfig
forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g DoctestConfig)) =>
g DoctestConfig DoctestConfig
doctestConfigGrammar
    g Config
  (DocspecConfig
   -> HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config DocspecConfig
-> g Config
     (HLintConfig
      -> [ConstraintSet]
      -> [PrettyField ()]
      -> [Char]
      -> Maybe [Char]
      -> Natural
      -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ALens' Config DocspecConfig
-> g DocspecConfig DocspecConfig -> g Config DocspecConfig
forall a b d. ALens' a b -> g b d -> g a d
forall (c :: * -> Constraint) (g :: * -> * -> *) a b d.
FieldGrammar c g =>
ALens' a b -> g b d -> g a d
C.blurFieldGrammar (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgDocspec") g DocspecConfig DocspecConfig
forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g DocspecConfig)) =>
g DocspecConfig DocspecConfig
docspecConfigGrammar
    g Config
  (HLintConfig
   -> [ConstraintSet]
   -> [PrettyField ()]
   -> [Char]
   -> Maybe [Char]
   -> Natural
   -> Config)
-> g Config HLintConfig
-> g Config
     ([ConstraintSet]
      -> [PrettyField ()] -> [Char] -> Maybe [Char] -> Natural -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ALens' Config HLintConfig
-> g HLintConfig HLintConfig -> g Config HLintConfig
forall a b d. ALens' a b -> g b d -> g a d
forall (c :: * -> Constraint) (g :: * -> * -> *) a b d.
FieldGrammar c g =>
ALens' a b -> g b d -> g a d
C.blurFieldGrammar (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgHLint")   g HLintConfig HLintConfig
forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g HLintConfig),
 c (Identity HLintJob)) =>
g HLintConfig HLintConfig
hlintConfigGrammar
    g Config
  ([ConstraintSet]
   -> [PrettyField ()] -> [Char] -> Maybe [Char] -> Natural -> Config)
-> g Config [ConstraintSet]
-> g Config
     ([PrettyField ()] -> [Char] -> Maybe [Char] -> Natural -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [ConstraintSet] -> g Config [ConstraintSet]
forall a. a -> g Config a
forall (f :: * -> *) a. Applicative f => a -> f a
pure [] -- constraint sets
    g Config
  ([PrettyField ()] -> [Char] -> Maybe [Char] -> Natural -> Config)
-> g Config [PrettyField ()]
-> g Config ([Char] -> Maybe [Char] -> Natural -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [PrettyField ()] -> g Config [PrettyField ()]
forall a. a -> g Config a
forall (f :: * -> *) a. Applicative f => a -> f a
pure [] -- raw project fields
    g Config ([Char] -> Maybe [Char] -> Natural -> Config)
-> g Config [Char] -> g Config (Maybe [Char] -> Natural -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config [Char] -> g Config [Char]
forall s. ByteString -> ALens' s [Char] -> g s [Char]
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s [Char] -> g s [Char]
C.freeTextFieldDef ByteString
"raw-travis"                                                       (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgRawTravis")
        g Config [Char]
-> (g Config [Char] -> g Config [Char]) -> g Config [Char]
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config [Char] -> g Config [Char]
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"Raw travis commands which will be run at the very end of the script"
    g Config (Maybe [Char] -> Natural -> Config)
-> g Config (Maybe [Char]) -> g Config (Natural -> Config)
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString
-> ALens' Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s.
ByteString -> ALens' s (Maybe [Char]) -> g s (Maybe [Char])
forall (c :: * -> Constraint) (g :: * -> * -> *) s.
FieldGrammar c g =>
ByteString -> ALens' s (Maybe [Char]) -> g s (Maybe [Char])
C.freeTextField ByteString
"github-action-name"                                                  (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgGitHubActionName")
        g Config (Maybe [Char])
-> (g Config (Maybe [Char]) -> g Config (Maybe [Char]))
-> g Config (Maybe [Char])
forall a b. a -> (a -> b) -> b
^^^ [Char] -> g Config (Maybe [Char]) -> g Config (Maybe [Char])
forall s a. [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> p s a -> p s a
help [Char]
"The name of GitHub Action"
    g Config (Natural -> Config) -> g Config Natural -> g Config Config
forall a b. g Config (a -> b) -> g Config a -> g Config b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ByteString -> ALens' Config Natural -> Natural -> g Config Natural
forall (c :: * -> Constraint) (g :: * -> * -> *) s a.
(FieldGrammar c g, Functor (g s), c (Identity a), Eq a) =>
ByteString -> ALens' s a -> a -> g s a
C.optionalFieldDef    ByteString
"timeout-minutes"                                              (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgTimeoutMinutes") Natural
60
        g Config Natural
-> (g Config Natural -> g Config Natural) -> g Config Natural
forall a b. a -> (a -> b) -> b
^^^ [Char] -> [Char] -> g Config Natural -> g Config Natural
forall s a. [Char] -> [Char] -> g s a -> g s a
forall (c :: * -> Constraint) (p :: * -> * -> *) s a.
OptionsGrammar c p =>
[Char] -> [Char] -> p s a -> p s a
metahelp [Char]
"MINUTES" [Char]
"The maximum number of minutes to let a job run"

-------------------------------------------------------------------------------
-- Reading
-------------------------------------------------------------------------------

readConfigFile :: MonadIO m => FilePath -> m Config
readConfigFile :: forall (m :: * -> *). MonadIO m => [Char] -> m Config
readConfigFile = IO Config -> m Config
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Config -> m Config)
-> ([Char] -> IO Config) -> [Char] -> m Config
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Field Position] -> ParseResult Config) -> [Char] -> IO Config
forall a. ([Field Position] -> ParseResult a) -> [Char] -> IO a
readAndParseFile [Field Position] -> ParseResult Config
parseConfigFile

parseConfigFile :: [C.Field C.Position] -> C.ParseResult Config
parseConfigFile :: [Field Position] -> ParseResult Config
parseConfigFile [Field Position]
fields0 = do
    Config
config <- CabalSpecVersion
-> Fields Position
-> ParsecFieldGrammar Config Config
-> ParseResult Config
forall s a.
CabalSpecVersion
-> Fields Position -> ParsecFieldGrammar s a -> ParseResult a
C.parseFieldGrammar CabalSpecVersion
C.cabalSpecLatest Fields Position
fields ParsecFieldGrammar Config Config
forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g Config), c (Identity HLintJob),
 c (Identity PackageScope), c (Identity TestedWithJobs),
 c (Identity Ubuntu), c (Identity Jobs), c (Identity CopyFields),
 c (Identity Version), c (Identity Natural),
 c (Identity Components), c Env, c Folds, c CopyFields,
 c HeadVersion, c (List FSep (Identity Installed) Installed),
 Applicative (g DoctestConfig), Applicative (g DocspecConfig),
 Applicative (g HLintConfig)) =>
g Config Config
configGrammar
    [Config -> Config]
config' <- (Section Position -> ParseResult (Config -> Config))
-> [Section Position] -> ParseResult [Config -> Config]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> [a] -> f [b]
traverse Section Position -> ParseResult (Config -> Config)
parseSection ([Section Position] -> ParseResult [Config -> Config])
-> [Section Position] -> ParseResult [Config -> Config]
forall a b. (a -> b) -> a -> b
$ [[Section Position]] -> [Section Position]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [[Section Position]]
sections
    Config -> ParseResult Config
forall a. a -> ParseResult a
forall (m :: * -> *) a. Monad m => a -> m a
return (Config -> ParseResult Config) -> Config -> ParseResult Config
forall a b. (a -> b) -> a -> b
$ Config -> Config
postprocess (Config -> Config) -> Config -> Config
forall a b. (a -> b) -> a -> b
$ (Config -> (Config -> Config) -> Config)
-> Config -> [Config -> Config] -> Config
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' Config -> (Config -> Config) -> Config
forall a b. a -> (a -> b) -> b
(&) Config
config [Config -> Config]
config'
  where
    (Fields Position
fields, [[Section Position]]
sections) = [Field Position] -> (Fields Position, [[Section Position]])
forall ann. [Field ann] -> (Fields ann, [[Section ann]])
C.partitionFields [Field Position]
fields0

    parseSection :: C.Section C.Position -> C.ParseResult (Config -> Config)
    parseSection :: Section Position -> ParseResult (Config -> Config)
parseSection (C.MkSection (C.Name Position
pos ByteString
name) [SectionArg Position]
args [Field Position]
cfields)
        | ByteString
name ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== ByteString
"constraint-set" = do
            [Char]
name' <- Position -> [SectionArg Position] -> ParseResult [Char]
parseName Position
pos [SectionArg Position]
args
            let (Fields Position
fs, [[Section Position]]
_sections) = [Field Position] -> (Fields Position, [[Section Position]])
forall ann. [Field ann] -> (Fields ann, [[Section ann]])
C.partitionFields [Field Position]
cfields
            ConstraintSet
cs <- CabalSpecVersion
-> Fields Position
-> ParsecFieldGrammar ConstraintSet ConstraintSet
-> ParseResult ConstraintSet
forall s a.
CabalSpecVersion
-> Fields Position -> ParsecFieldGrammar s a -> ParseResult a
C.parseFieldGrammar CabalSpecVersion
C.cabalSpecLatest Fields Position
fs ([Char] -> ParsecFieldGrammar ConstraintSet ConstraintSet
forall (c :: * -> Constraint) (g :: * -> * -> *).
(OptionsGrammar c g, Applicative (g ConstraintSet)) =>
[Char] -> g ConstraintSet ConstraintSet
constraintSetGrammar [Char]
name')
            (Config -> Config) -> ParseResult (Config -> Config)
forall a. a -> ParseResult a
forall (m :: * -> *) a. Monad m => a -> m a
return ((Config -> Config) -> ParseResult (Config -> Config))
-> (Config -> Config) -> ParseResult (Config -> Config)
forall a b. (a -> b) -> a -> b
$ ASetter Config Config [ConstraintSet] [ConstraintSet]
-> ([ConstraintSet] -> [ConstraintSet]) -> Config -> Config
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgConstraintSets") (ConstraintSet
cs ConstraintSet -> [ConstraintSet] -> [ConstraintSet]
forall a. a -> [a] -> [a]
:)
        | ByteString
name ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== ByteString
"raw-project" = do
            let fs :: [PrettyField Position]
fs = [Field Position] -> [PrettyField Position]
forall ann. [Field ann] -> [PrettyField ann]
C.fromParsecFields [Field Position]
cfields
            (Config -> Config) -> ParseResult (Config -> Config)
forall a. a -> ParseResult a
forall (m :: * -> *) a. Monad m => a -> m a
return ((Config -> Config) -> ParseResult (Config -> Config))
-> (Config -> Config) -> ParseResult (Config -> Config)
forall a b. (a -> b) -> a -> b
$ ASetter Config Config [PrettyField ()] [PrettyField ()]
-> ([PrettyField ()] -> [PrettyField ()]) -> Config -> Config
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over (forall (name :: Symbol) r a (f :: * -> *).
(HasField name r a, Functor f) =>
(a -> f a) -> r -> f r
field @"cfgRawProject") ([PrettyField ()] -> [PrettyField ()] -> [PrettyField ()]
forall a. [a] -> [a] -> [a]
++ (PrettyField Position -> PrettyField ())
-> [PrettyField Position] -> [PrettyField ()]
forall a b. (a -> b) -> [a] -> [b]
map PrettyField Position -> PrettyField ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void [PrettyField Position]
fs)
        | Bool
otherwise = do
            Position -> PWarnType -> [Char] -> ParseResult ()
C.parseWarning Position
pos PWarnType
C.PWTUnknownSection ([Char] -> ParseResult ()) -> [Char] -> ParseResult ()
forall a b. (a -> b) -> a -> b
$ [Char]
"Unknown section " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ ByteString -> [Char]
fromUTF8BS ByteString
name
            (Config -> Config) -> ParseResult (Config -> Config)
forall a. a -> ParseResult a
forall (m :: * -> *) a. Monad m => a -> m a
return Config -> Config
forall a. a -> a
id

    postprocess :: Config -> Config
    postprocess :: Config -> Config
postprocess Config
cfg
        -- on yammy the only install option is ghcup
        | Config -> Ubuntu
cfgUbuntu Config
cfg Ubuntu -> Ubuntu -> Bool
forall a. Ord a => a -> a -> Bool
>= Ubuntu
Jammy = Config
cfg { cfgGhcupJobs = anyVersion }
        | Bool
otherwise              = Config
cfg

-------------------------------------------------------------------------------
-- Env
-------------------------------------------------------------------------------

newtype Env = Env (M.Map Version String)
  deriving anyclass (C.Newtype (M.Map Version String))

instance C.Parsec Env where
    parsec :: forall (m :: * -> *). CabalParsing m => m Env
parsec = Map Version [Char] -> Env
Env (Map Version [Char] -> Env)
-> ([(Version, [Char])] -> Map Version [Char])
-> [(Version, [Char])]
-> Env
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(Version, [Char])] -> Map Version [Char]
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList ([(Version, [Char])] -> Env) -> m [(Version, [Char])] -> m Env
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (Version, [Char]) -> m [(Version, [Char])]
forall (m :: * -> *) a. CabalParsing m => m a -> m [a]
C.parsecLeadingCommaList m (Version, [Char])
p where
        p :: m (Version, [Char])
p = do
            Version
v <- m Version
forall a (m :: * -> *). (Parsec a, CabalParsing m) => m a
forall (m :: * -> *). CabalParsing m => m Version
C.parsec
            Char
_ <- Char -> m Char
forall (m :: * -> *). CharParsing m => Char -> m Char
C.char Char
':'
            [Char]
s <- (Char -> Bool) -> m [Char]
forall (m :: * -> *). CharParsing m => (Char -> Bool) -> m [Char]
C.munch1 ((Char -> Bool) -> m [Char]) -> (Char -> Bool) -> m [Char]
forall a b. (a -> b) -> a -> b
$ \Char
c -> Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
','
            (Version, [Char]) -> m (Version, [Char])
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return (Version
v, [Char]
s)

instance C.Pretty Env where
    pretty :: Env -> Doc
pretty (Env Map Version [Char]
m) = [Doc] -> Doc
PP.fsep ([Doc] -> Doc)
-> (Map Version [Char] -> [Doc]) -> Map Version [Char] -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Doc -> [Doc] -> [Doc]
PP.punctuate Doc
PP.comma ([Doc] -> [Doc])
-> (Map Version [Char] -> [Doc]) -> Map Version [Char] -> [Doc]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Version, [Char]) -> Doc) -> [(Version, [Char])] -> [Doc]
forall a b. (a -> b) -> [a] -> [b]
map (Version, [Char]) -> Doc
forall {a}. Pretty a => (a, [Char]) -> Doc
p ([(Version, [Char])] -> [Doc])
-> (Map Version [Char] -> [(Version, [Char])])
-> Map Version [Char]
-> [Doc]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map Version [Char] -> [(Version, [Char])]
forall k a. Map k a -> [(k, a)]
M.toList (Map Version [Char] -> Doc) -> Map Version [Char] -> Doc
forall a b. (a -> b) -> a -> b
$ Map Version [Char]
m where
        p :: (a, [Char]) -> Doc
p (a
v, [Char]
s) = a -> Doc
forall a. Pretty a => a -> Doc
C.pretty a
v Doc -> Doc -> Doc
PP.<> Doc
PP.colon Doc -> Doc -> Doc
PP.<> [Char] -> Doc
PP.text [Char]
s

-------------------------------------------------------------------------------
-- From Cabal
-------------------------------------------------------------------------------

parseName :: C.Position -> [C.SectionArg C.Position] -> C.ParseResult String
parseName :: Position -> [SectionArg Position] -> ParseResult [Char]
parseName Position
pos [SectionArg Position]
args = ByteString -> [Char]
fromUTF8BS (ByteString -> [Char])
-> ParseResult ByteString -> ParseResult [Char]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Position -> [SectionArg Position] -> ParseResult ByteString
parseNameBS Position
pos [SectionArg Position]
args

parseNameBS :: C.Position -> [C.SectionArg C.Position] -> C.ParseResult BS.ByteString
parseNameBS :: Position -> [SectionArg Position] -> ParseResult ByteString
parseNameBS Position
pos [SectionArg Position]
args = case [SectionArg Position]
args of
    [C.SecArgName Position
_pos ByteString
secName] ->
         ByteString -> ParseResult ByteString
forall a. a -> ParseResult a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ByteString
secName
    [C.SecArgStr Position
_pos ByteString
secName] ->
         ByteString -> ParseResult ByteString
forall a. a -> ParseResult a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ByteString
secName
    [] -> do
         Position -> [Char] -> ParseResult ()
C.parseFailure Position
pos [Char]
"name required"
         ByteString -> ParseResult ByteString
forall a. a -> ParseResult a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ByteString
""
    [SectionArg Position]
_ -> do
         -- TODO: pretty print args
         Position -> [Char] -> ParseResult ()
C.parseFailure Position
pos ([Char] -> ParseResult ()) -> [Char] -> ParseResult ()
forall a b. (a -> b) -> a -> b
$ [Char]
"Invalid name " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [SectionArg Position] -> [Char]
forall a. Show a => a -> [Char]
show [SectionArg Position]
args
         ByteString -> ParseResult ByteString
forall a. a -> ParseResult a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ByteString
""