Safe Haskell | None |
---|
Debian.Control.Policy
Contents
Description
Access to things that Debian policy says should be in a valid control file. The pure functions will not throw ControlFileError if they are operating on a DebianControl value returned by validateDebianControl. However, they might if they are created using unsafeDebianControl.
- data DebianControl
- validateDebianControl :: MonadCatch m => Control' Text -> m (Either ControlFileError DebianControl)
- unsafeDebianControl :: Control' Text -> DebianControl
- parseDebianControlFromFile :: FilePath -> IO (Either ControlFileError DebianControl)
- parseDebianControl :: MonadCatch m => String -> Text -> m (Either ControlFileError DebianControl)
- data ControlFileError
- = NoParagraphs { }
- | NoBinaryParagraphs { }
- | MissingField { }
- | ParseRelationsError {
- locs :: [Loc]
- parseError :: ParseError
- | ParseControlError {
- locs :: [Loc]
- parseError :: ParseError
- | IOError { }
- class HasDebianControl a where
- debianControl :: a -> DebianControl
- debianSourceParagraph :: HasDebianControl a => a -> Paragraph' Text
- debianBinaryParagraphs :: HasDebianControl a => a -> [Paragraph' Text]
- debianPackageParagraphs :: HasDebianControl a => a -> (Paragraph' Text, [Paragraph' Text])
- debianPackageNames :: HasDebianControl a => a -> (SrcPkgName, [BinPkgName])
- debianSourcePackageName :: HasDebianControl a => a -> SrcPkgName
- debianBinaryPackageNames :: HasDebianControl a => a -> [BinPkgName]
- debianRelations :: HasDebianControl a => String -> a -> Either ControlFileError (Maybe Relations)
- debianBuildDeps :: HasDebianControl a => a -> Maybe Relations
- debianBuildDepsIndep :: HasDebianControl a => a -> Maybe Relations
Validated debian control file type
data DebianControl Source
Opaque (constructor not exported) type to hold a validated Debian Control File
Instances
validateDebianControl :: MonadCatch m => Control' Text -> m (Either ControlFileError DebianControl)Source
Validate and return a control file in an opaque wrapper. May throw a ControlFileError. Currently we only verify that it has a Source field in the first paragraph and one or more subsequent paragraphs each with a Package field, and no syntax errors in the build dependencies (though they may be absent.)
parseDebianControl :: MonadCatch m => String -> Text -> m (Either ControlFileError DebianControl)Source
data ControlFileError Source
Errors that control files might throw, with source file name and line number generated by template haskell.
Constructors
NoParagraphs | |
NoBinaryParagraphs | |
MissingField | |
ParseRelationsError | |
Fields
| |
ParseControlError | |
Fields
| |
IOError | |
Class of things that contain one DebianControl value
class HasDebianControl a whereSource
Class of things that contain a validated Debian control file.
Methods
debianControl :: a -> DebianControlSource
Instances
Pure functions that operate on validated control files
debianSourceParagraph :: HasDebianControl a => a -> Paragraph' TextSource
debianBinaryParagraphs :: HasDebianControl a => a -> [Paragraph' Text]Source
debianPackageParagraphs :: HasDebianControl a => a -> (Paragraph' Text, [Paragraph' Text])Source
debianPackageNames :: HasDebianControl a => a -> (SrcPkgName, [BinPkgName])Source
debianSourcePackageName :: HasDebianControl a => a -> SrcPkgNameSource
debianBinaryPackageNames :: HasDebianControl a => a -> [BinPkgName]Source
debianRelations :: HasDebianControl a => String -> a -> Either ControlFileError (Maybe Relations)Source
This could access fields we haven't validated, so it can return an error. Additionally, the field might be absent, in which case it returns Nothing.
debianBuildDeps :: HasDebianControl a => a -> Maybe RelationsSource
debianBuildDepsIndep :: HasDebianControl a => a -> Maybe RelationsSource