module Hix.Managed.Handlers.Hackage.Prod where

import Data.IORef (newIORef)

import Hix.Hackage (fetchHashHackageCached)
import qualified Hix.Managed.Handlers.Hackage
import Hix.Managed.Handlers.Hackage (HackageHandlers (HackageHandlers))

handlersProd ::
  MonadIO m =>
  m HackageHandlers
handlersProd :: forall (m :: * -> *). MonadIO m => m HackageHandlers
handlersProd = do
  IORef (Map Text SourceHash)
hashCache <- IO (IORef (Map Text SourceHash)) -> m (IORef (Map Text SourceHash))
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (Map Text SourceHash -> IO (IORef (Map Text SourceHash))
forall a. a -> IO (IORef a)
newIORef Map Text SourceHash
forall a. Monoid a => a
mempty)
  pure HackageHandlers {
    $sel:fetchHash:HackageHandlers :: PackageId -> M SourceHash
fetchHash = IORef (Map Text SourceHash) -> PackageId -> M SourceHash
fetchHashHackageCached IORef (Map Text SourceHash)
hashCache
  }