| 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 Strings.
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"