packages feed

hw-polysemy-0.2.14.6: hw-polysemy.cabal

cabal-version:          3.4
name:                   hw-polysemy
version:                0.2.14.6
synopsis:               Opinionated polysemy library
description:            Opinionated polysemy library.
license:                Apache-2.0
license-file:           LICENSE
author:                 John Ky
maintainer:             newhoggy@gmail.com
copyright:              2024 John Ky
category:               Development
build-type:             Simple
extra-doc-files:        CHANGELOG.md
extra-source-files:     README.md

source-repository head
  type:                 git
  location:             https://github.com/haskell-works/hw-polysemy

common base                       { build-depends: base                       >= 4.13       && < 5      }

common aeson                      { build-depends: aeson                                       < 2.3    }
common aeson-pretty               { build-depends: aeson-pretty                                < 0.9    }
common async                      { build-depends: async                                       < 2.3    }
common amazonka                   { build-depends: amazonka                   >= 2          && < 3      }
common amazonka-s3                { build-depends: amazonka-s3                >= 2          && < 3      }
common binary                     { build-depends: binary                     >= 0.8.9      && < 0.9    }
common bytestring                 { build-depends: bytestring                                  < 0.13   }
common contravariant              { build-depends: contravariant                               < 1.6    }
common Diff                       { build-depends: Diff                                        < 0.6    }
common directory                  { build-depends: directory                                   < 1.4    }
common exceptions                 { build-depends: exceptions                                  < 0.11   }
common filepath                   { build-depends: filepath                                    < 1.6    }
common generic-lens               { build-depends: generic-lens                                < 2.3    }
common ghc-prim                   { build-depends: ghc-prim                                    < 0.12   }
common hedgehog                   { build-depends: hedgehog                                    < 1.6    }
common http-conduit               { build-depends: http-conduit               >= 2.3        && < 2.4    }
common lens                       { build-depends: lens                                        < 5.4    }
common mtl                        { build-depends: mtl                                         < 2.4    }
common network                    { build-depends: network                                     < 3.3    }
common polysemy                   { build-depends: polysemy                                    < 2      }
common polysemy-log               { build-depends: polysemy-log               >= 0.11       && < 1      }
common polysemy-plugin            { build-depends: polysemy-plugin                             < 0.5    }
common polysemy-time              { build-depends: polysemy-time                               < 1      }
common prettyprinter              { build-depends: prettyprinter                               < 1.8    }
common process                    { build-depends: process                                     < 1.7    }
common resourcet                  { build-depends: resourcet                                   < 1.4    }
common stm                        { build-depends: stm                                         < 2.6    }
common tasty                      { build-depends: tasty                                       < 1.6    }
common tasty-discover             { build-depends: tasty-discover                              < 6      }
common tasty-hedgehog             { build-depends: tasty-hedgehog                              < 1.5    }
common temporary                  { build-depends: temporary                                   < 1.4    }
common testcontainers             { build-depends: testcontainers                              < 0.6    }
common text                       { build-depends: text                                        < 3      }
common time                       { build-depends: time                                        < 2      }
common transformers               { build-depends: transformers                                < 0.7    }
common unliftio                   { build-depends: unliftio                                    < 0.3    }
common yaml                       { build-depends: yaml                                        < 0.12   }

common Win32
  if os(windows)
    build-depends:      Win32   >= 2.5.4.1

common hw-polysemy                            { build-depends: hw-polysemy                                          }
common hw-polysemy-amazonka                   { build-depends: hw-polysemy:amazonka                                 }
common hw-polysemy-core                       { build-depends: hw-polysemy:core                                     }
common hw-polysemy-hedgehog                   { build-depends: hw-polysemy:hedgehog                                 }
common hw-polysemy-testcontainers-localstack  { build-depends: hw-polysemy:testcontainers-localstack                }

flag werror
  description: Enable -Werror
  manual: True
  default: False

common project-config
  import:               polysemy,
                        polysemy-plugin,
  default-extensions:   BlockArguments
                        DataKinds
                        DeriveGeneric
                        DuplicateRecordFields
                        FlexibleContexts
                        FlexibleInstances
                        LambdaCase
                        NoImplicitPrelude
                        OverloadedStrings
                        RankNTypes
                        ScopedTypeVariables
                        TypeApplications
                        TypeOperators
  ghc-options:          -Wall
                        -fplugin=Polysemy.Plugin
  if flag(werror)
    ghc-options:        -Werror

