cabal-version: 2.2

name:                 brittany
version:              0.14.0.0
synopsis:             Haskell source code formatter
description:
  See <https://github.com/lspitzner/brittany/blob/master/README.md the README>.
  .
  If you are interested in the implementation, have a look at <https://github.com/lspitzner/brittany/blob/master/doc/implementation/theory.md this document>;
  .
  The implementation is documented in more detail <https://github.com/lspitzner/brittany/blob/master/doc/implementation/index.md here>.
license:              AGPL-3.0-only
license-file:         LICENSE
author:               Lennart Spitzner
maintainer:           Lennart Spitzner <hexagoxel@hexagoxel.de>
copyright:            Copyright (C) 2016-2019 Lennart Spitzner
                      Copyright (C) 2019 PRODA LTD
category:             Language
build-type:           Simple
homepage:             https://github.com/lspitzner/brittany/
bug-reports:          https://github.com/lspitzner/brittany/issues
extra-doc-files:
  ChangeLog.md
  README.md
  doc/implementation/*.md
extra-source-files:
  data/brittany.yaml
  data/*.hs

source-repository head
  type: git
  location: https://github.com/lspitzner/brittany.git

flag pedantic
  default: False
  description: Enables @-Werror@, which turns warnings into errors.
  manual: True

common library
  build-depends:
    , aeson ^>= 2.0.1
    , base ^>= 4.15.0
    , butcher ^>= 1.3.3
    , bytestring ^>= 0.10.12
    , cmdargs ^>= 0.10.21
    , containers ^>= 0.6.4
    , czipwith ^>= 1.0.1
    , data-tree-print ^>= 0.1.0
    , deepseq ^>= 1.4.5
    , directory ^>= 1.3.6
    , extra ^>= 1.7.10
    , filepath ^>= 1.4.2
    , ghc ^>= 9.0.1
    , ghc-boot ^>= 9.0.1
    , ghc-boot-th ^>= 9.0.1
    , ghc-exactprint ^>= 0.6.4
    , monad-memo ^>= 0.5.3
    , mtl ^>= 2.2.2
    , multistate ^>= 0.8.0
    , pretty ^>= 1.1.3
    , random ^>= 1.2.1
    , safe ^>= 0.3.19
    , semigroups ^>= 0.19.2
    , strict ^>= 0.4.0
    , syb ^>= 0.7.2
    , text ^>= 1.2.5
    , transformers ^>= 0.5.6
    , uniplate ^>= 1.6.13
    , yaml ^>= 0.11.7
  default-language: Haskell2010
  ghc-options:
    -Weverything
    -Wno-all-missed-specialisations
    -Wno-incomplete-uni-patterns
    -Wno-missing-deriving-strategies
    -Wno-missing-export-lists
    -Wno-missing-import-lists
    -Wno-missing-local-signatures
    -Wno-missing-safe-haskell-mode
    -Wno-monomorphism-restriction
    -Wno-prepositive-qualified-module
    -Wno-safe
    -Wno-unsafe

  if flag(pedantic)
    ghc-options: -Werror

common executable
  import: library

  build-depends: brittany
  ghc-options:
    -rtsopts
    -threaded
    -Wno-implicit-prelude
    -Wno-unused-packages

library
  import: library

  autogen-modules: Paths_brittany
  hs-source-dirs: source/library
  exposed-modules:
    Brittany
    Brittany.Internal
    Brittany.Internal.Backend
    Brittany.Internal.BackendUtils
    Brittany.Internal.Config
    Brittany.Internal.Config.Types
    Brittany.Internal.Config.Types.Instances
    Brittany.Internal.ExactPrintUtils
    Brittany.Internal.LayouterBasics
    Brittany.Internal.Layouters.DataDecl
    Brittany.Internal.Layouters.Decl
    Brittany.Internal.Layouters.Expr
    Brittany.Internal.Layouters.IE
    Brittany.Internal.Layouters.Import
    Brittany.Internal.Layouters.Module
    Brittany.Internal.Layouters.Pattern
    Brittany.Internal.Layouters.Stmt
    Brittany.Internal.Layouters.Type
    Brittany.Internal.Obfuscation
    Brittany.Internal.ParseModule
    Brittany.Internal.Prelude
    Brittany.Internal.PreludeUtils
    Brittany.Internal.Transformations.Alt
    Brittany.Internal.Transformations.Columns
    Brittany.Internal.Transformations.Floating
    Brittany.Internal.Transformations.Indent
    Brittany.Internal.Transformations.Par
    Brittany.Internal.Types
    Brittany.Internal.Utils
    Brittany.Main
    Paths_brittany

executable brittany
  import: executable

  hs-source-dirs: source/executable
  main-is: Main.hs

test-suite brittany-test-suite
  import: executable

  build-depends:
    , hspec ^>= 2.8.3
  hs-source-dirs: source/test-suite
  main-is: Main.hs
  type: exitcode-stdio-1.0