module-management-0.20.2: testdata/split1-expected/Debian/Repo/Package/SourcePackageBinaryIDs.hs
{-# LANGUAGE PackageImports, ScopedTypeVariables, TupleSections #-}
{-# OPTIONS -fno-warn-name-shadowing #-}
module Debian.Repo.Package.SourcePackageBinaryIDs
( sourcePackageBinaryIDs
) where
import Data.List as List (map)
import qualified Data.Text as T (unpack)
import Debian.Arch (Arch(Source))
import Debian.Control (formatParagraph)
import qualified Debian.Control.Text as B (fieldValue)
import Debian.Relation (BinPkgName(..))
import Debian.Repo.Types.PackageIndex (makeBinaryPackageID, PackageID, PackageIndex, SourcePackage(sourceParagraph))
import Debian.Version (parseDebianVersion)
import Text.Regex (mkRegex, splitRegex)
sourcePackageBinaryIDs :: Arch -> PackageIndex -> SourcePackage -> [PackageID BinPkgName]
sourcePackageBinaryIDs Source _ _ = error "invalid argument"
sourcePackageBinaryIDs arch sourceIndex package =
case (B.fieldValue "Version" info, B.fieldValue "Binary" info) of
(Just version, Just names) -> List.map (binaryID (parseDebianVersion (T.unpack version))) $ splitRegex (mkRegex "[ ,]+") (T.unpack names)
_ -> error ("Source package info has no 'Binary' field:\n" ++ (T.unpack . formatParagraph $ info))
where
-- Note that this version number may be wrong - we need to
-- look at the Source field of the binary package info.
binaryID version name = makeBinaryPackageID name version
-- binaryIndex = sourceIndex { packageIndexArch = arch }
info = sourceParagraph package