library core
  import:               base, project-config,
                        aeson,
                        async,
                        bytestring,
                        contravariant,
                        exceptions,
                        directory,
                        filepath,
                        generic-lens,
                        ghc-prim,
                        hedgehog,
                        lens,
                        mtl,
                        network,
                        polysemy,
                        polysemy-log,
                        polysemy-time,
                        process,
                        resourcet,
                        stm,
                        text,
                        temporary,
                        time,
                        unliftio,
                        Win32,
                        yaml,
  visibility:           public

  if os(windows)
    exposed-modules:    HaskellWorks.IO.Win32.NamedPipe

  exposed-modules:      HaskellWorks.Control.Monad
                        HaskellWorks.Error
                        HaskellWorks.Error.Types
                        HaskellWorks.IO.Network
                        HaskellWorks.IO.Network.NamedPipe
                        HaskellWorks.IO.Network.Port
                        HaskellWorks.IO.Network.Socket
                        HaskellWorks.IO.Process
                        HaskellWorks.Polysemy
                        HaskellWorks.Polysemy.Cabal
                        HaskellWorks.Polysemy.Cabal.Types
                        HaskellWorks.Polysemy.Control.Concurrent
                        HaskellWorks.Polysemy.Control.Concurrent.QSem
                        HaskellWorks.Polysemy.Control.Concurrent.STM
                        HaskellWorks.Polysemy.Control.Concurrent.STM.TVar
                        HaskellWorks.Polysemy.Data.Aeson
                        HaskellWorks.Polysemy.Data.ByteString
                        HaskellWorks.Polysemy.Data.ByteString.Lazy
                        HaskellWorks.Polysemy.Data.ByteString.Strict
                        HaskellWorks.Polysemy.Data.Either
                        HaskellWorks.Polysemy.Data.Text
                        HaskellWorks.Polysemy.Data.Text.Lazy
                        HaskellWorks.Polysemy.Data.Text.Strict
                        HaskellWorks.Polysemy.Error
                        HaskellWorks.Polysemy.Error.Types
                        HaskellWorks.Polysemy.Except
                        HaskellWorks.Polysemy.File
                        HaskellWorks.Polysemy.FilePath
                        HaskellWorks.Polysemy.Log
                        HaskellWorks.Polysemy.OS
                        HaskellWorks.Polysemy.Prelude
                        HaskellWorks.Polysemy.Stack
                        HaskellWorks.Polysemy.String
                        HaskellWorks.Polysemy.System.Directory
                        HaskellWorks.Polysemy.System.Environment
                        HaskellWorks.Polysemy.System.IO
                        HaskellWorks.Polysemy.System.IO.Temp
                        HaskellWorks.Polysemy.System.Process
                        HaskellWorks.Prelude
  hs-source-dirs:       core
  default-language:     Haskell2010

library hedgehog
  import:               base, project-config,
                        aeson,
                        aeson-pretty,
                        async,
                        bytestring,
                        contravariant,
                        Diff,
                        exceptions,
                        filepath,
                        generic-lens,
                        ghc-prim,
                        hedgehog,
                        hw-polysemy-core,
                        lens,
                        mtl,
                        polysemy-log,
                        polysemy-time,
                        polysemy,
                        prettyprinter,
                        process,
                        resourcet,
                        text,
                        time,
                        transformers,
                        yaml,
  visibility:           public
  exposed-modules:      HaskellWorks.Polysemy.Hedgehog
                        HaskellWorks.Polysemy.Hedgehog.Assert
                        HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog
                        HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog.Internal
                        HaskellWorks.Polysemy.Hedgehog.Effect.Log
                        HaskellWorks.Polysemy.Hedgehog.Eval
                        HaskellWorks.Polysemy.Hedgehog.Golden
                        HaskellWorks.Polysemy.Hedgehog.Jot
                        HaskellWorks.Polysemy.Hedgehog.Process
                        HaskellWorks.Polysemy.Hedgehog.Process.Internal
                        HaskellWorks.Polysemy.Hedgehog.Property
                        HaskellWorks.Polysemy.Hedgehog.Test
                        HaskellWorks.Polysemy.Hedgehog.Workspace
                        HaskellWorks.Polysemy.Hedgehog.Workspace.Types
  hs-source-dirs:       hedgehog
  default-language:     Haskell2010

library amazonka
  import:               base, project-config,
                        amazonka,
                        binary,
                        generic-lens,
                        hw-polysemy-core,
                        lens,
                        polysemy-log,
                        polysemy-time,
                        resourcet,
                        text,
                        stm,
  visibility:           public
  exposed-modules:      HaskellWorks.Polysemy.Amazonka
  hs-source-dirs:       amazonka
  default-language:     Haskell2010

