| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Distribution.Types.Flag
Synopsis
- data PackageFlag = MkPackageFlag {}
- emptyFlag :: FlagName -> PackageFlag
- data FlagName
- mkFlagName :: String -> FlagName
- unFlagName :: FlagName -> String
- data FlagAssignment
- mkFlagAssignment :: [(FlagName, Bool)] -> FlagAssignment
- unFlagAssignment :: FlagAssignment -> [(FlagName, Bool)]
- lookupFlagAssignment :: FlagName -> FlagAssignment -> Maybe Bool
- insertFlagAssignment :: FlagName -> Bool -> FlagAssignment -> FlagAssignment
- diffFlagAssignment :: FlagAssignment -> FlagAssignment -> FlagAssignment
- findDuplicateFlagAssignments :: FlagAssignment -> [FlagName]
- nullFlagAssignment :: FlagAssignment -> Bool
- showFlagValue :: (FlagName, Bool) -> String
- dispFlagAssignment :: FlagAssignment -> Doc
- showFlagAssignment :: FlagAssignment -> String
- parsecFlagAssignment :: CabalParsing m => m FlagAssignment
- parsecFlagAssignmentNonEmpty :: CabalParsing m => m FlagAssignment
- legacyShowFlagAssignment :: FlagAssignment -> String
- legacyShowFlagAssignment' :: FlagAssignment -> [String]
- legacyParsecFlagAssignment :: CabalParsing m => m FlagAssignment
Package flag
data PackageFlag #
A flag can represent a feature to be included, or a way of linking a target against its dependencies, or in fact whatever you can think of.
Constructors
| MkPackageFlag | |
Fields
| |
Instances
emptyFlag :: FlagName -> PackageFlag #
A PackageFlag initialized with default parameters.
Flag name
A FlagName is the name of a user-defined configuration flag
Use mkFlagName and unFlagName to convert from/to a String.
This type is opaque since Cabal-2.0
Since: Cabal-syntax-2.0.0.2
Instances
| Parsec FlagName # | |||||
Defined in Distribution.Types.Flag Methods parsec :: CabalParsing m => m FlagName # | |||||
| Pretty FlagName # | |||||
Defined in Distribution.Types.Flag | |||||
| Structured FlagName # | |||||
Defined in Distribution.Types.Flag | |||||
| Binary FlagName # | |||||
| NFData FlagName # | |||||
Defined in Distribution.Types.Flag | |||||
| Eq FlagName # | |||||
| Ord FlagName # | |||||
Defined in Distribution.Types.Flag | |||||
| Data FlagName # | |||||
Defined in Distribution.Types.Flag Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FlagName -> c FlagName # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FlagName # toConstr :: FlagName -> Constr # dataTypeOf :: FlagName -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FlagName) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FlagName) # gmapT :: (forall b. Data b => b -> b) -> FlagName -> FlagName # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FlagName -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FlagName -> r # gmapQ :: (forall d. Data d => d -> u) -> FlagName -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FlagName -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FlagName -> m FlagName # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FlagName -> m FlagName # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FlagName -> m FlagName # | |||||
| IsString FlagName # | Since: Cabal-syntax-2.0.0.2 | ||||
Defined in Distribution.Types.Flag Methods fromString :: String -> FlagName # | |||||
| Generic FlagName # | |||||
Defined in Distribution.Types.Flag Associated Types
| |||||
| Read FlagName # | |||||
| Show FlagName # | |||||
| type Rep FlagName # | |||||
Defined in Distribution.Types.Flag | |||||
mkFlagName :: String -> FlagName #
Construct a FlagName from a String
mkFlagName is the inverse to unFlagName
Note: No validations are performed to ensure that the resulting
FlagName is valid
Since: Cabal-syntax-2.0.0.2
Flag assignment
data FlagAssignment #
A FlagAssignment is a total or partial mapping of FlagNames to
Bool flag values. It represents the flags chosen by the user or
discovered during configuration. For example --flags=foo --flags=-bar
becomes [("foo", True), ("bar", False)]
TODO: Why we record the multiplicity of the flag?
Instances
| Parsec FlagAssignment # |
Issue #7279 was fixed in Cabal-3.8
Since: Cabal-syntax-3.4.0.0 | ||||
Defined in Distribution.Types.Flag Methods parsec :: CabalParsing m => m FlagAssignment # | |||||
| Pretty FlagAssignment # | Since: Cabal-syntax-3.4.0.0 | ||||
Defined in Distribution.Types.Flag Methods pretty :: FlagAssignment -> Doc # prettyVersioned :: CabalSpecVersion -> FlagAssignment -> Doc # | |||||
| Structured FlagAssignment # | |||||
Defined in Distribution.Types.Flag | |||||
| Binary FlagAssignment # | |||||
Defined in Distribution.Types.Flag Methods put :: FlagAssignment -> Put Source # get :: Get FlagAssignment Source # putList :: [FlagAssignment] -> Put Source # | |||||
| NFData FlagAssignment # | |||||
Defined in Distribution.Types.Flag Methods rnf :: FlagAssignment -> () Source # | |||||
| Monoid FlagAssignment # | |||||
Defined in Distribution.Types.Flag Methods mappend :: FlagAssignment -> FlagAssignment -> FlagAssignment # mconcat :: [FlagAssignment] -> FlagAssignment # | |||||
| Semigroup FlagAssignment # | |||||
Defined in Distribution.Types.Flag Methods (<>) :: FlagAssignment -> FlagAssignment -> FlagAssignment # sconcat :: NonEmpty FlagAssignment -> FlagAssignment # stimes :: Integral b => b -> FlagAssignment -> FlagAssignment # | |||||
| Eq FlagAssignment # | |||||
Defined in Distribution.Types.Flag Methods (==) :: FlagAssignment -> FlagAssignment -> Bool # (/=) :: FlagAssignment -> FlagAssignment -> Bool # | |||||
| Ord FlagAssignment # | |||||
Defined in Distribution.Types.Flag Methods compare :: FlagAssignment -> FlagAssignment -> Ordering # (<) :: FlagAssignment -> FlagAssignment -> Bool # (<=) :: FlagAssignment -> FlagAssignment -> Bool # (>) :: FlagAssignment -> FlagAssignment -> Bool # (>=) :: FlagAssignment -> FlagAssignment -> Bool # max :: FlagAssignment -> FlagAssignment -> FlagAssignment # min :: FlagAssignment -> FlagAssignment -> FlagAssignment # | |||||
| Generic FlagAssignment # | |||||
Defined in Distribution.Types.Flag Associated Types
Methods from :: FlagAssignment -> Rep FlagAssignment x # to :: Rep FlagAssignment x -> FlagAssignment # | |||||
| Read FlagAssignment # | Since: Cabal-syntax-2.2.0 | ||||
Defined in Distribution.Types.Flag Methods readsPrec :: Int -> ReadS FlagAssignment # readList :: ReadS [FlagAssignment] # | |||||
| Show FlagAssignment # | Since: Cabal-syntax-2.2.0 | ||||
Defined in Distribution.Types.Flag Methods showsPrec :: Int -> FlagAssignment -> ShowS # show :: FlagAssignment -> String # showList :: [FlagAssignment] -> ShowS # | |||||
| type Rep FlagAssignment # | |||||
Defined in Distribution.Types.Flag type Rep FlagAssignment = D1 ('MetaData "FlagAssignment" "Distribution.Types.Flag" "Cabal-syntax-3.16.0.0-2829" 'True) (C1 ('MetaCons "FlagAssignment" 'PrefixI 'True) (S1 ('MetaSel ('Just "getFlagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map FlagName (Int, Bool))))) | |||||
mkFlagAssignment :: [(FlagName, Bool)] -> FlagAssignment #
Construct a FlagAssignment from a list of flag/value pairs.
If duplicate flags occur in the input list, the later entries in the list will take precedence.
Since: Cabal-syntax-2.2.0
unFlagAssignment :: FlagAssignment -> [(FlagName, Bool)] #
Deconstruct a FlagAssignment into a list of flag/value pairs.
null(findDuplicateFlagAssignmentsfa) ==> (mkFlagAssignment.unFlagAssignment) fa == fa
Since: Cabal-syntax-2.2.0
lookupFlagAssignment :: FlagName -> FlagAssignment -> Maybe Bool #
Lookup the value for a flag
Returns Nothing if the flag isn't contained in the FlagAssignment.
Since: Cabal-syntax-2.2.0
insertFlagAssignment :: FlagName -> Bool -> FlagAssignment -> FlagAssignment #
Insert or update the boolean value of a flag.
If the flag is already present in the FlagAssignment, the
value will be updated and the fact that multiple values have
been provided for that flag will be recorded so that a
warning can be generated later on.
Since: Cabal-syntax-2.2.0
diffFlagAssignment :: FlagAssignment -> FlagAssignment -> FlagAssignment #
Remove all flag-assignments from the first FlagAssignment that
are contained in the second FlagAssignment
NB/TODO: This currently only removes flag assignments which also match the value assignment! We should review the code which uses this operation to figure out if this it's not enough to only compare the flagnames without the values.
Since: Cabal-syntax-2.2.0
findDuplicateFlagAssignments :: FlagAssignment -> [FlagName] #
Find the FlagNames that have been listed more than once.
Since: Cabal-syntax-2.2.0
nullFlagAssignment :: FlagAssignment -> Bool #
Test whether FlagAssignment is empty.
Since: Cabal-syntax-2.2.0
showFlagValue :: (FlagName, Bool) -> String #
String representation of a flag-value pair.
dispFlagAssignment :: FlagAssignment -> Doc #
Pretty-prints a flag assignment.
showFlagAssignment :: FlagAssignment -> String #
Show flag assignment.
Since: Cabal-syntax-3.4.0.0
parsecFlagAssignment :: CabalParsing m => m FlagAssignment #
Parses a flag assignment.
parsecFlagAssignmentNonEmpty :: CabalParsing m => m FlagAssignment #
Parse a non-empty flag assignment
The flags have to explicitly start with minus or plus.
Since: Cabal-syntax-3.4.0.0
Legacy formats
legacyShowFlagAssignment :: FlagAssignment -> String #
We need this as far as we support custom setups older than 2.2.0.0
Since: Cabal-syntax-3.4.0.0
legacyShowFlagAssignment' :: FlagAssignment -> [String] #
Since: Cabal-syntax-3.4.0.0
legacyParsecFlagAssignment :: CabalParsing m => m FlagAssignment #
We need this as far as we support custom setups older than 2.2.0.0
Since: Cabal-syntax-3.4.0.0