Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Distribution.Client.ProjectConfig.Types
Description
Handling project configuration, types.
Synopsis
- data ProjectConfig = ProjectConfig {
- projectPackages :: [String]
- projectPackagesOptional :: [String]
- projectPackagesRepo :: [SourceRepoList]
- projectPackagesNamed :: [PackageVersionConstraint]
- projectConfigBuildOnly :: ProjectConfigBuildOnly
- projectConfigShared :: ProjectConfigShared
- projectConfigProvenance :: Set ProjectConfigProvenance
- projectConfigAllPackages :: PackageConfig
- projectConfigLocalPackages :: PackageConfig
- projectConfigSpecificPackage :: MapMappend PackageName PackageConfig
- newtype ProjectConfigToParse = ProjectConfigToParse ByteString
- data ProjectConfigBuildOnly = ProjectConfigBuildOnly {
- projectConfigVerbosity :: Flag Verbosity
- projectConfigDryRun :: Flag Bool
- projectConfigOnlyDeps :: Flag Bool
- projectConfigOnlyDownload :: Flag Bool
- projectConfigSummaryFile :: NubList PathTemplate
- projectConfigLogFile :: Flag PathTemplate
- projectConfigBuildReports :: Flag ReportLevel
- projectConfigReportPlanningFailure :: Flag Bool
- projectConfigSymlinkBinDir :: Flag FilePath
- projectConfigNumJobs :: Flag (Maybe Int)
- projectConfigUseSemaphore :: Flag Bool
- projectConfigKeepGoing :: Flag Bool
- projectConfigOfflineMode :: Flag Bool
- projectConfigKeepTempFiles :: Flag Bool
- projectConfigHttpTransport :: Flag String
- projectConfigIgnoreExpiry :: Flag Bool
- projectConfigCacheDir :: Flag FilePath
- projectConfigLogsDir :: Flag FilePath
- projectConfigClientInstallFlags :: ClientInstallFlags
- data ProjectConfigShared = ProjectConfigShared {
- projectConfigDistDir :: Flag FilePath
- projectConfigConfigFile :: Flag FilePath
- projectConfigProjectDir :: Flag FilePath
- projectConfigProjectFile :: Flag FilePath
- projectConfigIgnoreProject :: Flag Bool
- projectConfigHcFlavor :: Flag CompilerFlavor
- projectConfigHcPath :: Flag FilePath
- projectConfigHcPkg :: Flag FilePath
- projectConfigHaddockIndex :: Flag PathTemplate
- projectConfigInstallDirs :: InstallDirs (Flag PathTemplate)
- projectConfigPackageDBs :: [Maybe PackageDBCWD]
- projectConfigRemoteRepos :: NubList RemoteRepo
- projectConfigLocalNoIndexRepos :: NubList LocalRepo
- projectConfigActiveRepos :: Flag ActiveRepos
- projectConfigIndexState :: Flag TotalIndexState
- projectConfigStoreDir :: Flag FilePath
- projectConfigConstraints :: [(UserConstraint, ConstraintSource)]
- projectConfigPreferences :: [PackageVersionConstraint]
- projectConfigCabalVersion :: Flag Version
- projectConfigSolver :: Flag PreSolver
- projectConfigAllowOlder :: Maybe AllowOlder
- projectConfigAllowNewer :: Maybe AllowNewer
- projectConfigWriteGhcEnvironmentFilesPolicy :: Flag WriteGhcEnvironmentFilesPolicy
- projectConfigMaxBackjumps :: Flag Int
- projectConfigReorderGoals :: Flag ReorderGoals
- projectConfigCountConflicts :: Flag CountConflicts
- projectConfigFineGrainedConflicts :: Flag FineGrainedConflicts
- projectConfigMinimizeConflictSet :: Flag MinimizeConflictSet
- projectConfigStrongFlags :: Flag StrongFlags
- projectConfigAllowBootLibInstalls :: Flag AllowBootLibInstalls
- projectConfigOnlyConstrained :: Flag OnlyConstrained
- projectConfigPerComponent :: Flag Bool
- projectConfigIndependentGoals :: Flag IndependentGoals
- projectConfigPreferOldest :: Flag PreferOldest
- projectConfigProgPathExtra :: NubList FilePath
- projectConfigMultiRepl :: Flag Bool
- data ProjectConfigProvenance
- data PackageConfig = PackageConfig {
- packageConfigProgramPaths :: MapLast String FilePath
- packageConfigProgramArgs :: MapMappend String [String]
- packageConfigProgramPathExtra :: NubList FilePath
- packageConfigFlagAssignment :: FlagAssignment
- packageConfigVanillaLib :: Flag Bool
- packageConfigSharedLib :: Flag Bool
- packageConfigStaticLib :: Flag Bool
- packageConfigDynExe :: Flag Bool
- packageConfigFullyStaticExe :: Flag Bool
- packageConfigProf :: Flag Bool
- packageConfigProfLib :: Flag Bool
- packageConfigProfShared :: Flag Bool
- packageConfigProfExe :: Flag Bool
- packageConfigProfDetail :: Flag ProfDetailLevel
- packageConfigProfLibDetail :: Flag ProfDetailLevel
- packageConfigConfigureArgs :: [String]
- packageConfigOptimization :: Flag OptimisationLevel
- packageConfigProgPrefix :: Flag PathTemplate
- packageConfigProgSuffix :: Flag PathTemplate
- packageConfigExtraLibDirs :: [FilePath]
- packageConfigExtraLibDirsStatic :: [FilePath]
- packageConfigExtraFrameworkDirs :: [FilePath]
- packageConfigExtraIncludeDirs :: [FilePath]
- packageConfigGHCiLib :: Flag Bool
- packageConfigSplitSections :: Flag Bool
- packageConfigSplitObjs :: Flag Bool
- packageConfigStripExes :: Flag Bool
- packageConfigStripLibs :: Flag Bool
- packageConfigTests :: Flag Bool
- packageConfigBenchmarks :: Flag Bool
- packageConfigCoverage :: Flag Bool
- packageConfigRelocatable :: Flag Bool
- packageConfigDebugInfo :: Flag DebugInfoLevel
- packageConfigDumpBuildInfo :: Flag DumpBuildInfo
- packageConfigRunTests :: Flag Bool
- packageConfigDocumentation :: Flag Bool
- packageConfigHaddockHoogle :: Flag Bool
- packageConfigHaddockHtml :: Flag Bool
- packageConfigHaddockHtmlLocation :: Flag String
- packageConfigHaddockForeignLibs :: Flag Bool
- packageConfigHaddockExecutables :: Flag Bool
- packageConfigHaddockTestSuites :: Flag Bool
- packageConfigHaddockBenchmarks :: Flag Bool
- packageConfigHaddockInternal :: Flag Bool
- packageConfigHaddockCss :: Flag FilePath
- packageConfigHaddockLinkedSource :: Flag Bool
- packageConfigHaddockQuickJump :: Flag Bool
- packageConfigHaddockHscolourCss :: Flag FilePath
- packageConfigHaddockContents :: Flag PathTemplate
- packageConfigHaddockIndex :: Flag PathTemplate
- packageConfigHaddockBaseUrl :: Flag String
- packageConfigHaddockResourcesDir :: Flag String
- packageConfigHaddockOutputDir :: Flag FilePath
- packageConfigHaddockUseUnicode :: Flag Bool
- packageConfigHaddockForHackage :: Flag HaddockTarget
- packageConfigTestHumanLog :: Flag PathTemplate
- packageConfigTestMachineLog :: Flag PathTemplate
- packageConfigTestShowDetails :: Flag TestShowDetails
- packageConfigTestKeepTix :: Flag Bool
- packageConfigTestWrapper :: Flag FilePath
- packageConfigTestFailWhenNoTestSuites :: Flag Bool
- packageConfigTestTestOptions :: [PathTemplate]
- packageConfigBenchmarkOptions :: [PathTemplate]
- data SolverSettings = SolverSettings {
- solverSettingRemoteRepos :: [RemoteRepo]
- solverSettingLocalNoIndexRepos :: [LocalRepo]
- solverSettingConstraints :: [(UserConstraint, ConstraintSource)]
- solverSettingPreferences :: [PackageVersionConstraint]
- solverSettingFlagAssignment :: FlagAssignment
- solverSettingFlagAssignments :: Map PackageName FlagAssignment
- solverSettingCabalVersion :: Maybe Version
- solverSettingSolver :: PreSolver
- solverSettingAllowOlder :: AllowOlder
- solverSettingAllowNewer :: AllowNewer
- solverSettingMaxBackjumps :: Maybe Int
- solverSettingReorderGoals :: ReorderGoals
- solverSettingCountConflicts :: CountConflicts
- solverSettingFineGrainedConflicts :: FineGrainedConflicts
- solverSettingMinimizeConflictSet :: MinimizeConflictSet
- solverSettingStrongFlags :: StrongFlags
- solverSettingAllowBootLibInstalls :: AllowBootLibInstalls
- solverSettingOnlyConstrained :: OnlyConstrained
- solverSettingIndexState :: Maybe TotalIndexState
- solverSettingActiveRepos :: Maybe ActiveRepos
- solverSettingIndependentGoals :: IndependentGoals
- solverSettingPreferOldest :: PreferOldest
- data BuildTimeSettings = BuildTimeSettings {
- buildSettingDryRun :: Bool
- buildSettingOnlyDeps :: Bool
- buildSettingOnlyDownload :: Bool
- buildSettingSummaryFile :: [PathTemplate]
- buildSettingLogFile :: Maybe (Compiler -> Platform -> PackageId -> UnitId -> FilePath)
- buildSettingLogVerbosity :: Verbosity
- buildSettingBuildReports :: ReportLevel
- buildSettingReportPlanningFailure :: Bool
- buildSettingSymlinkBinDir :: [FilePath]
- buildSettingNumJobs :: ParStratInstall
- buildSettingKeepGoing :: Bool
- buildSettingOfflineMode :: Bool
- buildSettingKeepTempFiles :: Bool
- buildSettingRemoteRepos :: [RemoteRepo]
- buildSettingLocalNoIndexRepos :: [LocalRepo]
- buildSettingCacheDir :: FilePath
- buildSettingHttpTransport :: Maybe String
- buildSettingIgnoreExpiry :: Bool
- buildSettingProgPathExtra :: [FilePath]
- buildSettingHaddockOpen :: Bool
- data ParStratX sem
- isParallelBuild :: ParStratX n -> Bool
- type ParStrat = ParStratX String
- newtype MapLast k v = MapLast {
- getMapLast :: Map k v
- newtype MapMappend k v = MapMappend {
- getMapMappend :: Map k v
Types for project config
data ProjectConfig Source #
This type corresponds directly to what can be written in the
cabal.project
file. Other sources of configuration can also be injected
into this type, such as the user-wide config file and the
command line of cabal configure
or cabal build
.
Since it corresponds to the external project file it is an instance of
Monoid
and all the fields can be empty. This also means there has to
be a step where we resolve configuration. At a minimum resolving means
applying defaults but it can also mean merging information from multiple
sources. For example for package-specific configuration the project file
can specify configuration that applies to all local packages, and then
additional configuration for a specific package.
Future directions: multiple profiles, conditionals. If we add these features then the gap between configuration as written in the config file and resolved settings we actually use will become even bigger.
Constructors
ProjectConfig | |
Fields
|
Instances
newtype ProjectConfigToParse Source #
The project configuration is configuration that is parsed but parse configuration may import more configuration. Holds the unparsed contents of an imported file contributing to the project config.
Constructors
ProjectConfigToParse ByteString |
data ProjectConfigBuildOnly Source #
That part of the project configuration that only affects how we build and not the value of the things we build. This means this information does not need to be tracked for changes since it does not affect the outcome.
Constructors
Instances
data ProjectConfigShared Source #
Project configuration that is shared between all packages in the project. In particular this includes configuration that affects the solver.
Constructors
Instances
data ProjectConfigProvenance Source #
Specifies the provenance of project configuration, whether defaults were used or if the configuration was read from an explicit file path.
Constructors
Implicit | The configuration is implicit due to no explicit configuration
being found. See |
Explicit ProjectConfigPath | The path the project configuration was explicitly read from.
| The configuration was explicitly read from the specified |
Instances
data PackageConfig Source #
Project configuration that is specific to each package, that is where we can in principle have different values for different packages in the same project.
Constructors
Instances
Resolving configuration
data SolverSettings Source #
Resolved configuration for the solver. The idea is that this is easier to
use than the raw configuration because in the raw configuration everything
is optional (monoidial). In the BuildTimeSettings
every field is filled
in, if only with the defaults.
Use resolveSolverSettings
to make one from the project config (by
applying defaults etc).
Constructors
Instances
data BuildTimeSettings Source #
Resolved configuration for things that affect how we build and not the
value of the things we build. The idea is that this is easier to use than
the raw configuration because in the raw configuration everything is
optional (monoidial). In the BuildTimeSettings
every field is filled in,
if only with the defaults.
Use resolveBuildTimeSettings
to make one from the project config (by
applying defaults etc).
Constructors
How to control parallelism, e.g. a fixed number of jobs or by using a system semaphore.
isParallelBuild :: ParStratX n -> Bool #
Determine if the parallelism strategy enables parallel builds.
type ParStrat = ParStratX String #
Used by Cabal to indicate that we want to use this specific semaphore (created by cabal-install)
Extra useful Monoids
Newtype wrapper for Map
that provides a Monoid
instance that takes
the last value rather than the first value for overlapping keys.
Constructors
MapLast | |
Fields
|
Instances
Functor (MapLast k) Source # | |
(Structured k, Structured v) => Structured (MapLast k v) Source # | |
Defined in Distribution.Client.ProjectConfig.Types | |
Ord k => Monoid (MapLast k v) Source # | |
Ord k => Semigroup (MapLast k v) Source # | |
Generic (MapLast k v) Source # | |
(Show k, Show v) => Show (MapLast k v) Source # | |
(Binary k, Binary v) => Binary (MapLast k v) Source # | |
(Eq k, Eq v) => Eq (MapLast k v) Source # | |
type Rep (MapLast k v) Source # | |
Defined in Distribution.Client.ProjectConfig.Types |
newtype MapMappend k v Source #
Newtype wrapper for Map
that provides a Monoid
instance that
mappend
s values of overlapping keys rather than taking the first.
Constructors
MapMappend | |
Fields
|