packages feed

slack-web-1.5.0.1: slack-web.cabal

cabal-version: 2.2
name: slack-web
version: 1.5.0.1

build-type: Simple

license: MIT
license-file: LICENSE.md

copyright: 2017 Juan Pedro Villa Isaza, 2022 Mercury Technologies, Inc
author: Juan Pedro Villa Isaza <jpvillaisaza@gmail.com>, Jade Lovelace <jadel@mercury.com>, Dennis Hennen <dennis@mercury.com>
maintainer: Jade Lovelace <jadel@mercury.com>

homepage: https://github.com/MercuryTechnologies/slack-web
bug-reports: https://github.com/MercuryTechnologies/slack-web/issues

synopsis: Bindings for the Slack web API
description: Haskell bindings for the Slack web API.

extra-source-files:
  tests/golden/SlackWebhookEvent/*.json
  tests/golden/SlackWebhookEvent/*.golden
  tests/golden/Conversation/*.json
  tests/golden/Conversation/*.golden
  tests/golden/UsersConversationsResponse/*.json
  tests/golden/UsersConversationsResponse/*.golden
  tests/golden/UpdateRsp/*.json
  tests/golden/UpdateRsp/*.golden
  tests/golden/BlockKitBuilderMessage/*.golden.json

category: Web

tested-with: GHC == 8.10.7 || ==9.2.4 || == 9.4.2

extra-source-files:
  CHANGELOG.md
  README.md

common build-opts
  ghc-options:
    -Weverything
    -- missing-exported-signatures turns off the more strict -Wmissing-signatures. See https://ghc.haskell.org/trac/ghc/ticket/14794#ticket
    -Wno-missing-exported-signatures
    -- Requires explicit export lists for every module, a pain for large modules
    -Wno-missing-export-lists
    -- Requires explicit imports of _every_ function (e.g. '$'); too strict
    -Wno-missing-import-lists
    -- When GHC can't specialize a polymorphic function. No big deal and requires fixing underlying libraries to solve.
    -Wno-missed-specialisations
    -- See missed-specialisations
    -Wno-all-missed-specialisations
    -- Don't use Safe Haskell warnings
    -Wno-unsafe
    -- Warning for polymorphic local bindings. Don't think this is an issue
    -Wno-missing-local-signatures
    -- Don't warn if the monomorphism restriction is used
    -Wno-monomorphism-restriction
    --  Cabal isn’t setting this currently (introduced in GHC 8.10)
    -Wno-missing-safe-haskell-mode
    --  Cabal’s generate Path_*.hs doesn’t do this (fixed in https://github.com/haskell/cabal/pull/7352)
    -Wno-prepositive-qualified-module
    -- Some tooling gives this error
    -Wno-unused-packages
    -- Warns on every single data declaration
    -Wno-missing-kind-signatures

  default-extensions:
    AllowAmbiguousTypes
    ApplicativeDo
    BlockArguments
    DataKinds
    DeriveAnyClass
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveTraversable
    DerivingVia
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    ImportQualifiedPost
    InstanceSigs
    LambdaCase
    MonoLocalBinds
    MultiWayIf
    NamedFieldPuns
    NumericUnderscores
    NoImplicitPrelude
    OverloadedStrings
    PatternSynonyms
    PolyKinds
    RankNTypes
    RecordWildCards
    RecursiveDo
    ScopedTypeVariables
    StandaloneDeriving
    StandaloneKindSignatures
    TypeApplications
    TypeFamilies
    ViewPatterns

library
  import: build-opts
  hs-source-dirs:
      src
  exposed-modules:
      Web.Slack
      Web.Slack.Api
      Web.Slack.Auth
      Web.Slack.Chat
      Web.Slack.Classy
      Web.Slack.Common
      Web.Slack.Conversation
      Web.Slack.Internal
      Web.Slack.MessageParser
      Web.Slack.Pager
      Web.Slack.Pager.Types
      Web.Slack.Types
      Web.Slack.User
      Web.Slack.UsersConversations
      Web.Slack.Experimental.Blocks
      Web.Slack.Experimental.Blocks.Types
      Web.Slack.Experimental.Events.Types
      Web.Slack.Experimental.RequestVerification
  other-modules:
      Web.Slack.Util
      Web.Slack.Prelude
      Web.Slack.AesonUtils
  build-depends:
      aeson >= 2.0 && < 2.2
    , base >= 4.11 && < 4.18
    , base16-bytestring
    , bytestring
    , classy-prelude
    , containers
    , cryptonite
    , data-default-class
    , deepseq
    , either
    , errors
    , hashable
    , http-api-data >= 0.3 && < 0.6
    , http-client >= 0.5 && < 0.8
    , http-client-tls >= 0.3 && < 0.4
    , megaparsec >= 5.0 && < 10
    , mono-traversable
    , mtl
    , refined
    , scientific
    , servant >= 0.16 && < 0.20
    , servant-client >= 0.16 && < 0.20
    , servant-client-core >= 0.16 && < 0.20
    , string-conversions
    , string-variants >= 0.1.0.1
    , text (>= 1.2 && < 1.3) || (>= 2.0 && < 2.1)
    , time
    , transformers
    , unordered-containers
    , vector
  default-language:
      Haskell2010
  ghc-options:
      -Wall

test-suite tests
  import: build-opts
  main-is:
      Spec.hs
  hs-source-dirs:
      tests
  type:
      exitcode-stdio-1.0
  other-modules:
      JSONGolden
      Web.Slack.PagerSpec
      Web.Slack.MessageParserSpec
      Web.Slack.ConversationSpec
      Web.Slack.ChatSpec
      Web.Slack.UsersConversationsSpec
      Web.Slack.Experimental.RequestVerificationSpec
      Web.Slack.Experimental.Events.TypesSpec
      Web.Slack.Experimental.BlocksSpec
      TestImport
  build-tool-depends:
    hspec-discover:hspec-discover >=2.6.0 && <2.11
  build-depends:
      base
    , QuickCheck
    , aeson
    , aeson-pretty
    , bytestring
    , classy-prelude
    , fakepull
    , hspec
    , hspec-core
    , hspec-golden
    , mtl
    , pretty-simple
    , quickcheck-instances
    , slack-web
    , string-conversions
    , string-variants
    , template-haskell
    , text
    , th-compat
    , time
  default-language:
    Haskell2010
  ghc-options:
       -Wall

flag cli
  description: Build a CLI client for testing.
  default:     False
  manual:      True

executable slack-web-cli
  import: build-opts
  if flag(cli)
    buildable: True
  else
    buildable: False
  hs-source-dirs: main
  main-is: cli.hs
  build-depends:
      base
    , slack-web
    , butcher
    , bytestring
    , monad-loops
    , mtl
    , pretty-simple
    , text
    , time
    , servant-client-core
  default-language:
      Haskell2010

source-repository head
  type: git
  location: https://github.com/MercuryTechnologies/slack-web