packages feed

polytropos-docrecords-0.1.0.2: polytropos-docrecords.cabal

cabal-version: 3.0
name: polytropos-docrecords
version: 0.1.0.2
synopsis: Self-documenting extensible records with provenance tracking and CLI generation
description:
  Self-documenting extensible records for <https://hackage.haskell.org/package/polytropos polytropos>,
  providing configuration schema extraction, JSON/YAML merging with source provenance, and automated
  CLI parser synthesis via @optparse-applicative@.
  .
  Inspired by and acknowledging Yves Parès's pioneering @docrecords@ package from the
  <https://github.com/funflow/porcupine porcupine> ecosystem, re-architected from scratch
  on top of Polytropos's high-performance flat array representation ('Polytropos.Core.Rep')
  and compile-time dictionary synthesis ('Polytropos.Plugin').
  .
  Key Features:
  .
  * Extensible documented records ('Polytropos.DocRecord.DocRec') with per-field documentation strings.
  * Tri-state missing value semantics ('Polytropos.DocRecord.PossiblyEmpty') distinguishing unconfigured defaults from missing inputs.
  * Hierarchical provenance tracking ('Polytropos.DocRecord.SourceTag') with deterministic override semantics (@CLI > YAML > Default@).
  * Automated Markdown schema generation ('Polytropos.DocRecord.showDocumentation').
  * Zero-boilerplate CLI synthesis ('Polytropos.DocRecord.parseRecFromCLI') generating @optparse-applicative@ options from record schemas.
  .
  Start at the front door module "Polytropos.DocRecord" for comprehensive documentation and worked examples.
license: EUPL-1.2 OR Apache-2.0
license-file: LICENSE
author: Nadia Yvette Chambers
maintainer: nadia.yvette.chambers@ik.me
category: Configuration, Data, Records, CLI
homepage: https://github.com/NadiaYvette/polytropos
bug-reports: https://github.com/NadiaYvette/polytropos/issues
extra-doc-files:
    README.md
  , CHANGELOG.md
build-type: Simple

source-repository head
  type:     git
  location: https://github.com/NadiaYvette/polytropos
  subdir:   packages/polytropos-docrecords

library
  default-language: GHC2021
  hs-source-dirs: src
  exposed-modules:
    Polytropos.DocRecord
  ghc-options: -Wall
  build-depends:
    base >= 4.14 && < 5,
    aeson >= 2.0 && < 2.3,
    bytestring >= 0.11 && < 0.13,
    containers >= 0.6 && < 0.9,
    optparse-applicative >= 0.17 && < 0.20,
    polytropos-core >= 0.1 && < 0.2,
    polytropos-plugin >= 0.1 && < 0.2,
    primitive >= 0.8 && < 1.0,
    text >= 2.0 && < 2.2,
    unordered-containers >= 0.2.14 && < 0.3,
    yaml >= 0.11 && < 0.12

test-suite polytropos-docrecords-test
  type: exitcode-stdio-1.0
  default-language: GHC2021
  hs-source-dirs: test
  main-is: Main.hs
  ghc-options: -Wall -fplugin=Polytropos.Plugin
  build-depends:
    base,
    aeson,
    bytestring,
    optparse-applicative,
    polytropos-core,
    polytropos-docrecords,
    polytropos-plugin,
    tasty,
    tasty-hunit,
    text,
    yaml