hackport-0.7.2.2: Hackage and Portage integration tool
LicenseGPL-3+
Maintainerhaskell@gentoo.org
Safe HaskellNone
LanguageHaskell2010

Portage.PackageId

Description

Portage package identifiers, which unlike Cabal ones include a category.

Synopsis

Documentation

newtype Category Source #

Constructors

Category 

Fields

Instances

Instances details
Eq Category Source # 
Instance details

Defined in Portage.PackageId

Ord Category Source # 
Instance details

Defined in Portage.PackageId

Read Category Source # 
Instance details

Defined in Portage.PackageId

Show Category Source # 
Instance details

Defined in Portage.PackageId

NFData Category Source # 
Instance details

Defined in Portage.PackageId

Methods

rnf :: Category -> () #

Pretty Category Source # 
Instance details

Defined in Portage.PackageId

Methods

pretty :: Category -> Doc

prettyVersioned :: CabalSpecVersion -> Category -> Doc

Parsec Category Source # 
Instance details

Defined in Portage.PackageId

Methods

parsec :: CabalParsing m => m Category

data PackageName Source #

Portage-style PackageName, containing a Category and a PackageName.

Constructors

PackageName 

Fields

Instances

Instances details
Eq PackageName Source # 
Instance details

Defined in Portage.PackageId

Ord PackageName Source # 
Instance details

Defined in Portage.PackageId

Read PackageName Source # 
Instance details

Defined in Portage.PackageId

Show PackageName Source # 
Instance details

Defined in Portage.PackageId

NFData PackageName Source # 
Instance details

Defined in Portage.PackageId

Methods

rnf :: PackageName -> () #

Pretty PackageName Source # 
Instance details

Defined in Portage.PackageId

Methods

pretty :: PackageName -> Doc

prettyVersioned :: CabalSpecVersion -> PackageName -> Doc

Parsec PackageName Source # 
Instance details

Defined in Portage.PackageId

Methods

parsec :: CabalParsing m => m PackageName

data PackageId Source #

Portage-style PackageId, containing a PackageName and a Version.

Constructors

PackageId 

Instances

Instances details
Eq PackageId Source # 
Instance details

Defined in Portage.PackageId

Ord PackageId Source # 
Instance details

Defined in Portage.PackageId

Read PackageId Source # 
Instance details

Defined in Portage.PackageId

Show PackageId Source # 
Instance details

Defined in Portage.PackageId

NFData PackageId Source # 
Instance details

Defined in Portage.PackageId

Methods

rnf :: PackageId -> () #

Pretty PackageId Source # 
Instance details

Defined in Portage.PackageId

Methods

pretty :: PackageId -> Doc

prettyVersioned :: CabalSpecVersion -> PackageId -> Doc

Parsec PackageId Source # 
Instance details

Defined in Portage.PackageId

Methods

parsec :: CabalParsing m => m PackageId

data Version Source #

Portage-style version type.

Constructors

Version 

Fields

Instances

Instances details
Eq Version Source # 
Instance details

Defined in Portage.Version

Methods

(==) :: Version -> Version -> Bool #

(/=) :: Version -> Version -> Bool #

Ord Version Source # 
Instance details

Defined in Portage.Version

Read Version Source # 
Instance details

Defined in Portage.Version

Show Version Source # 
Instance details

Defined in Portage.Version

NFData Version Source # 
Instance details

Defined in Portage.Version

Methods

rnf :: Version -> () #

Pretty Version Source #

Prints a valid Portage Version string.

Instance details

Defined in Portage.Version

Methods

pretty :: Version -> Doc

prettyVersioned :: CabalSpecVersion -> Version -> Doc

Parsec Version Source #

Version parser using Parsec.

Instance details

Defined in Portage.Version

Methods

parsec :: CabalParsing m => m Version

mkPackageName :: String -> String -> PackageName Source #

Create a PackageName from supplied category and package name Strings.

fromCabalPackageId :: Category -> PackageIdentifier -> PackageId Source #

Create a PackageId from a Category and PackageIdentifier.

toCabalPackageId :: PackageId -> Maybe PackageIdentifier Source #

Convert a PackageId into a Maybe PackageIdentifier.

parseFriendlyPackage :: String -> Either String (Maybe Category, PackageName, Maybe Version) Source #

Parse a String as a package in the form of [category/]name[-version]:

Note that we cannot use the parsec function to parse the PackageName, since it fails the entire parse if it tries to parse a Version. See parseCabalPackageName below.

If parsing a valid package string:

>>> parseFriendlyPackage "category-name/package-name1-0.0.0.1a_beta2-r4"
Right (Just (Category {unCategory = "category-name"}),PackageName "package-name1",Just (Version {versionNumber = [0,0,0,1], versionChar = Just 'a', versionSuffix = [Beta 2], versionRevision = 4}))

If malformed, return an error string:

>>> parseFriendlyPackage "category-name/package-name-1-0.0.0.1a_beta2-r4"
Left ...

normalizeCabalPackageName :: PackageName -> PackageName Source #

Convert a PackageName into lowercase. Internally uses cabal_pn_to_PN.

>>> normalizeCabalPackageName (Cabal.mkPackageName "FooBar1")
PackageName "foobar1"

normalizeCabalPackageId :: PackageIdentifier -> PackageIdentifier Source #

Apply normalizeCabalPackageName to the PackageName of a supplied PackageIdentifier.

filePathToPackageId :: Category -> FilePath -> Maybe PackageId Source #

Maybe generate a PackageId from a FilePath. Note that the FilePath must have its file extension stripped before being passed to filePathToPackageId.

>>> filePathToPackageId (Category "dev-haskell") "foo-bar2-3.0.0b_rc2-r1"
Just (PackageId {packageId = PackageName {category = Category {unCategory = "dev-haskell"}, cabalPkgName = PackageName "foo-bar2"}, pkgVersion = Version {versionNumber = [3,0,0], versionChar = Just 'b', versionSuffix = [RC 2], versionRevision = 1}})

packageIdToFilePath :: PackageId -> FilePath Source #

Transform a PackageId into a FilePath.

>>> packageIdToFilePath (PackageId (PackageName (Category "dev-haskell") (Cabal.mkPackageName "foo-bar2")) (Portage.Version [3,0,0] (Just 'b') [Portage.RC 2] 1 ))
"dev-haskell/foo-bar2/foo-bar2-3.0.0b_rc2-r1.ebuild"

cabal_pn_to_PN :: PackageName -> String Source #

Pretty-print a lowercase PackageName.

Note the difference between this function and normalizeCabalPackageName: this function returns a String, the other a PackageName.

>>> cabal_pn_to_PN (Cabal.mkPackageName "FooBar1")
"foobar1"