packages feed

effectful-zoo-0.0.3.0: effectful-zoo.cabal

cabal-version: 3.4

name:                   effectful-zoo
version:                0.0.3.0
synopsis:               Effectful effects for testing
description:            See https://hackage.haskell.org/package/effectful-zoo/docs/effectful-zoo.html
category:               Development
homepage:               https://github.com/haskell-works/effectful-zoo#readme
bug-reports:            https://github.com/haskell-works/effectful-zoo/issues
author:                 John Ky
maintainer:             newhoggy@gmail.com
copyright:              2024 John Ky
license:                BSD-3-Clause
license-file:           LICENSE
build-type:             Simple
extra-doc-files:        README.md
                        CHANGELOG.md

flag dev
  description: Enable development mode
  manual: True
  default: False

source-repository head
  type: git
  location: https://github.com/haskell-works/effectful-zoo

common base                       { build-depends: base                       >= 4.17.2.1   && < 4.20   }

common aeson                      { build-depends: aeson                      >= 2.2.3      && < 3      }
common aeson-pretty               { build-depends: aeson-pretty               >= 0.8.10     && < 1      }
common amazonka                   { build-depends: amazonka                   >= 2          && < 3      }
common amazonka-core              { build-depends: amazonka-core              >= 2          && < 3      }
common amazonka-rds               { build-depends: amazonka-rds               >= 2          && < 3      }
common amazonka-rds-data          { build-depends: amazonka-rds-data          >= 2          && < 3      }
common amazonka-secretsmanager    { build-depends: amazonka-secretsmanager    >= 2          && < 3      }
common base64-bytestring          { build-depends: base64-bytestring          >= 1.2.1      && < 2      }
common binary                     { build-depends: binary                     >= 0.8.9      && < 0.9    }
common blockfrost-api             { build-depends: blockfrost-api             >= 0.11       && < 0.12   }
common blockfrost-client          { build-depends: blockfrost-client          >= 0.8        && < 0.9    }
common bytestring                 { build-depends: bytestring                 >= 0.11       && < 1      }
common directory                  { build-depends: directory                  >= 1.2        && < 2      }
common effectful                  { build-depends: effectful                  >= 2.5        && < 3      }
common effectful-core             { build-depends: effectful-core             >= 2.5        && < 3      }
common effectful-plugin           { build-depends: effectful-plugin           >= 1.1.0.4    && < 2      }
common exceptions                 { build-depends: exceptions                 >= 0.10       && < 0.11   }
common filepath                   { build-depends: filepath                   >= 1.4        && < 2      }
common generic-lens               { build-depends: generic-lens               >= 2.2.2      && < 3      }
common hedgehog                   { build-depends: hedgehog                   >= 1.5        && < 2      }
common http-conduit               { build-depends: http-conduit               >= 2.3.9.1    && < 3      }
common HUnit                      { build-depends: HUnit                      >= 1.6.2      && < 2      }
common hw-prelude                 { build-depends: hw-prelude                 >= 0.0.4.4    && < 0.1    }
common lifted-base                { build-depends: lifted-base                >= 0.2.3.12   && < 0.3    }
common microlens                  { build-depends: microlens                  >= 0.4.13.1   && < 0.5    }
common process                    { build-depends: process                    >= 1.6.19     && < 2      }
common rds-data-codecs            { build-depends: rds-data:codecs            >= 0.1.1.1    && < 0.2    }
common resourcet                  { build-depends: resourcet                  >= 1.3        && < 2      }
common resourcet-effectful        { build-depends: resourcet-effectful        >= 1.0.1      && < 2      }
common stm                        { build-depends: stm                        >= 2.5.1      && < 3      }
common tasty                      { build-depends: tasty                      >= 1.5        && < 2      }
common tasty-discover             { build-depends: tasty-discover             >= 5          && < 6      }
common tasty-hedgehog             { build-depends: tasty-hedgehog             >= 1.1.0.0    && < 1.5    }
common temporary                  { build-depends: temporary                  >= 1.3        && < 2      }
common testcontainers             { build-depends: testcontainers             >= 0.5        && < 0.6    }
common text                       { build-depends: text                       >= 2          && < 3      }
common time                       { build-depends: time                       >= 1.12       && < 2      }
common transformers               { build-depends: transformers               >= 0.5.6.2    && < 0.7    }
common ulid                       { build-depends: ulid                       >= 0.3.2      && < 0.4    }
common uuid                       { build-depends: uuid                       >= 1.3.16     && < 2      }
common yaml                       { build-depends: yaml                       >= 0.11.11.2  && < 1      }

