module Debian.Debianize.VersionSplits ( mapCabal , splitCabal ) where import Data.Lens.Lazy (modL) import Data.Map as Map (alter) import Data.Version (Version) import Debian.Debianize.Atoms (Atoms, debianNameMap) import Debian.Debianize.Types.VersionSplits (VersionSplits, makePackage, insertSplit) import Distribution.Package (PackageName) -- | Add a VersionSplits value to 'atoms' that maps the given cabal -- name 'pname' to the given debian name 'dname'. mapCabal :: PackageName -> String -> Atoms -> Atoms mapCabal pname dname atoms = modL debianNameMap (Map.alter f pname) atoms where f :: Maybe VersionSplits -> Maybe VersionSplits f Nothing = Just (makePackage dname) f (Just sp) = error $ "mapCabal - already mapped: " ++ show sp -- | Map the versions of 'pname' less than 'ver' to the given debian -- name 'ltname'. splitCabal :: PackageName -> String -> Version -> Atoms -> Atoms splitCabal pname ltname ver atoms = modL debianNameMap (Map.alter f pname) atoms where f :: Maybe VersionSplits -> Maybe VersionSplits f Nothing = error $ "splitCabal - not mapped: " ++ show pname f (Just sp) = Just (insertSplit ver ltname sp)