module-management-0.20.2: testdata/debian/Debian/Repo/PackageID.hs
-- | The 'PackageID' type fully identifies a Debian package (source or
-- binary, depending on the n type variable) by name and version. This
-- corresponds to Cabal's Distribution.Cabal.PackageIdentifier.
{-# LANGUAGE FlexibleInstances, StandaloneDeriving, TypeSynonymInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Debian.Repo.PackageID
( PackageID(PackageID, packageVersion, packageName)
, prettyPackageID
, makeBinaryPackageID
, makeSourcePackageID
) where
import Data.Monoid ((<>))
import Debian.Pretty (ppPrint)
import Debian.Relation (BinPkgName(..), SrcPkgName(..))
import qualified Debian.Relation as B (PkgName)
import Debian.Version (DebianVersion, prettyDebianVersion)
import Text.PrettyPrint.HughesPJClass (Doc, text)
data PackageID n
= PackageID
{ packageName :: n
, packageVersion :: DebianVersion
} deriving (Eq, Ord, Show)
prettyPackageID :: B.PkgName n => PackageID n -> Doc
prettyPackageID p = ppPrint (packageName p) <> text "-" <> prettyDebianVersion (packageVersion p)
makeBinaryPackageID :: String -> DebianVersion -> PackageID BinPkgName
makeBinaryPackageID n v = PackageID (BinPkgName n) v
makeSourcePackageID :: String -> DebianVersion -> PackageID SrcPkgName
makeSourcePackageID n v = PackageID (SrcPkgName n) v