packages feed

hix-0.9.0: lib/Hix/Managed/Targets.hs

module Hix.Managed.Targets where

import qualified Data.Set as Set

import Hix.Class.Map (nMapWithKey, nRestrictKeys, NMap)
import Hix.Data.PackageName (LocalPackage)
import Hix.Managed.Data.Packages (Packages)
import Hix.Managed.Data.Targets (Targets (..), unsortedTargets)

onlyTargets :: Targets -> Packages a -> Packages a
onlyTargets targets =
  nRestrictKeys (unsortedTargets targets)

overTargets ::
  NMap map LocalPackage a sort =>
  Targets ->
  (a -> a) ->
  map ->
  map
overTargets (unsortedTargets -> targets) f =
  nMapWithKey checked
  where
    checked package a
      | Set.member package targets
      = f a
      | otherwise
      = a

member :: LocalPackage -> Targets -> Bool
member package (unsortedTargets -> targets) = package `elem` targets