packages feed

rds-data-0.0.0.3: testlib/Data/RdsData/Polysemy/Test/Workspace.hs

{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE FlexibleContexts  #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators     #-}

module Data.RdsData.Polysemy.Test.Workspace
  ( localWorkspace,
  ) where

import qualified Data.Text                      as T

import           HaskellWorks.Polysemy
import           HaskellWorks.Polysemy.Hedgehog
import           HaskellWorks.Polysemy.Prelude
import           Polysemy                       ()

localWorkspace :: ()
  => HasCallStack
  => Member (Embed IO) r
  => Member Hedgehog r
  => Member Log r
  => Text
  -> Sem
        ( Reader Workspace
        : Reader ProjectRoot
        : Reader PackagePath
        : Resource
        : r)
        ()
  -> Sem r ()
localWorkspace prefix f =
  withFrozenCallStack $ do
    cabalProjectDir <- findCabalProjectDir "."

    f & moduleWorkspace (T.unpack prefix)
      & runReader (ProjectRoot cabalProjectDir)
      & runReader (PackagePath "rds-data")
      & runResource