packages feed

extensions-0.1.1.0: extensions.cabal

cabal-version:       2.4
name:                extensions
version:             0.1.1.0
synopsis:            Parse Haskell Language Extensions
description:         Parse Haskell Language Extensions.
                     See [README.md](https://github.com/kowainik/extensions#extensions) for more details.
homepage:            https://github.com/kowainik/extensions
bug-reports:         https://github.com/kowainik/extensions/issues
license:             MPL-2.0
license-file:        LICENSE
author:              Veronika Romashkina, Dmitrii Kovanikov
maintainer:          Kowainik <xrom.xkov@gmail.com>
copyright:           2020-2022 Kowainik
category:            GHC, Parsing, Haskell
build-type:          Simple
extra-doc-files:     README.md
                     CHANGELOG.md
tested-with:         GHC == 8.8.4
                     GHC == 8.10.7
                     GHC == 9.0.2
                     GHC == 9.2.4
                     GHC == 9.4.2
                     GHC == 9.6.3
                     GHC == 9.8.1
                     GHC == 9.10.1

flag executable
  description: Build the extensions executable
  default: True
  manual: True

source-repository head
  type:                git
  location:            https://github.com/kowainik/extensions.git

common common-options
  build-depends:       base >= 4.13.0.0 && < 4.22

  ghc-options:         -Wall
                       -Wcompat
                       -Widentities
                       -Wincomplete-uni-patterns
                       -Wincomplete-record-updates
                       -Werror=incomplete-patterns
  if impl(ghc >= 8.0)
    ghc-options:       -Wredundant-constraints
  if impl(ghc >= 8.2)
    ghc-options:       -fhide-source-paths
  if impl(ghc >= 8.4)
    ghc-options:       -Wmissing-export-lists
                       -Wpartial-fields
  if impl(ghc >= 8.8)
    ghc-options:       -Wmissing-deriving-strategies
  if impl(ghc >= 8.10.1)
    ghc-options:       -Wunused-packages
  if impl(ghc >= 9.0)
    ghc-options:       -Winvalid-haddock
  if impl(ghc >= 9.2)
    ghc-options:       -Woperator-whitespace
                       -Wredundant-bang-patterns

  default-language:    Haskell2010
  default-extensions:  ConstraintKinds
                       DeriveGeneric
                       DerivingStrategies
                       GeneralizedNewtypeDeriving
                       InstanceSigs
                       KindSignatures
                       LambdaCase
                       OverloadedStrings
                       RecordWildCards
                       ScopedTypeVariables
                       StandaloneDeriving
                       TupleSections
                       TypeApplications
                       ViewPatterns

library
  import:              common-options
  hs-source-dirs:      src
  exposed-modules:     Extensions
                         Extensions.Cabal
                         Extensions.Module
                         Extensions.Package
                         Extensions.Types

  build-depends:       bytestring >= 0.10 && < 0.13
                       -- We need to pin a single major version of
                       -- Cabal-syntax here because the main reason we use
                       -- Cabal-syntax is for its list of extensions.  Later
                       -- versions have strictly more extensions, and
                       -- we'll have missing patterns if we try to
                       -- support more than one major version.  If
                       -- this causes problems in practice let's
                       -- revisit this decision and come up with
                       -- another approach.
                     , Cabal-syntax >= 3.14 && < 3.18
                     , containers >= 0.6 && < 0.9
                     , directory ^>= 1.3
                     , filepath >= 1.4 && < 1.6
                     , ghc-boot-th >= 8.8.1 && < 9.13
                     , parsec ^>= 3.1
                     , text >= 1.2.3 && < 2.2

executable extensions
  import:              common-options
  if !flag(executable)
    buildable: False
  hs-source-dirs:      app
  main-is:             Main.hs
  other-modules:       Cli
  build-depends:       extensions
                     , base
                     , colourista >= 0.1 && < 0.3
                     , containers
                     , directory
                     , filepath
                     , optparse-applicative >= 0.15 && < 0.19
                     , text

test-suite extensions-test
  import:              common-options
  type:                exitcode-stdio-1.0
  hs-source-dirs:      test
  main-is:             Spec.hs
  other-modules:       Test.Extensions
                       Test.Extensions.Cabal
                       Test.Extensions.Module
                       Test.Extensions.Types
  build-depends:       extensions
                     , bytestring
                     , containers
                     , ghc-boot-th
                     , hedgehog >= 1.0 && < 1.6
                     , hspec
                     , hspec-hedgehog >= 0.0.1 && < 0.4
                     , text
  ghc-options:         -threaded
                       -rtsopts
                       -with-rtsopts=-N