packages feed

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