cabal-version: 3.4
name: fedi
version: 0.1.0.0
license: MPL-2.0
license-file: LICENSE
author: campxfire
maintainer: me@campxfire.space
category: Web
build-type: Simple
extra-doc-files: readme.md
-- extra-source-files:

common warnings
  ghc-options: -Wall -fno-warn-type-defaults

library
  import: warnings
  exposed-modules:
    Fedi
    Fedi.Requests
    Fedi.Helpers
    Fedi.Types
    Fedi.Types.Helpers
    Fedi.UserDetails
    Fedi.Webfinger
    Fedi.Crypto
    Fedi.Signature.Types
    Fedi.Signature.Check
    Fedi.Signature.Sign

    Fedi.Routes
    Fedi.Routes.Helpers
    Fedi.Routes.User
    Fedi.Routes.Inbox
    Fedi.Routes.Outbox
    Fedi.Routes.Notes
    Fedi.Routes.Follow
  -- other-modules:
  -- other-extensions:
  build-depends:
      aeson
    , base
    , bytestring
    , cmark-gfm
    , unordered-containers
    , containers
    , directory
    , filepath
    , htoml-megaparsec
    , process
    , text >= 2.0.1
    , twain
    , mime-types
    , time
    , wai
    , exceptions
    , req
    , modern-uri
    , base64
    , memory
    , crypton
    , crypton-x509
    , cryptostore
    , raw-strings-qq
    , case-insensitive
    , http-types
    , simple-logger
    , pretty-simple
    , aeson-pretty

  hs-source-dirs: src
  default-language: GHC2021
  default-extensions:
    BlockArguments
    LambdaCase
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    DerivingVia
    GeneralizedNewtypeDeriving
    DeriveAnyClass
    DerivingStrategies
    DuplicateRecordFields
    NoFieldSelectors

executable fediserve
  import: warnings
  main-is: Main.hs
  other-modules:
    DB
    Html
    Css
    Routes
    Routes.Inbox
    Routes.Inbox.Like
    Routes.Inbox.Follow
    Routes.Inbox.Accept
  -- other-extensions:
  build-depends:
      aeson
    , async
    , base
    , fedi
    , wai-extra
    , warp
    , twain
    , bytestring
    , text
    , sqlite-easy
    , raw-strings-qq
    , securemem
    , lucid2
    , simple-logger
    , pretty-simple

  hs-source-dirs: app
  default-language: GHC2021
  default-extensions:
    BlockArguments
    LambdaCase
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    ViewPatterns
    DuplicateRecordFields
    NoFieldSelectors
    GeneralizedNewtypeDeriving
    DeriveAnyClass
    DerivingStrategies
  ghc-options: -Wall -O -threaded -rtsopts -with-rtsopts=-N

test-suite fedi-test
  type: exitcode-stdio-1.0
  hs-source-dirs: test
  main-is: Spec.hs
  other-modules:
    Fedi.TestSpec
  default-extensions:
    BlockArguments
    LambdaCase
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    ViewPatterns
    DuplicateRecordFields
    NoFieldSelectors
  build-depends:
      base
    , hspec
    , hspec-discover
    , hspec-wai
    , req
    , aeson
    , text
    , raw-strings-qq
    , pretty-simple
    , fedi
  ghc-options:
    -threaded -rtsopts -with-rtsopts=-N
  build-tool-depends:
      hspec-discover:hspec-discover
  default-language: GHC2021