common effectful-zoo-amazonka                   { build-depends: effectful-zoo:amazonka                   }
common effectful-zoo-core                       { build-depends: effectful-zoo:core                       }
common effectful-zoo-hedgehog                   { build-depends: effectful-zoo:hedgehog                   }
common effectful-zoo-rds-data                   { build-depends: effectful-zoo:rds-data                   }
common effectful-zoo-testcontainers-localstack  { build-depends: effectful-zoo:testcontainers-localstack  }

common project-config
  default-extensions:   AllowAmbiguousTypes
                        ApplicativeDo
                        BlockArguments
                        DataKinds
                        DefaultSignatures
                        DeriveAnyClass
                        DerivingStrategies
                        DerivingVia
                        DisambiguateRecordFields
                        DuplicateRecordFields
                        FunctionalDependencies
                        GADTs
                        ImportQualifiedPost
                        LambdaCase
                        LiberalTypeSynonyms
                        MonadComprehensions
                        MultiWayIf
                        NoFieldSelectors
                        NoImplicitPrelude
                        OverloadedLabels
                        OverloadedLists
                        OverloadedRecordDot
                        OverloadedStrings
                        PackageImports
                        PartialTypeSignatures
                        PatternSynonyms
                        QuantifiedConstraints
                        QuasiQuotes
                        RecordWildCards
                        RecursiveDo
                        RoleAnnotations
                        TemplateHaskell
                        TypeFamilies
                        TypeFamilyDependencies
                        UndecidableInstances
                        UnicodeSyntax
                        ViewPatterns
  ghc-options:          -Wall
                        -Widentities
                        -Wincomplete-uni-patterns
                        -Wmissing-deriving-strategies
                        -Wredundant-constraints
                        -Wunused-packages
  default-language:     GHC2021
  if (flag(dev))
    ghc-options:        -Werror

library core
  import:               base, project-config,
                        aeson,
                        bytestring,
                        directory,
                        effectful-core,
                        effectful-core,
                        effectful-plugin,
                        effectful,
                        hw-prelude,
                        process,
                        resourcet-effectful,
                        text,
                        temporary,
                        time,
                        yaml,
  visibility:           public
  exposed-modules:      Effectful.Zoo.Aeson
                        Effectful.Zoo.Console.Data.Writer
                        Effectful.Zoo.Console.Dynamic
                        Effectful.Zoo.Console.Dynamic.Api
                        Effectful.Zoo.Console.Dynamic.Effect
                        Effectful.Zoo.Console.Dynamic.Run
                        Effectful.Zoo.Console.Effect
                        Effectful.Zoo.Console.Static
                        Effectful.Zoo.Core
                        Effectful.Zoo.DataLog.Api
                        Effectful.Zoo.DataLog.Data.DataLogger
                        Effectful.Zoo.DataLog.Data.LogEntry
                        Effectful.Zoo.DataLog.Dynamic
                        Effectful.Zoo.DataLog.Static
                        Effectful.Zoo.Environment
                        Effectful.Zoo.Error.Dynamic
                        Effectful.Zoo.Error.Static
                        Effectful.Zoo.Errors.EnvironmentVariableInvalid
                        Effectful.Zoo.Errors.EnvironmentVariableMissing
                        Effectful.Zoo.Exception
                        Effectful.Zoo.FileSystem
                        Effectful.Zoo.Function
                        Effectful.Zoo.Lazy.Dynamic
                        Effectful.Zoo.Log.Api
                        Effectful.Zoo.Log.Api.Generic
                        Effectful.Zoo.Log.Api.LazyText
                        Effectful.Zoo.Log.Api.Render
                        Effectful.Zoo.Log.Api.String
                        Effectful.Zoo.Log.Api.Text
                        Effectful.Zoo.Log.Data.Logger
                        Effectful.Zoo.Log.Data.LogMessage
                        Effectful.Zoo.Log.Data.Severity
                        Effectful.Zoo.Log.Dynamic
                        Effectful.Zoo.Log.Static
                        Effectful.Zoo.Prim
                        Effectful.Zoo.Process
                        Effectful.Zoo.Reader.Static
                        Effectful.Zoo.Resource
                        Effectful.Zoo.Unsafe
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/core

