packages feed

effectful-zoo-0.0.3.0: components/rds-data-test/Effectful/Zoo/RdsData/Test/Workspace.hs

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

module Effectful.Zoo.RdsData.Test.Workspace
  ( localWorkspace,
  ) where

import Data.Text qualified as T
import Effectful
import Effectful.Concurrent
import Effectful.Zoo.Core
import Effectful.Zoo.Environment
import Effectful.Zoo.Error.Static
import Effectful.Zoo.FileSystem
import Effectful.Zoo.Hedgehog.Api
import Effectful.Zoo.Hedgehog.Api.Workspace
import Effectful.Zoo.Hedgehog.Effect.Hedgehog
import Effectful.Zoo.Log.Dynamic
import Effectful.Zoo.Reader.Static
import HaskellWorks.Prelude

localWorkspace :: ()
  => HasCallStack
  => r <: Concurrent
  => r <: Environment
  => r <: Error Failure
  => r <: FileSystem
  => r <: Hedgehog
  => r <: Log Text
  => Text
  -> Eff
        ( Reader Workspace
        : Reader ProjectRoot
        : Reader PackagePath
        : r)
        ()
  -> Eff r ()
localWorkspace prefix f =
  withFrozenCallStack $ do
    cabalProjectDir <- findCabalProjectDir "."

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