-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | RPM package name-version-release data types
--   
--   The library provides types related to RPM package
--   name-version-releases. There are modules for reading and showing:
--   
--   <ul>
--   <li>NV (name-version)</li>
--   <li>NVR (name-version-release)</li>
--   <li>NVRA (name-version-release.arch)</li>
--   <li>VerRel (version-release)</li>
--   <li>VerCmp for comparing RPM versions or releases (used to order
--   VerRel).</li>
--   </ul>
@package rpm-nvr
@version 0.1.2


-- | An NV type contains the name and version of a package only.
module Data.RPM.NV

-- | Package name-version type
data NV
NV :: String -> String -> NV
[name] :: NV -> String
[version] :: NV -> String

-- | Render an name-version
showNV :: NV -> String

-- | Read an NV
--   
--   Errors if not of the form "name-version"
readNV :: String -> NV

-- | Read a package name-version or return a failure string
eitherNV :: String -> Either String NV

-- | Maybe read an package name-version
maybeNV :: String -> Maybe NV
instance GHC.Classes.Eq Data.RPM.NV.NV


-- | Compare versions or releases using rpm's vercmp algorithm
module Data.RPM.VerCmp

-- | Compare two version numbers and return an <a>Ordering</a>.
--   
--   Native implementation of rpm's C vercmp
rpmVerCompare :: String -> String -> Ordering


-- | A type for carrying the version and release of an rpm package.
module Data.RPM.VerRel

-- | The version-release of an (rpm) package, which is ordered by
--   <tt>rpmVerCompare</tt> for version and release.
--   
--   FIXME: note currently rpmVerCompare is not used for Eq (like
--   codec-rpm).
data VerRel
VerRel :: String -> String -> VerRel
[vrVersion] :: VerRel -> String
[vrRelease] :: VerRel -> String

-- | Display a VerRel
showVerRel :: VerRel -> String

-- | Read a version-release
--   
--   Errors if malformed
readVerRel :: String -> VerRel

-- | Either read a package version-release or return an failure string
eitherVerRel :: String -> Either String VerRel

-- | Maybe read a package version-release
maybeVerRel :: String -> Maybe VerRel
instance GHC.Classes.Eq Data.RPM.VerRel.VerRel
instance GHC.Classes.Ord Data.RPM.VerRel.VerRel


-- | A type for name-version-release of an RPM package
module Data.RPM.NVR

-- | An rpm package name-version-release
data NVR
NVR :: String -> VerRel -> NVR
[nvrName] :: NVR -> String
[nvrVerRel] :: NVR -> VerRel

-- | render an name-version-release
showNVR :: NVR -> String

-- | read an NVR
--   
--   Errors if not of the form "name-version-release"
readNVR :: String -> NVR

-- | Either read a package name-version-release or return a failure string
eitherNVR :: String -> Either String NVR

-- | Maybe read a package name-version-release string
maybeNVR :: String -> Maybe NVR

-- | The version-release of an (rpm) package, which is ordered by
--   <tt>rpmVerCompare</tt> for version and release.
--   
--   FIXME: note currently rpmVerCompare is not used for Eq (like
--   codec-rpm).
data VerRel
VerRel :: String -> String -> VerRel
[vrVersion] :: VerRel -> String
[vrRelease] :: VerRel -> String
instance GHC.Classes.Eq Data.RPM.NVR.NVR


-- | A type for a (binary) RPM package.
module Data.RPM.NVRA

-- | RPM package with name, version-release, and architecture
--   
--   If arch is not needed use NVR instead.
--   
--   FIXME: add epoch field
data NVRA
NVRA :: String -> VerRel -> String -> NVRA
[rpmName] :: NVRA -> String
[rpmVerRel] :: NVRA -> VerRel
[rpmArch] :: NVRA -> String

-- | Parse an NVRA with arch suffix
--   
--   Errors if not of the form "name-version-release[.arch]"
readNVRA :: String -> NVRA

-- | Either read a name-version-release.arch or return a failure string
--   
--   Strips off ".rpm" extension and any directory path prefix.
eitherNVRA :: String -> Either String NVRA

-- | Maybe read an NVRA
maybeNVRA :: String -> Maybe NVRA

-- | Render an RpmPackage
showNVRA :: NVRA -> String

-- | Identifier for an RPM package identified by name and arch
showPkgIdent :: NVRA -> String

-- | Render the version-release of an NVRA
showPkgVerRel :: NVRA -> String
instance GHC.Classes.Ord Data.RPM.NVRA.NVRA
instance GHC.Classes.Eq Data.RPM.NVRA.NVRA


-- | This module re-exports most of the submodules.
module Data.RPM

-- | Map a name-version-release into a name-version
dropRelease :: NVR -> NV

-- | Add a release to name-version to make an NVR
addRelease :: NV -> String -> NVR

-- | Map a name-version-release.arch into a name-version-release
dropArch :: NVRA -> NVR

-- | Add an arch to NVR to make an NVRA
addArch :: NVR -> String -> NVRA
