License | GPL-3+ |
---|---|
Maintainer | haskell@gentoo.org |
Safe Haskell | None |
Language | Haskell2010 |
Portage.PackageId
Description
Portage package identifiers, which unlike Cabal ones include a category.
Synopsis
- newtype Category = Category {
- unCategory :: String
- data PackageName = PackageName {
- category :: Category
- cabalPkgName :: PackageName
- data PackageId = PackageId {}
- data Version = Version {
- versionNumber :: [Int]
- versionChar :: Maybe Char
- versionSuffix :: [Suffix]
- versionRevision :: Int
- mkPackageName :: String -> String -> PackageName
- fromCabalPackageId :: Category -> PackageIdentifier -> PackageId
- toCabalPackageId :: PackageId -> Maybe PackageIdentifier
- parseFriendlyPackage :: String -> Either String (Maybe Category, PackageName, Maybe Version)
- normalizeCabalPackageName :: PackageName -> PackageName
- normalizeCabalPackageId :: PackageIdentifier -> PackageIdentifier
- filePathToPackageId :: Category -> FilePath -> Maybe PackageId
- packageIdToFilePath :: PackageId -> FilePath
- cabal_pn_to_PN :: PackageName -> String
Documentation
Constructors
Category | |
Fields
|
data PackageName Source #
Portage-style PackageName
, containing a Category
and a PackageName
.
Constructors
PackageName | |
Fields
|
Instances
Portage-style PackageId
, containing a PackageName
and a Version
.
Constructors
PackageId | |
Fields |
Instances
Eq PackageId Source # | |
Ord PackageId Source # | |
Read PackageId Source # | |
Show PackageId Source # | |
NFData PackageId Source # | |
Defined in Portage.PackageId | |
Pretty PackageId Source # | |
Defined in Portage.PackageId | |
Parsec PackageId Source # | |
Defined in Portage.PackageId |
Portage-style version type.
Constructors
Version | |
Fields
|
Instances
Eq Version Source # | |
Ord Version Source # | |
Read Version Source # | |
Show Version Source # | |
NFData Version Source # | |
Defined in Portage.Version | |
Pretty Version Source # | Prints a valid Portage |
Defined in Portage.Version | |
Parsec Version Source # |
|
Defined in Portage.Version |
mkPackageName :: String -> String -> PackageName Source #
Create a PackageName
from supplied category and package name String
s.
fromCabalPackageId :: Category -> PackageIdentifier -> PackageId Source #
toCabalPackageId :: PackageId -> Maybe PackageIdentifier Source #
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}})
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"