| Cabal-1.6.0.3: A framework for packaging Haskell software | Source code | Contents | Index
Distribution.Simple.Setup |
Portability | portable
Maintainer | cabal-devel@haskell.org
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
data GlobalFlags = GlobalFlags {
globalVersion :: Flag Bool
globalNumericVersion :: Flag Bool
}
emptyGlobalFlags :: GlobalFlags
defaultGlobalFlags :: GlobalFlags
globalCommand :: CommandUI GlobalFlags
data ConfigFlags = ConfigFlags {
configPrograms :: ProgramConfiguration
configProgramPaths :: [(String, FilePath)]
configProgramArgs :: [(String, [String])]
configHcFlavor :: Flag CompilerFlavor
configHcPath :: Flag FilePath
configHcPkg :: Flag FilePath
configVanillaLib :: Flag Bool
configProfLib :: Flag Bool
configSharedLib :: Flag Bool
configProfExe :: Flag Bool
configConfigureArgs :: [String]
configOptimization :: Flag OptimisationLevel
configProgPrefix :: Flag PathTemplate
configProgSuffix :: Flag PathTemplate
configInstallDirs :: InstallDirs (Flag PathTemplate)
configScratchDir :: Flag FilePath
configExtraLibDirs :: [FilePath]
configExtraIncludeDirs :: [FilePath]
configDistPref :: Flag FilePath
configVerbosity :: Flag Verbosity
configUserInstall :: Flag Bool
configPackageDB :: Flag PackageDB
configGHCiLib :: Flag Bool
configSplitObjs :: Flag Bool
configStripExes :: Flag Bool
configConstraints :: [Dependency]
configConfigurationsFlags :: FlagAssignment
}
emptyConfigFlags :: ConfigFlags
defaultConfigFlags :: ProgramConfiguration -> ConfigFlags
configureCommand :: ProgramConfiguration -> CommandUI ConfigFlags
data CopyFlags = CopyFlags {
copyDest :: Flag CopyDest
copyDistPref :: Flag FilePath
copyUseWrapper :: Flag Bool
copyInPlace :: Flag Bool
copyVerbosity :: Flag Verbosity
}
emptyCopyFlags :: CopyFlags
defaultCopyFlags :: CopyFlags
copyCommand :: CommandUI CopyFlags
data InstallFlags = InstallFlags {
installPackageDB :: Flag PackageDB
installDistPref :: Flag FilePath
installUseWrapper :: Flag Bool
installInPlace :: Flag Bool
installVerbosity :: Flag Verbosity
}
emptyInstallFlags :: InstallFlags
defaultInstallFlags :: InstallFlags
installCommand :: CommandUI InstallFlags
data HaddockFlags = HaddockFlags {
haddockProgramPaths :: [(String, FilePath)]
haddockProgramArgs :: [(String, [String])]
haddockHoogle :: Flag Bool
haddockHtmlLocation :: Flag String
haddockExecutables :: Flag Bool
haddockInternal :: Flag Bool
haddockCss :: Flag FilePath
haddockHscolour :: Flag Bool
haddockHscolourCss :: Flag FilePath
haddockDistPref :: Flag FilePath
haddockVerbosity :: Flag Verbosity
}
emptyHaddockFlags :: HaddockFlags
defaultHaddockFlags :: HaddockFlags
haddockCommand :: CommandUI HaddockFlags
data HscolourFlags = HscolourFlags {
hscolourCSS :: Flag FilePath
hscolourExecutables :: Flag Bool
hscolourDistPref :: Flag FilePath
hscolourVerbosity :: Flag Verbosity
}
emptyHscolourFlags :: HscolourFlags
defaultHscolourFlags :: HscolourFlags
hscolourCommand :: CommandUI HscolourFlags
data BuildFlags = BuildFlags {
buildProgramPaths :: [(String, FilePath)]
buildProgramArgs :: [(String, [String])]
buildDistPref :: Flag FilePath
buildVerbosity :: Flag Verbosity
}
emptyBuildFlags :: BuildFlags
defaultBuildFlags :: BuildFlags
buildCommand :: ProgramConfiguration -> CommandUI BuildFlags
buildVerbose :: BuildFlags -> Verbosity
data CleanFlags = CleanFlags {
cleanSaveConf :: Flag Bool
cleanDistPref :: Flag FilePath
cleanVerbosity :: Flag Verbosity
}
emptyCleanFlags :: CleanFlags
defaultCleanFlags :: CleanFlags
cleanCommand :: CommandUI CleanFlags
data MakefileFlags = MakefileFlags {
makefileFile :: Flag FilePath
makefileDistPref :: Flag FilePath
makefileVerbosity :: Flag Verbosity
}
emptyMakefileFlags :: MakefileFlags
defaultMakefileFlags :: MakefileFlags
makefileCommand :: CommandUI MakefileFlags
data RegisterFlags = RegisterFlags {
regPackageDB :: Flag PackageDB
regGenScript :: Flag Bool
regGenPkgConf :: Flag (Maybe FilePath)
regInPlace :: Flag Bool
regDistPref :: Flag FilePath
regVerbosity :: Flag Verbosity
}
emptyRegisterFlags :: RegisterFlags
defaultRegisterFlags :: RegisterFlags
registerCommand :: CommandUI RegisterFlags
unregisterCommand :: CommandUI RegisterFlags
data SDistFlags = SDistFlags {
sDistSnapshot :: Flag Bool
sDistDistPref :: Flag FilePath
sDistVerbosity :: Flag Verbosity
}
emptySDistFlags :: SDistFlags
defaultSDistFlags :: SDistFlags
sdistCommand :: CommandUI SDistFlags
data TestFlags = TestFlags {
testDistPref :: Flag FilePath
testVerbosity :: Flag Verbosity
}
emptyTestFlags :: TestFlags
defaultTestFlags :: TestFlags
testCommand :: CommandUI TestFlags
data CopyDest
= NoCopyDest
| CopyTo FilePath
| CopyPrefix FilePath
configureArgs :: Bool -> ConfigFlags -> [String]
configureOptions :: ShowOrParseArgs -> [OptionField ConfigFlags]
installDirsOptions :: [OptionField (InstallDirs (Flag PathTemplate))]
defaultDistPref :: FilePath
data Flag a
= Flag a
| NoFlag
toFlag :: a -> Flag a
fromFlag :: Flag a -> a
fromFlagOrDefault :: a -> Flag a -> a
flagToMaybe :: Flag a -> Maybe a
flagToList :: Flag a -> [a]
boolOpt :: SFlags -> SFlags -> MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a
boolOpt' :: OptFlags -> OptFlags -> MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a
trueArg :: SFlags -> LFlags -> Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) -> OptDescr b
falseArg :: SFlags -> LFlags -> Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) -> OptDescr b
optionVerbosity :: (flags -> Flag Verbosity) -> (Flag Verbosity -> flags -> flags) -> OptionField flags
Documentation
data GlobalFlags | Source
Flags that apply at the top level, not to any sub-command.
Constructors
GlobalFlags |
globalVersion :: Flag Bool |
globalNumericVersion :: Flag Bool |
Instances
Monoid GlobalFlags
emptyGlobalFlags :: GlobalFlags | Source
defaultGlobalFlags :: GlobalFlags | Source
globalCommand :: CommandUI GlobalFlags | Source
data ConfigFlags | Source
Flags to `configure` command
Constructors
ConfigFlags |
configPrograms :: ProgramConfiguration | All programs that cabal may run
configProgramPaths :: [(String, FilePath)] | user specifed programs paths
configProgramArgs :: [(String, [String])] | user specifed programs args
configHcFlavor :: Flag CompilerFlavor | The "flavor" of the compiler, sugh as GHC or Hugs.
configHcPath :: Flag FilePath | given compiler location
configHcPkg :: Flag FilePath | given hc-pkg location
configVanillaLib :: Flag Bool | Enable vanilla library
configProfLib :: Flag Bool | Enable profiling in the library
configSharedLib :: Flag Bool | Build shared library
configProfExe :: Flag Bool | Enable profiling in the executables.
configConfigureArgs :: [String] | Extra arguments to `configure`
configOptimization :: Flag OptimisationLevel | Enable optimization.
configProgPrefix :: Flag PathTemplate | Installed executable prefix.
configProgSuffix :: Flag PathTemplate | Installed executable suffix.
configInstallDirs :: InstallDirs (Flag PathTemplate) | Installation paths
configScratchDir :: Flag FilePath |
configExtraLibDirs :: [FilePath] | path to search for extra libraries
configExtraIncludeDirs :: [FilePath] | path to search for header files
configDistPref :: Flag FilePath | dist prefix
configVerbosity :: Flag Verbosity | verbosity level
configUserInstall :: Flag Bool | The --user/--global flag
configPackageDB :: Flag PackageDB | Which package DB to use
configGHCiLib :: Flag Bool | Enable compiling library for GHCi
configSplitObjs :: Flag Bool | Enable -split-objs with GHC
configStripExes :: Flag Bool | Enable executable stripping
configConstraints :: [Dependency] | Additional constraints for dependencies
configConfigurationsFlags :: FlagAssignment |
Instances
Show ConfigFlags
Monoid ConfigFlags
emptyConfigFlags :: ConfigFlags | Source
defaultConfigFlags :: ProgramConfiguration -> ConfigFlags | Source
configureCommand :: ProgramConfiguration -> CommandUI ConfigFlags | Source
data CopyFlags | Source
Flags to `copy`: (destdir, copy-prefix (backwards compat), verbosity)
Constructors
CopyFlags |
copyDest :: Flag CopyDest |
copyDistPref :: Flag FilePath |
copyUseWrapper :: Flag Bool |
copyInPlace :: Flag Bool |
copyVerbosity :: Flag Verbosity |
Instances
Show CopyFlags
Monoid CopyFlags
emptyCopyFlags :: CopyFlags | Source
defaultCopyFlags :: CopyFlags | Source
copyCommand :: CommandUI CopyFlags | Source
data InstallFlags | Source
Flags to `install`: (package db, verbosity)
Constructors
InstallFlags |
installPackageDB :: Flag PackageDB |
installDistPref :: Flag FilePath |
installUseWrapper :: Flag Bool |
installInPlace :: Flag Bool |
installVerbosity :: Flag Verbosity |
Instances
Show InstallFlags
Monoid InstallFlags
emptyInstallFlags :: InstallFlags | Source
defaultInstallFlags :: InstallFlags | Source
installCommand :: CommandUI InstallFlags | Source
data HaddockFlags | Source
Constructors
HaddockFlags |
haddockProgramPaths :: [(String, FilePath)] |
haddockProgramArgs :: [(String, [String])] |
haddockHoogle :: Flag Bool |
haddockHtmlLocation :: Flag String |
haddockExecutables :: Flag Bool |
haddockInternal :: Flag Bool |
haddockCss :: Flag FilePath |
haddockHscolour :: Flag Bool |
haddockHscolourCss :: Flag FilePath |
haddockDistPref :: Flag FilePath |
haddockVerbosity :: Flag Verbosity |
Instances
Show HaddockFlags
Monoid HaddockFlags
emptyHaddockFlags :: HaddockFlags | Source
defaultHaddockFlags :: HaddockFlags | Source
haddockCommand :: CommandUI HaddockFlags | Source
data HscolourFlags | Source
Constructors
HscolourFlags |
hscolourCSS :: Flag FilePath |
hscolourExecutables :: Flag Bool |
hscolourDistPref :: Flag FilePath |
hscolourVerbosity :: Flag Verbosity |
Instances
Show HscolourFlags
Monoid HscolourFlags
emptyHscolourFlags :: HscolourFlags | Source
defaultHscolourFlags :: HscolourFlags | Source
hscolourCommand :: CommandUI HscolourFlags | Source
data BuildFlags | Source
Constructors
BuildFlags |
buildProgramPaths :: [(String, FilePath)] |
buildProgramArgs :: [(String, [String])] |
buildDistPref :: Flag FilePath |
buildVerbosity :: Flag Verbosity |
Instances
Show BuildFlags
Monoid BuildFlags
emptyBuildFlags :: BuildFlags | Source
defaultBuildFlags :: BuildFlags | Source
buildCommand :: ProgramConfiguration -> CommandUI BuildFlags | Source
buildVerbose :: BuildFlags -> Verbosity | Source
data CleanFlags | Source
Constructors
CleanFlags |
cleanSaveConf :: Flag Bool |
cleanDistPref :: Flag FilePath |
cleanVerbosity :: Flag Verbosity |
Instances
Show CleanFlags
Monoid CleanFlags
emptyCleanFlags :: CleanFlags | Source
defaultCleanFlags :: CleanFlags | Source
cleanCommand :: CommandUI CleanFlags | Source
data MakefileFlags | Source
Constructors
MakefileFlags |
makefileFile :: Flag FilePath |
makefileDistPref :: Flag FilePath |
makefileVerbosity :: Flag Verbosity |
Instances
Show MakefileFlags
Monoid MakefileFlags
emptyMakefileFlags :: MakefileFlags | Source
defaultMakefileFlags :: MakefileFlags | Source
makefileCommand :: CommandUI MakefileFlags | Source
data RegisterFlags | Source
Flags to `register` and `unregister`: (user package, gen-script, in-place, verbosity)
Constructors
RegisterFlags |
regPackageDB :: Flag PackageDB |
regGenScript :: Flag Bool |
regGenPkgConf :: Flag (Maybe FilePath) |
regInPlace :: Flag Bool |
regDistPref :: Flag FilePath |
regVerbosity :: Flag Verbosity |
Instances
Show RegisterFlags
Monoid RegisterFlags
emptyRegisterFlags :: RegisterFlags | Source
defaultRegisterFlags :: RegisterFlags | Source
registerCommand :: CommandUI RegisterFlags | Source
unregisterCommand :: CommandUI RegisterFlags | Source
data SDistFlags | Source
Flags to `sdist`: (snapshot, verbosity)
Constructors
SDistFlags |
sDistSnapshot :: Flag Bool |
sDistDistPref :: Flag FilePath |
sDistVerbosity :: Flag Verbosity |
Instances
Show SDistFlags
Monoid SDistFlags
emptySDistFlags :: SDistFlags | Source
defaultSDistFlags :: SDistFlags | Source
sdistCommand :: CommandUI SDistFlags | Source
data TestFlags | Source
Constructors
TestFlags |
testDistPref :: Flag FilePath |
testVerbosity :: Flag Verbosity |
Instances
Show TestFlags
Monoid TestFlags
emptyTestFlags :: TestFlags | Source
defaultTestFlags :: TestFlags | Source
testCommand :: CommandUI TestFlags | Source
data CopyDest | Source
The location prefix for the copy command.
Constructors
NoCopyDest |
CopyTo FilePath |
CopyPrefix FilePath |
Instances
Eq CopyDest
Show CopyDest
configureArgs :: Bool -> ConfigFlags -> [String] | Source
Arguments to pass to a `configure` script, e.g. generated by `autoconf`.
configureOptions :: ShowOrParseArgs -> [OptionField ConfigFlags] | Source
installDirsOptions :: [OptionField (InstallDirs (Flag PathTemplate))] | Source
defaultDistPref :: FilePath | 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] 2. 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
Functor Flag
Bounded a => Bounded (Flag a)
Enum a => Enum (Flag a)
Eq a => Eq (Flag a)
Show a => Show (Flag a)
Monoid (Flag a)
toFlag :: a -> Flag a | Source
fromFlag :: Flag a -> a | Source
fromFlagOrDefault :: a -> Flag a -> a | Source
flagToMaybe :: Flag a -> Maybe a | Source
flagToList :: Flag a -> [a] | 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 :: SFlags -> LFlags -> Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) -> OptDescr b | Source
falseArg :: SFlags -> LFlags -> Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) -> OptDescr b | Source
optionVerbosity :: (flags -> Flag Verbosity) -> (Flag Verbosity -> flags -> flags) -> OptionField flags | Source
Produced by Haddock version 2.4.2