module Hix.Managed.ManagedPackage where
import Hix.Class.Map (nFlatten, nKeys, nMap, nRestrictKeys, nWithoutKeys)
import Hix.Data.PackageName (LocalPackage)
import qualified Hix.Managed.Data.ManagedPackage
import Hix.Managed.Data.ManagedPackage (ManagedPackage)
import Hix.Managed.Data.Mutable (LocalRanges, MutableRanges)
import Hix.Managed.Data.Packages (Packages)
import Hix.Managed.Data.Targets (Targets, sortTargets, targetsSet)
forTargets :: Packages ManagedPackage -> [LocalPackage] -> (Targets, LocalRanges, MutableRanges)
forTargets :: Packages ManagedPackage
-> [LocalPackage] -> (Targets, LocalRanges, MutableRanges)
forTargets Packages ManagedPackage
packages [LocalPackage]
targetNames =
(Targets
targets, LocalRanges
local, MutableRanges
mutable)
where
mutable :: MutableRanges
mutable = (VersionRange -> VersionRange)
-> Packages MutableRanges -> MutableRanges
forall map1 map2 map3 k1 k2 v1 v2 s1 s2.
(Monoid map2, NMap map1 k1 map2 LookupMonoid, NMap map2 k2 v1 s1,
NMap map3 k2 v2 s2) =>
(v1 -> v2) -> map1 -> map3
nFlatten VersionRange -> VersionRange
forall a. a -> a
id ((ManagedPackage -> MutableRanges)
-> Packages ManagedPackage -> Packages MutableRanges
forall map1 k v1 sort1 map2 v2 sort2.
(NMap map1 k v1 sort1, NMap map2 k v2 sort2) =>
(v1 -> v2) -> map1 -> map2
nMap (.mutable) Packages ManagedPackage
targetPackages :: Packages MutableRanges)
local :: LocalRanges
local = Set LocalPackage -> LocalRanges -> LocalRanges
forall map k v sort. NMap map k v sort => Set k -> map -> map
nWithoutKeys Set LocalPackage
tset ((VersionRange -> VersionRange)
-> Packages LocalRanges -> LocalRanges
forall map1 map2 map3 k1 k2 v1 v2 s1 s2.
(Monoid map2, NMap map1 k1 map2 LookupMonoid, NMap map2 k2 v1 s1,
NMap map3 k2 v2 s2) =>
(v1 -> v2) -> map1 -> map3
nFlatten VersionRange -> VersionRange
forall a. a -> a
id ((ManagedPackage -> LocalRanges)
-> Packages ManagedPackage -> Packages LocalRanges
forall map1 k v1 sort1 map2 v2 sort2.
(NMap map1 k v1 sort1, NMap map2 k v2 sort2) =>
(v1 -> v2) -> map1 -> map2
nMap (.local) Packages ManagedPackage
targetPackages :: Packages LocalRanges))
targetPackages :: Packages ManagedPackage
targetPackages = Set LocalPackage
-> Packages ManagedPackage -> Packages ManagedPackage
forall map k v sort. NMap map k v sort => Set k -> map -> map
nRestrictKeys Set LocalPackage
tset Packages ManagedPackage
packages
tset :: Set LocalPackage
tset = Targets -> Set LocalPackage
targetsSet Targets
targets
targets :: Targets
targets = Packages [LocalPackage] -> [LocalPackage] -> Targets
sortTargets ((LocalRanges -> [LocalPackage])
-> Packages LocalRanges -> Packages [LocalPackage]
forall map1 k v1 sort1 map2 v2 sort2.
(NMap map1 k v1 sort1, NMap map2 k v2 sort2) =>
(v1 -> v2) -> map1 -> map2
nMap LocalRanges -> [LocalPackage]
forall map k v sort. NMap map k v sort => map -> [k]
nKeys Packages LocalRanges
allLocal) [LocalPackage]
targetNames
allLocal :: Packages LocalRanges
allLocal :: Packages LocalRanges
allLocal = (ManagedPackage -> LocalRanges)
-> Packages ManagedPackage -> Packages LocalRanges
forall map1 k v1 sort1 map2 v2 sort2.
(NMap map1 k v1 sort1, NMap map2 k v2 sort2) =>
(v1 -> v2) -> map1 -> map2
nMap (.local) Packages ManagedPackage
packages