Cabal-3.5.0.0: A framework for packaging Haskell software
CopyrightIsaac Jones 2003-2004
Duncan Coutts 2007
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Distribution.Simple.Setup

Description

This is a big module, but not very complicated. The code is very regular and repetitive. It defines the command line interface for all the Cabal commands. For each command (like configure, build etc) it defines a type that holds all the flags, the default set of flags and a CommandUI that maps command line flags to and from the corresponding flags type.

All the flags types are instances of Monoid, see http://www.haskell.org/pipermail/cabal-devel/2007-December/001509.html for an explanation.

The types defined here get used in the front end and especially in cabal-install which has to do quite a bit of manipulating sets of command line flags.

This is actually relatively nice, it works quite well. The main change it needs is to unify it with the code for managing sets of fields that can be read and written from files. This would allow us to save configure flags in config files.

Synopsis

Documentation

data GlobalFlags Source #

Flags that apply at the top level, not to any sub-command.

Instances

Instances details
Monoid GlobalFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup GlobalFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic GlobalFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep GlobalFlags :: Type -> Type Source #

type Rep GlobalFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep GlobalFlags = D1 ('MetaData "GlobalFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "GlobalFlags" 'PrefixI 'True) (S1 ('MetaSel ('Just "globalVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "globalNumericVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))

data ConfigFlags Source #

Flags to configure command.

IMPORTANT: every time a new flag is added, filterConfigureFlags should be updated. IMPORTANT: every time a new flag is added, it should be added to the Eq instance

Constructors

ConfigFlags 

Fields

Instances

Instances details
Structured ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Monoid ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep ConfigFlags :: Type -> Type Source #

Read ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Show ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Binary ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

Eq ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep ConfigFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep ConfigFlags = D1 ('MetaData "ConfigFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "ConfigFlags" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "configArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "configPrograms_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Option' (Last' ProgramDb))) :*: S1 ('MetaSel ('Just "configProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, FilePath)]))) :*: (S1 ('MetaSel ('Just "configProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, [String])]) :*: (S1 ('MetaSel ('Just "configProgramPathExtra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList FilePath)) :*: S1 ('MetaSel ('Just "configHcFlavor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag CompilerFlavor))))) :*: ((S1 ('MetaSel ('Just "configHcPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "configHcPkg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "configVanillaLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configProfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configSharedLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configStaticLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configDynExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) :*: (((S1 ('MetaSel ('Just "configFullyStaticExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "configProfExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configProf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configProfDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ProfDetailLevel)) :*: S1 ('MetaSel ('Just "configProfLibDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ProfDetailLevel))) :*: (S1 ('MetaSel ('Just "configConfigureArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "configOptimization") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag OptimisationLevel))))) :*: ((S1 ('MetaSel ('Just "configProgPrefix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: (S1 ('MetaSel ('Just "configProgSuffix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: S1 ('MetaSel ('Just "configInstallDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (InstallDirs (Flag PathTemplate))))) :*: ((S1 ('MetaSel ('Just "configScratchDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "configExtraLibDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])) :*: (S1 ('MetaSel ('Just "configExtraFrameworkDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "configExtraIncludeDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])))))) :*: ((((S1 ('MetaSel ('Just "configIPID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: (S1 ('MetaSel ('Just "configCID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ComponentId)) :*: S1 ('MetaSel ('Just "configDeterministic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: (S1 ('MetaSel ('Just "configDistPref") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "configCabalFilePath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "configVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity))))) :*: ((S1 ('MetaSel ('Just "configUserInstall") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "configPackageDBs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe PackageDB]) :*: S1 ('MetaSel ('Just "configGHCiLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configSplitSections") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configSplitObjs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configStripExes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configStripLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) :*: (((S1 ('MetaSel ('Just "configConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageVersionConstraint]) :*: (S1 ('MetaSel ('Just "configDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GivenComponent]) :*: S1 ('MetaSel ('Just "configInstantiateWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ModuleName, Module)]))) :*: ((S1 ('MetaSel ('Just "configConfigurationsFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment) :*: S1 ('MetaSel ('Just "configTests") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))) :*: ((S1 ('MetaSel ('Just "configLibCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "configExactConfiguration") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configFlagError") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)))) :*: ((S1 ('MetaSel ('Just "configRelocatable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configDebugInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag DebugInfoLevel))) :*: (S1 ('MetaSel ('Just "configUseResponseFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configAllowDependingOnPrivateLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))))))

configPrograms :: WithCallStack (ConfigFlags -> ProgramDb) Source #

More convenient version of configPrograms. Results in an error if internal invariant is violated.

data CopyFlags Source #

Flags to copy: (destdir, copy-prefix (backwards compat), verbosity)

Instances

Instances details
Monoid CopyFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup CopyFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic CopyFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep CopyFlags :: Type -> Type Source #

Show CopyFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep CopyFlags # 
Instance details

Defined in Distribution.Simple.Setup

data InstallFlags Source #

Flags to install: (package db, verbosity)

Instances

Instances details
Monoid InstallFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup InstallFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic InstallFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep InstallFlags :: Type -> Type Source #

Show InstallFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep InstallFlags # 
Instance details

Defined in Distribution.Simple.Setup

data HaddockTarget Source #

When we build haddock documentation, there are two cases:

  1. We build haddocks only for the current development version, intended for local use and not for distribution. In this case, we store the generated documentation in distdochtml/name.
  2. We build haddocks for intended for uploading them to hackage. In this case, we need to follow the layout that hackage expects from documentation tarballs, and we might also want to use different flags than for development builds, so in this case we store the generated documentation in distdochtml/id-docs.

Constructors

ForHackage 
ForDevelopment 

Instances

Instances details
Parsec HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Pretty HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Structured HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Generic HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep HaddockTarget :: Type -> Type Source #

Show HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Binary HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

Eq HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

type Rep HaddockTarget # 
Instance details

Defined in Distribution.Simple.Setup

type Rep HaddockTarget = D1 ('MetaData "HaddockTarget" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "ForHackage" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ForDevelopment" 'PrefixI 'False) (U1 :: Type -> Type))

data HaddockFlags Source #

Instances

Instances details
Monoid HaddockFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup HaddockFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic HaddockFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep HaddockFlags :: Type -> Type Source #

Show HaddockFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep HaddockFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep HaddockFlags = D1 ('MetaData "HaddockFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "HaddockFlags" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "haddockProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, FilePath)]) :*: S1 ('MetaSel ('Just "haddockProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, [String])])) :*: (S1 ('MetaSel ('Just "haddockHoogle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "haddockHtml") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockHtmlLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String))))) :*: ((S1 ('MetaSel ('Just "haddockForHackage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag HaddockTarget)) :*: S1 ('MetaSel ('Just "haddockExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "haddockTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "haddockBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) :*: (((S1 ('MetaSel ('Just "haddockInternal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "haddockLinkedSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "haddockQuickJump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockHscolourCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))))) :*: ((S1 ('MetaSel ('Just "haddockContents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: (S1 ('MetaSel ('Just "haddockDistPref") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "haddockKeepTempFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: (S1 ('MetaSel ('Just "haddockVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity)) :*: (S1 ('MetaSel ('Just "haddockCabalFilePath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "haddockArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])))))))

data HscolourFlags Source #

Instances

Instances details
Monoid HscolourFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup HscolourFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic HscolourFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep HscolourFlags :: Type -> Type Source #

Show HscolourFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep HscolourFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep HscolourFlags = D1 ('MetaData "HscolourFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "HscolourFlags" 'PrefixI 'True) (((S1 ('MetaSel ('Just "hscolourCSS") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "hscolourExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "hscolourTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "hscolourBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "hscolourForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "hscolourDistPref") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "hscolourVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity)) :*: S1 ('MetaSel ('Just "hscolourCabalFilePath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))))))

data BuildFlags Source #

Instances

Instances details
Monoid BuildFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup BuildFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic BuildFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep BuildFlags :: Type -> Type Source #

Read BuildFlags # 
Instance details

Defined in Distribution.Simple.Setup

Show BuildFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep BuildFlags # 
Instance details

Defined in Distribution.Simple.Setup

data ReplFlags Source #

Instances

Instances details
Monoid ReplFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup ReplFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic ReplFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep ReplFlags :: Type -> Type Source #

Show ReplFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep ReplFlags # 
Instance details

Defined in Distribution.Simple.Setup

data CleanFlags Source #

Instances

Instances details
Monoid CleanFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup CleanFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic CleanFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep CleanFlags :: Type -> Type Source #

Show CleanFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep CleanFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep CleanFlags = D1 ('MetaData "CleanFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "CleanFlags" 'PrefixI 'True) ((S1 ('MetaSel ('Just "cleanSaveConf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "cleanDistPref") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "cleanVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity)) :*: S1 ('MetaSel ('Just "cleanCabalFilePath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)))))

data RegisterFlags Source #

Flags to register and unregister: (user package, gen-script, in-place, verbosity)

Instances

Instances details
Monoid RegisterFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup RegisterFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic RegisterFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep RegisterFlags :: Type -> Type Source #

Show RegisterFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep RegisterFlags # 
Instance details

Defined in Distribution.Simple.Setup

data SDistFlags Source #

Flags to sdist: (snapshot, verbosity)

Instances

Instances details
Monoid SDistFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup SDistFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic SDistFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep SDistFlags :: Type -> Type Source #

Show SDistFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep SDistFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep SDistFlags = D1 ('MetaData "SDistFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "SDistFlags" 'PrefixI 'True) ((S1 ('MetaSel ('Just "sDistSnapshot") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "sDistDirectory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "sDistDistPref") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "sDistListSources") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "sDistVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity))))))

data TestFlags Source #

Instances

Instances details
Monoid TestFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup TestFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic TestFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep TestFlags :: Type -> Type Source #

Show TestFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep TestFlags # 
Instance details

Defined in Distribution.Simple.Setup

data TestShowDetails Source #

Instances

Instances details
Parsec TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Pretty TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Structured TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Monoid TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Bounded TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Enum TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Generic TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep TestShowDetails :: Type -> Type Source #

Show TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Binary TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Eq TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

Ord TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

type Rep TestShowDetails # 
Instance details

Defined in Distribution.Simple.Setup

type Rep TestShowDetails = D1 ('MetaData "TestShowDetails" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) ((C1 ('MetaCons "Never" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Failures" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Always" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Streaming" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Direct" 'PrefixI 'False) (U1 :: Type -> Type))))

data BenchmarkFlags Source #

Instances

Instances details
Monoid BenchmarkFlags # 
Instance details

Defined in Distribution.Simple.Setup

Semigroup BenchmarkFlags # 
Instance details

Defined in Distribution.Simple.Setup

Generic BenchmarkFlags # 
Instance details

Defined in Distribution.Simple.Setup

Associated Types

type Rep BenchmarkFlags :: Type -> Type Source #

Show BenchmarkFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep BenchmarkFlags # 
Instance details

Defined in Distribution.Simple.Setup

type Rep BenchmarkFlags = D1 ('MetaData "BenchmarkFlags" "Distribution.Simple.Setup" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "BenchmarkFlags" 'PrefixI 'True) (S1 ('MetaSel ('Just "benchmarkDistPref") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "benchmarkVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity)) :*: S1 ('MetaSel ('Just "benchmarkOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]))))

data CopyDest Source #

The location prefix for the copy command.

Constructors

NoCopyDest 
CopyTo FilePath 
CopyToDb FilePath

when using the ${pkgroot} as prefix. The CopyToDb will adjust the paths to be relative to the provided package database when copying / installing.

Instances

Instances details
Generic CopyDest # 
Instance details

Defined in Distribution.Simple.InstallDirs

Associated Types

type Rep CopyDest :: Type -> Type Source #

Show CopyDest # 
Instance details

Defined in Distribution.Simple.InstallDirs

Binary CopyDest # 
Instance details

Defined in Distribution.Simple.InstallDirs

Eq CopyDest # 
Instance details

Defined in Distribution.Simple.InstallDirs

type Rep CopyDest # 
Instance details

Defined in Distribution.Simple.InstallDirs

type Rep CopyDest = D1 ('MetaData "CopyDest" "Distribution.Simple.InstallDirs" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "NoCopyDest" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CopyTo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :+: C1 ('MetaCons "CopyToDb" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath))))

configureArgs :: Bool -> ConfigFlags -> [String] Source #

Arguments to pass to a configure script, e.g. generated by autoconf.

programDbOptions :: ProgramDb -> ShowOrParseArgs -> (flags -> [(String, [String])]) -> ([(String, [String])] -> flags -> flags) -> [OptionField flags] Source #

For each known program PROG in progDb, produce a PROG-options OptionField.

programDbPaths' :: (String -> String) -> ProgramDb -> ShowOrParseArgs -> (flags -> [(String, FilePath)]) -> ([(String, FilePath)] -> flags -> flags) -> [OptionField flags] Source #

Like programDbPaths, but allows to customise the option name.

splitArgs :: String -> [String] Source #

Helper function to split a string into a list of arguments. It's supposed to handle quoted things sensibly, eg:

splitArgs "--foo=\"C:/Program Files/Bar/" --baz"
  = ["--foo=C:/Program Files/Bar", "--baz"]
splitArgs "\"-DMSGSTR=\\\"foo bar\\\"\" --baz"
  = ["-DMSGSTR=\"foo bar\"","--baz"]

optionDistPref :: (flags -> Flag FilePath) -> (Flag FilePath -> flags -> flags) -> ShowOrParseArgs -> OptionField flags Source #

data Flag a Source #

All flags are monoids, they come in two flavours:

  1. list flags eg
--ghc-option=foo --ghc-option=bar

gives us all the values ["foo", "bar"]

  1. singular value flags, eg:
--enable-foo --disable-foo

gives us Just False So this Flag type is for the latter singular kind of flag. Its monoid instance gives us the behaviour where it starts out as NoFlag and later flags override earlier ones.

Constructors

Flag a 
NoFlag 

Instances

Instances details
Applicative Flag # 
Instance details

Defined in Distribution.Simple.Flag

Methods

pure :: a -> Flag a Source #

(<*>) :: Flag (a -> b) -> Flag a -> Flag b Source #

liftA2 :: (a -> b -> c) -> Flag a -> Flag b -> Flag c Source #

(*>) :: Flag a -> Flag b -> Flag b Source #

(<*) :: Flag a -> Flag b -> Flag a Source #

Functor Flag # 
Instance details

Defined in Distribution.Simple.Flag

Methods

fmap :: (a -> b) -> Flag a -> Flag b Source #

(<$) :: a -> Flag b -> Flag a Source #

Structured a => Structured (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

structure :: Proxy (Flag a) -> Structure Source #

structureHash' :: Tagged (Flag a) MD5

Monoid (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

mempty :: Flag a Source #

mappend :: Flag a -> Flag a -> Flag a Source #

mconcat :: [Flag a] -> Flag a Source #

Semigroup (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

(<>) :: Flag a -> Flag a -> Flag a Source #

sconcat :: NonEmpty (Flag a) -> Flag a Source #

stimes :: Integral b => b -> Flag a -> Flag a Source #

Bounded a => Bounded (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Enum a => Enum (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

succ :: Flag a -> Flag a Source #

pred :: Flag a -> Flag a Source #

toEnum :: Int -> Flag a Source #

fromEnum :: Flag a -> Int Source #

enumFrom :: Flag a -> [Flag a] Source #

enumFromThen :: Flag a -> Flag a -> [Flag a] Source #

enumFromTo :: Flag a -> Flag a -> [Flag a] Source #

enumFromThenTo :: Flag a -> Flag a -> Flag a -> [Flag a] Source #

Generic (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Associated Types

type Rep (Flag a) :: Type -> Type Source #

Methods

from :: Flag a -> Rep (Flag a) x Source #

to :: Rep (Flag a) x -> Flag a Source #

Read a => Read (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Show a => Show (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

showsPrec :: Int -> Flag a -> ShowS Source #

show :: Flag a -> String Source #

showList :: [Flag a] -> ShowS Source #

Binary a => Binary (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

put :: Flag a -> Put Source #

get :: Get (Flag a) Source #

putList :: [Flag a] -> Put Source #

Eq a => Eq (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

Methods

(==) :: Flag a -> Flag a -> Bool #

(/=) :: Flag a -> Flag a -> Bool #

type Rep (Flag a) # 
Instance details

Defined in Distribution.Simple.Flag

type Rep (Flag a) = D1 ('MetaData "Flag" "Distribution.Simple.Flag" "Cabal-3.5.0.0" 'False) (C1 ('MetaCons "Flag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "NoFlag" 'PrefixI 'False) (U1 :: Type -> Type))

toFlag :: a -> Flag a Source #

flagToList :: Flag a -> [a] Source #

class BooleanFlag a where Source #

Types that represent boolean flags.

Methods

asBool :: a -> Bool Source #

Instances

Instances details
BooleanFlag Bool # 
Instance details

Defined in Distribution.Simple.Flag

Methods

asBool :: Bool -> Bool Source #

boolOpt :: SFlags -> SFlags -> MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a Source #

boolOpt' :: OptFlags -> OptFlags -> MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a Source #

trueArg :: MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a Source #

falseArg :: MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a Source #

optionVerbosity :: (flags -> Flag Verbosity) -> (Flag Verbosity -> flags -> flags) -> OptionField flags Source #

optionNumJobs :: (flags -> Flag (Maybe Int)) -> (Flag (Maybe Int) -> flags -> flags) -> OptionField flags Source #