name:         stackage-server

flags:
  library-only:
    description: Build for use with "yesod devel"
    manual: false
    default: false
  dev:
    description: Turn on development settings, like auto-reload templates.
    manual: false
    default: false

dependencies:
- attoparsec-aeson
- base
- yesod
- aeson
- barrier
- blaze-markup
- bytestring
- classy-prelude
- classy-prelude-yesod
- conduit
- conduit-extra
- directory
- email-validate
- esqueleto
- exceptions
- fast-logger
- ghc-prim
- html-conduit
- http-conduit
- monad-logger
- mtl
#- prometheus-client
#- prometheus-metrics-ghc
- pantry
- path
- persistent
- persistent-template
- resourcet
- rio
- shakespeare
- tar-conduit
- template-haskell
- text
- transformers
- these
- unliftio
- wai
- wai-extra
- wai-logger
#- wai-middleware-prometheus
- warp
- xml-conduit
- xml-types
- yaml
- yesod-auth
- yesod-core
- yesod-form
- yesod-newsfeed
- yesod-static
- zlib
- unordered-containers
- hashable
- Cabal >= 3.2
- mono-traversable
- process
- cmark-gfm
- formatting
- blaze-html
- haddock-library
- yesod-gitrepo
- yesod-gitrev
- hoogle
- deepseq
- auto-update
- yesod-sitemap
- streaming-commons
- classy-prelude-conduit
- path-pieces
- persistent-postgresql
- persistent-sqlite
- filepath
- http-client
- http-types
- amazonka
- amazonka-core
- amazonka-s3
- lens
- file-embed
- resource-pool
- containers
- retry

default-extensions:
- OverloadedStrings

library:
  source-dirs: src
  when:
  - condition: (flag(dev)) || (flag(library-only))
    then:
      ghc-options:
      - -Wall
      - -O0
      cpp-options: -DDEVELOPMENT
    else:
      ghc-options:
      - -Wall
      - -O

executables:
  stackage-server:
    main: main.hs
    source-dirs: app
    ghc-options: -Wall -threaded -O -rtsopts -with-rtsopts=-N
    dependencies:
    - stackage-server
    when:
    - condition: flag(library-only)
      buildable: false
    - condition: flag(dev)
      then:
        other-modules: DevelMain
        dependencies:
          - foreign-store
      else:
        other-modules: []

  stackage-server-cron:
    main: stackage-server-cron.hs
    source-dirs: app
    other-modules: []
    ghc-options:
    - -Wall
    - -threaded
    - -O
    - -rtsopts
    - -with-rtsopts=-N
    dependencies:
    - optparse-applicative
    - rio
    - stackage-server
    when:
    - condition: flag(library-only)
      buildable: false
    - condition: flag(dev)
      cpp-options: -DDEVELOPMENT

benchmarks:
  stackage-bench:
    main: main.hs
    source-dirs: bench
    dependencies:
    - stackage-server
    - gauge
    - deepseq
    - path-io
    - casa-client
    ghc-options:
    - -O