library amazonka
  import:               base, project-config,
                        amazonka,
                        bytestring,
                        effectful,
                        effectful-core,
                        effectful-plugin,
                        effectful-zoo-core,
                        generic-lens,
                        hw-prelude,
                        microlens,
                        resourcet,
                        resourcet-effectful,
                        text,
                        time,
  visibility:           public
  exposed-modules:      Effectful.Zoo.Amazonka.Api
                        Effectful.Zoo.Amazonka.Api.Discover
                        Effectful.Zoo.Amazonka.Api.Log
                        Effectful.Zoo.Amazonka.Api.Run
                        Effectful.Zoo.Amazonka.Api.Send
                        Effectful.Zoo.Amazonka.Data
                        Effectful.Zoo.Amazonka.Data.AwsError
                        Effectful.Zoo.Amazonka.Data.AwsEnv
                        Effectful.Zoo.Amazonka.Data.AwsLogEntry
                        Effectful.Zoo.Amazonka.Data.AwsLogLevel
                        Effectful.Zoo.Amazonka.Data.AwsRequest
                        Effectful.Zoo.Amazonka.Data.AwsResponse
                        Effectful.Zoo.Amazonka.Data.AwsService
                        Effectful.Zoo.Amazonka.Dynamic
                        Effectful.Zoo.Amazonka.Static
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/amazonka

library blockfrost
  import:               base, project-config,
                        blockfrost-api,
                        blockfrost-client,
                        effectful-core,
                        effectful-plugin,
                        effectful-zoo-core,
                        hw-prelude,
                        text,
  visibility:           public
  exposed-modules:      Effectful.Zoo.Blockfrost
                        Effectful.Zoo.Blockfrost.Api
                        Effectful.Zoo.Blockfrost.Types
                        Effectful.Zoo.Blockfrost.Dynamic
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/blockfrost

library rds-data
  import:               base, project-config,
                        aeson,
                        amazonka,
                        amazonka-rds-data,
                        bytestring,
                        effectful-core,
                        effectful-plugin,
                        effectful-zoo-amazonka,
                        effectful-zoo-core,
                        generic-lens,
                        hw-prelude,
                        microlens,
                        rds-data-codecs,
                        text,
  visibility:           public
  exposed-modules:      Effectful.Zoo.RdsData.Core
                        Effectful.Zoo.RdsData.Errors
                        Effectful.Zoo.RdsData.Errors.RdsDataError
                        Effectful.Zoo.RdsData.Migration
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/rds-data

library rds-data-test
  import:               base, project-config,
                        aeson,
                        amazonka,
                        amazonka-rds,
                        amazonka-secretsmanager,
                        base64-bytestring,
                        bytestring,
                        effectful,
                        effectful-core,
                        effectful-plugin,
                        effectful-zoo-amazonka,
                        effectful-zoo-core,
                        effectful-zoo-hedgehog,
                        effectful-zoo-testcontainers-localstack,
                        generic-lens,
                        hw-prelude,
                        microlens,
                        rds-data-codecs,
                        text,
                        uuid,
  visibility:           public
  exposed-modules:      Effectful.Zoo.RdsData.Test.Cluster
                        Effectful.Zoo.RdsData.Test.Env
                        Effectful.Zoo.RdsData.Test.Workspace
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/rds-data-test

