Cabal-1.20.0.4: A framework for packaging Haskell software

Portabilityportable
Maintainercabal-devel@haskell.org
Safe HaskellNone

Distribution.PackageDescription.Parse

Contents

Description

This defined parsers and partial pretty printers for the .cabal format. Some of the complexity in this module is due to the fact that we have to be backwards compatible with old .cabal files, so there's code to translate into the newer structure.

Synopsis

Package descriptions

readPackageDescription :: Verbosity -> FilePath -> IO GenericPackageDescription

Parse the given package file.

parsePackageDescription :: String -> ParseResult GenericPackageDescription

Parses the given file into a GenericPackageDescription.

In Cabal 1.2 the syntax for package descriptions was changed to a format with sections and possibly indented property descriptions.

Parsing

data ParseResult a

Constructors

ParseFailed PError 
ParseOk [PWarning] a 

Instances

Monad ParseResult 
Functor ParseResult 
Applicative ParseResult 
Show a => Show (ParseResult a) 

data FieldDescr a

Field descriptor. The parameter a parameterizes over where the field's value is stored in.

Constructors

FieldDescr 

Fields

fieldName :: String
 
fieldGet :: a -> Doc
 
fieldSet :: LineNo -> String -> a -> ParseResult a

fieldSet n str x Parses the field value from the given input string str and stores the result in x if the parse was successful. Otherwise, reports an error on line number n.

type LineNo = Int

Supplementary build information

writeHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()

testSuiteFieldDescrs :: [FieldDescr TestSuiteStanza]