packages feed

hix-0.7.0: lib/Hix/Managed/ManagedPackage.hs

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 targetNames =
  (targets, local, mutable)
  where
    mutable = nFlatten id (nMap (.mutable) targetPackages :: Packages MutableRanges)

    -- Remove the targets from the local deps
    local = nWithoutKeys tset (nFlatten id (nMap (.local) targetPackages :: Packages LocalRanges))

    targetPackages = nRestrictKeys tset packages

    tset = targetsSet targets

    targets = sortTargets (nMap nKeys allLocal) targetNames

    allLocal :: Packages LocalRanges
    allLocal = nMap (.local) packages