library hedgehog
  import:               base, project-config,
                        aeson-pretty,
                        aeson,
                        binary,
                        bytestring,
                        effectful-core,
                        effectful-plugin,
                        effectful-zoo-core,
                        effectful,
                        exceptions,
                        filepath,
                        hedgehog,
                        hw-prelude,
                        lifted-base,
                        resourcet,
                        stm,
                        tasty-discover,
                        tasty-hedgehog,
                        tasty,
                        text,
                        time,
                        transformers,
                        ulid,
                        yaml,
  visibility:           public
  exposed-modules:      Effectful.Zoo.Hedgehog
                        Effectful.Zoo.Hedgehog.Api
                        Effectful.Zoo.Hedgehog.Api.Assert
                        Effectful.Zoo.Hedgehog.Api.Failure
                        Effectful.Zoo.Hedgehog.Api.Gen
                        Effectful.Zoo.Hedgehog.Api.Gen.Time
                        Effectful.Zoo.Hedgehog.Api.Gen.Ulid
                        Effectful.Zoo.Hedgehog.Api.Hedgehog
                        Effectful.Zoo.Hedgehog.Api.Internal.Cabal
                        Effectful.Zoo.Hedgehog.Api.Internal.Cabal.Types
                        Effectful.Zoo.Hedgehog.Api.Internal.FilePath
                        Effectful.Zoo.Hedgehog.Api.Internal.OS
                        Effectful.Zoo.Hedgehog.Api.Journal
                        Effectful.Zoo.Hedgehog.Api.MonadAssertion
                        Effectful.Zoo.Hedgehog.Api.Process
                        Effectful.Zoo.Hedgehog.Api.Process.Internal
                        Effectful.Zoo.Hedgehog.Api.Range
                        Effectful.Zoo.Hedgehog.Api.Stack
                        Effectful.Zoo.Hedgehog.Api.Tasty
                        Effectful.Zoo.Hedgehog.Api.Tasty.Orphans
                        Effectful.Zoo.Hedgehog.Api.Workspace
                        Effectful.Zoo.Hedgehog.Data
                        Effectful.Zoo.Hedgehog.Data.PackagePath
                        Effectful.Zoo.Hedgehog.Data.ProjectRoot
                        Effectful.Zoo.Hedgehog.Data.PropertyTest
                        Effectful.Zoo.Hedgehog.Data.TestResult
                        Effectful.Zoo.Hedgehog.Data.UnitTest
                        Effectful.Zoo.Hedgehog.Data.Workspace
                        Effectful.Zoo.Hedgehog.Effect.Hedgehog
                        Effectful.Zoo.Hedgehog.Effect.HedgehogGen
                        Effectful.Zoo.Hedgehog.Effect.Run
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/hedgehog

library hunit
  import:               base, project-config,
                        hedgehog,
                        HUnit,
                        hw-prelude,
  visibility:           public
  exposed-modules:      Effectful.Zoo.HUnit
  hs-source-dirs:       components/hunit

library testcontainers-localstack
  import:               base, project-config,
                        aeson,
                        amazonka,
                        bytestring,
                        effectful-core,
                        effectful-plugin,
                        effectful-zoo-core,
                        generic-lens,
                        http-conduit,
                        hw-prelude,
                        microlens,
                        testcontainers,
                        text,
                        time,
  visibility:           public
  exposed-modules:      Effectful.Zoo.TestContainers.LocalStack
                        Effectful.Zoo.TestContainers.LocalStack.Types
  ghc-options:          -fplugin=Effectful.Plugin
  hs-source-dirs:       components/testcontainers-localstack

test-suite effectful-zoo-test
  import:               base, project-config,
                        effectful-zoo-hedgehog,
                        hedgehog,
                        hw-prelude,
                        tasty,
                        tasty-discover,
  type:                 exitcode-stdio-1.0
  main-is:              Main.hs
  other-modules:        Effectful.Zoo.Hedgehog.Test.PropertySpec
  build-tool-depends:   tasty-discover:tasty-discover
  hs-source-dirs:       components/hedgehog-test
  ghc-options:          -threaded
                        -rtsopts
                        -with-rtsopts=-N