packages feed

secretspec-0.19.0: secretspec.cabal

cabal-version:      2.4
name:               secretspec
version:            0.19.0
synopsis:           Haskell SDK for SecretSpec, a declarative secrets manager
description:
  A thin client over the @secretspec-ffi@ C ABI (linked at build time).
  Resolution (providers, chains, profiles, generation, @as_path@) happens in the
  Rust core; this package marshals a JSON request to the native library and
  parses the response, mirroring the Rust derive crate's vocabulary.
homepage:           https://secretspec.dev/
license:            Apache-2.0
license-file:       LICENSE
author:             Domen Kožar
maintainer:         domen@enlambda.com
category:           Configuration
build-type:         Simple

flag use-pkg-config
  description:
    Locate secretspec_ffi and its link dependencies through pkg-config
    (secretspec_ffi.pc) instead of command-line library and linker paths.
  default:            False
  manual:             True

library
  exposed-modules:    SecretSpec
  hs-source-dirs:     src
  build-depends:      base       >=4.14 && <5
                    , aeson      >=2.0  && <3
                    , bytestring <1
                    , containers <1
                    , directory  <2
                    , text       <3
  -- The native resolver is linked at build time. The default path below uses
  -- the static archive; pkg-config may select a static or shared install.
  --
  -- Without the flag: point --extra-lib-dirs at a directory containing ONLY
  -- libsecretspec_ffi.a (so -lsecretspec_ffi resolves to the archive, not a
  -- co-located .so), and pass the archive's transitive native deps via
  -- --ghc-options=-optl<lib> (capture them with
  -- `cargo rustc -p secretspec-ffi --crate-type staticlib -- --print native-static-libs`).
  if flag(use-pkg-config)
    pkgconfig-depends: secretspec_ffi
  else
    extra-libraries:  secretspec_ffi
  -- The Darwin frameworks among the archive's native dependencies, declared
  -- so every final link (executable, test-suite, ghci) receives them through
  -- the compiler driver.
  if os(darwin)
    frameworks:       SystemConfiguration Security CoreFoundation
  default-language:   Haskell2010
  ghc-options:        -Wall

executable secretspec-quick-start-example
  main-is:            QuickStart.hs
  hs-source-dirs:     examples
  build-depends:      base
                    , containers
                    , secretspec
  default-language:   Haskell2010
  ghc-options:        -Wall

executable secretspec-scopes-example
  main-is:            Scopes.hs
  hs-source-dirs:     examples
  build-depends:      base
                    , secretspec
  default-language:   Haskell2010
  ghc-options:        -Wall

executable secretspec-report-example
  main-is:            Report.hs
  hs-source-dirs:     examples
  build-depends:      base
                    , secretspec
  default-language:   Haskell2010
  ghc-options:        -Wall

test-suite secretspec-test
  type:               exitcode-stdio-1.0
  main-is:            Main.hs
  hs-source-dirs:     test
  build-depends:      base
                    , secretspec
                    , aeson      >=2.0
                    , bytestring
                    , containers
                    , directory
                    , filepath
                    , process
                    , text
  default-language:   Haskell2010
  ghc-options:        -Wall -threaded