packages feed

configuration-tools-0.7.1: configuration-tools.cabal

cabal-version: 3.0

name: configuration-tools
version: 0.7.1
synopsis: Tools for specifying and parsing configurations
description:
    Tools for specifying and parsing configurations

    This package provides a collection of utils on top of the packages
    <http://hackage.haskell.org/package/optparse-applicative optparse-applicative>,
    <http://hackage.haskell.org/package/aeson aeson>, and
    <http://hackage.haskell.org/package/yaml yaml> for configuring libraries and
    applications in a convenient and composable way.

    The main features are

    1. configuration management through integration of command line option
       parsing and configuration files and

    2. a @Setup.hs@ file that generates a @PkgInfo@ module for each component
       of a package that provides information about the package and the build.

    Documentation on how to use this package can be found in the
    <https://github.com/alephcloud/hs-configuration-tools/blob/master/README.md README>
    and in the API documentation of the modules "Configuration.Utils" and
    "Configuration.Utils.Setup".

homepage: https://github.com/alephcloud/hs-configuration-tools
bug-reports: https://github.com/alephcloud/hs-configuration-tools/issues
license: MIT
license-file: LICENSE
author: Lars Kuhtz <lakuhtz@gmail.com>
maintainer: Lars Kuhtz <lakuhtz@gmail.com>, Edmund Noble <edmundnoble@gmail.com>
copyright:
    (c) 2024-2025 Edmund Noble <edmundnoble@gmail.com>,
    (c) 2019-2020 Colin Woodbury <colin@fosskers.ca>,
    (c) 2015-2025 Lars Kuhtz <lakuhtz@gmail.com>,
    (c) 2014-2015 AlephCloud, Inc.
category: Configuration, Console
build-type: Custom
tested-with:
    , GHC==9.12
    , GHC==9.10
    , GHC==9.8
    , GHC==9.6
    , GHC==9.4

extra-doc-files:
    README.md,
    CHANGELOG.md

custom-setup
    setup-depends:
        Cabal >= 3.6 && < 100,
        base >= 4.14 && < 5.0,
        bytestring >= 0.10.0.2,
        directory >= 1.2.1.0,
        filepath >= 1.3.0.1,
        process >= 1.2.0.0

source-repository head
    type: git
    location: https://github.com/alephcloud/hs-configuration-tools.git
    branch: master

flag remote-configs
    Description: enable loading of configuration files from HTTP URLs
    Default: False
    Manual: True

library
    hs-source-dirs: src
    default-language: Haskell2010
    ghc-options: -Wall

    exposed-modules:
        Configuration.Utils
        Configuration.Utils.CommandLine
        Configuration.Utils.ConfigFile
        Configuration.Utils.Http
        Configuration.Utils.Internal
        Configuration.Utils.Internal.JsonTools
        Configuration.Utils.Internal.ConfigFileReader
        Configuration.Utils.Maybe
        Configuration.Utils.Monoid
        Configuration.Utils.Operators
        Configuration.Utils.Setup
        Configuration.Utils.Validation

    other-modules:
        PkgInfo

    autogen-modules:
        PkgInfo

    if flag(remote-configs)
        exposed-modules:
            Configuration.Utils.Internal.HttpsCertPolicy

    build-depends:
        Cabal >= 3.6
      , aeson >= 0.7.0.6
      , prettyprinter >= 1.7
      , attoparsec >= 0.11.3.4
      , base >= 4.14 && < 5
      , base-unicode-symbols >= 0.2.2.4
      , bytestring >= 0.10.0.2
      , case-insensitive >= 1.2
      , deepseq >= 1.3
      , directory >= 1.2.1.0
      , dlist >= 0.7.1
      , filepath >= 1.3.0.1
      , mtl >= 2.2
      , network-uri >= 2.6.0.1
      , optparse-applicative >= 0.18
      , process >= 1.2.0.0
      , profunctors >= 4.0.4
      , semigroups >= 0.18
      , semigroupoids >= 5.0
      , text >= 1.0
      , transformers >= 0.4
      , unordered-containers >= 0.2.4.0
      , vector >= 0.12
      , yaml >= 0.8.8.3

    if flag(remote-configs)
        build-depends:
            base64-bytestring >= 1.0
          , crypton-connection >= 0.3
          , crypton-x509 >= 1.5
          , crypton-x509-system >= 1.5
          , crypton-x509-validation >= 1.5.1
          , data-default >= 0.5
          , enclosed-exceptions >= 1.0
          , http-client >= 0.5
          , http-client-tls >= 0.3
          , http-types >= 0.8
          , monad-control >= 1.0
          , tls >= 1.2

    if flag(remote-configs)
        cpp-options: -DREMOTE_CONFIGS

test-suite url-example-test
    default-language: Haskell2010
    ghc-options: -Wall
    type: exitcode-stdio-1.0
    main-is: TestExample.hs
    hs-source-dirs: examples, test

    other-modules:
        Example
        TestTools
        Tests.BoolOption
        Tests.MonoidConfig
        PkgInfo

    autogen-modules:
        PkgInfo

    build-depends:
        Cabal >= 3.6
      , base >= 4.14 && < 5
      , base-unicode-symbols >= 0.2.2.4
      , bytestring >= 0.10
      , configuration-tools
      , mtl >= 2.2
      , text >= 1.0
      , transformers >= 0.4
      , unordered-containers >= 0.2.4.0
      , yaml >= 0.8.8.3

    if flag(remote-configs)
        build-depends:
            enclosed-exceptions >= 1.0
          , http-types >= 0.8
          , monad-control >= 1.0
          , wai >= 3.2
          , warp >= 3.3
          , warp-tls >= 3.4
          , network >= 2.8

        cpp-options: -DREMOTE_CONFIGS

test-suite trivial
    default-language: Haskell2010
    ghc-options: -Wall
    type: exitcode-stdio-1.0
    main-is: Trivial.hs
    hs-source-dirs: examples

    other-modules:
        PkgInfo

    autogen-modules:
        PkgInfo

    build-depends:
        base >= 4.14 && < 5
      , base-unicode-symbols >= 0.2.2.4
      , Cabal >= 3.6
      , configuration-tools

executable example
    default-language: Haskell2010
    ghc-options: -Wall
    main-is: Example.hs
    ghc-options: -main-is Example
    hs-source-dirs: examples
    other-modules:
        PkgInfo
    autogen-modules:
        PkgInfo
    build-depends:
        base >= 4.14 && < 5
      , base-unicode-symbols >= 0.2.2.4
      , Cabal >= 3.6
      , configuration-tools
      , mtl >= 2.2