packages feed

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

module Hix.Managed.Overrides where

import qualified Data.Map.Strict as Map

import Hix.Data.Monad (M)
import Hix.Data.Overrides (Override (..), Overrides (Overrides))
import qualified Hix.Data.PackageId
import Hix.Data.PackageId (PackageId (PackageId))
import Hix.Data.PackageName (PackageName)
import qualified Hix.Managed.Handlers.Hackage
import Hix.Managed.Handlers.Hackage (HackageHandlers)

packageOverride ::
  HackageHandlers ->
  PackageId ->
  M (PackageName, Override)
packageOverride handlers package@PackageId {name, version} = do
  hash <- handlers.fetchHash package
  pure (name, Override {..})

packageOverrides ::
  HackageHandlers ->
  [PackageId] ->
  M Overrides
packageOverrides handlers versions =
  Overrides . Map.fromList <$> traverse (packageOverride handlers) versions