library testcontainers-localstack
  import:               base, project-config,
                        aeson,
                        amazonka,
                        bytestring,
                        generic-lens,
                        http-conduit,
                        hw-polysemy-amazonka,
                        hw-polysemy-core,
                        hw-polysemy-hedgehog,
                        lens,
                        resourcet,
                        resourcet,
                        testcontainers,
                        text,
                        time,
                        yaml,
  visibility:           public
  exposed-modules:      HaskellWorks.Polysemy.Amazonka.LocalStack
                        HaskellWorks.TestContainers.LocalStack
                        HaskellWorks.TestContainers.LocalStack.Types
  hs-source-dirs:       testcontainers-localstack
  default-language:     Haskell2010

library
  import:               base, project-config,
                        hw-polysemy-core,
                        hw-polysemy-hedgehog,
  reexported-modules:   HaskellWorks.IO.Network,
                        HaskellWorks.IO.Network.NamedPipe,
                        HaskellWorks.IO.Network.Port,
                        HaskellWorks.Polysemy,
                        HaskellWorks.Polysemy.Cabal,
                        HaskellWorks.Polysemy.Cabal.Types,
                        HaskellWorks.Polysemy.Control.Concurrent,
                        HaskellWorks.Polysemy.Control.Concurrent.QSem,
                        HaskellWorks.Polysemy.Control.Concurrent.STM,
                        HaskellWorks.Polysemy.Control.Concurrent.STM.TVar,
                        HaskellWorks.Polysemy.Data.ByteString,
                        HaskellWorks.Polysemy.Data.ByteString.Lazy,
                        HaskellWorks.Polysemy.Data.ByteString.Strict,
                        HaskellWorks.Polysemy.Data.Either,
                        HaskellWorks.Polysemy.Data.Text,
                        HaskellWorks.Polysemy.Data.Text.Lazy,
                        HaskellWorks.Polysemy.Data.Text.Strict,
                        HaskellWorks.Polysemy.Error,
                        HaskellWorks.Polysemy.Error.Types,
                        HaskellWorks.Polysemy.FilePath,
                        HaskellWorks.Polysemy.OS,
                        HaskellWorks.Polysemy.Hedgehog,
                        HaskellWorks.Polysemy.Hedgehog.Assert,
                        HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog,
                        HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog.Internal,
                        HaskellWorks.Polysemy.Hedgehog.Effect.Log,
                        HaskellWorks.Polysemy.Hedgehog.Eval,
                        HaskellWorks.Polysemy.Hedgehog.Golden,
                        HaskellWorks.Polysemy.Hedgehog.Jot,
                        HaskellWorks.Polysemy.Hedgehog.Process,
                        HaskellWorks.Polysemy.Hedgehog.Process.Internal,
                        HaskellWorks.Polysemy.Hedgehog.Property,
                        HaskellWorks.Polysemy.Hedgehog.Test,
                        HaskellWorks.Polysemy.Hedgehog.Workspace,
                        HaskellWorks.Polysemy.Prelude,
                        HaskellWorks.Polysemy.String,
                        HaskellWorks.Polysemy.System.Directory,
                        HaskellWorks.Polysemy.System.Environment,
                        HaskellWorks.Polysemy.System.IO,
                        HaskellWorks.Polysemy.System.Process,
  default-language:     Haskell2010

test-suite hw-polysemy-test
  import:               base, project-config,
                        amazonka,
                        amazonka-s3,
                        filepath,
                        generic-lens,
                        hw-polysemy-amazonka,
                        hw-polysemy-core,
                        hw-polysemy-testcontainers-localstack,
                        hw-polysemy,
                        lens,
                        polysemy-log,
                        polysemy,
                        tasty-discover,
                        tasty-hedgehog,
                        tasty,
                        testcontainers,
                        text,
  default-language:     Haskell2010
  type:                 exitcode-stdio-1.0
  build-tool-depends:   tasty-discover:tasty-discover
  hs-source-dirs:       test
  main-is:              Main.hs
  other-modules:        HaskellWorks.Polysemy.HedgehogSpec
                        HaskellWorks.Polysemy.TestContainers.LocalStackSpec
                        Test.Polysemy.Env
  ghc-options:          -threaded -rtsopts -with-rtsopts=-N -with-rtsopts=-T