about summary refs log tree commit diff
path: root/users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal
cabal-version:      3.0
name:               whatcd-resolver
version:            0.1.0.0
author:             Profpatsch
maintainer:         mail@profpatsch.de

common common-options
  ghc-options:
      -Wall
      -Wno-type-defaults
      -Wunused-packages
      -Wredundant-constraints
      -fwarn-missing-deriving-strategies

  -- See https://downloads.haskell.org/ghc/latest/docs/users_guide/exts.html
  -- for a description of all these extensions
  default-extensions:
      -- Infer Applicative instead of Monad where possible
    ApplicativeDo

    -- Allow literal strings to be Text
    OverloadedStrings

    -- Syntactic sugar improvements
    LambdaCase
    MultiWayIf

    -- Makes the (deprecated) usage of * instead of Data.Kind.Type an error
    NoStarIsType

    -- Convenient and crucial to deal with ambiguous field names, commonly
    -- known as RecordDotSyntax
    OverloadedRecordDot

    -- does not export record fields as functions, use OverloadedRecordDot to access instead
    NoFieldSelectors

    -- Allow the same record field name to be declared twice per module.
    -- This works, because we use `OverloadedRecordDot` everywhere (enforced by `NoFieldSelectors`).
    DuplicateRecordFields

    -- Record punning
    RecordWildCards

    -- Improved Deriving
    DerivingStrategies
    DerivingVia

    -- Type-level strings
    DataKinds

    -- to enable the `type` keyword in import lists (ormolu uses this automatically)
    ExplicitNamespaces

    -- allows defining pattern synonyms, but also the `import Foo (pattern FooPattern)` import syntax
    PatternSynonyms

  default-language: GHC2021

library
    import: common-options

    hs-source-dirs: src

    exposed-modules:
       WhatcdResolver
       AppT
       JsonLd
       Optional
       Http
       Html
       Transmission
       Redacted

    build-depends:
        base >=4.15 && <5,
        text,
        my-prelude,
        my-webstuff,
        pa-prelude,
        pa-error-tree,
        pa-label,
        pa-json,
        pa-field-parser,
        pa-run-command,
        aeson-better-errors,
        aeson,
        blaze-html,
        bytestring,
        case-insensitive,
        containers,
        unordered-containers,
        directory,
        exceptions,
        filepath,
        hs-opentelemetry-sdk,
        hs-opentelemetry-api,
        http-conduit,
        http-types,
        http-client,
        ihp-hsx,
        monad-logger,
        mtl,
        network-uri,
        resource-pool,
        postgresql-simple,
        punycode,
        tmp-postgres,
        unliftio,
        wai-extra,
        wai,
        warp,

executable whatcd-resolver
    import: common-options

    main-is: Main.hs

    build-depends:
        base >=4.15 && <5,
        whatcd-resolver