packages feed

idnaparse-1.0.0.0: idnaparse.cabal

cabal-version: 3.0

name:           idnaparse
version:        1.0.0.0
synopsis:       IDNA-aware DNS-name lint and reporter
description:
    @idnaparse@ reads a stream of presentation-form domain names
    (one per line on stdin) and emits one JSON record per name on
    stdout.  Each record reports either a successful parse (with
    canonical presentation form, Unicode display form, and the
    set of label-form classifications -- LDH, ALABEL, ULABEL,
    FAKEA, ATTRLEAF, OCTET, WILDLABEL) or an error with enough
    detail to identify the offending label and the specific rule
    that failed.

    Built on the @idna2008@ library.  Useful for sweeping a zone
    file or registrar feed for IDNA conformance, building a
    summary of the label kinds present in a corpus, or as the
    parsing front end for ad-hoc DNS-name analysis pipelines.

    See @idnaparse --help@, @idnaparse --explain-forms@, and
    @idnaparse --explain-opts@ for the full CLI vocabulary.

author:         Viktor Dukhovni
maintainer:     ietf-dane@dukhovni.org
copyright:      2026 Viktor Dukhovni
license:        BSD-3-Clause
license-file:   LICENSE
category:       Network
homepage:       https://github.com/dnsbase/idnaparse
bug-reports:    https://github.com/dnsbase/idnaparse/issues
build-type:     Simple
tested-with: GHC == 9.6.7
           , GHC == 9.8.4
           , GHC == 9.10.3
           , GHC == 9.12.3
           , GHC == 9.14.1

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

source-repository head
    type:     git
    location: https://github.com/dnsbase/idnaparse.git

executable idnaparse
  hs-source-dirs: app
  main-is: idnaparse.hs
  default-language: GHC2021
  default-extensions:
    BangPatterns
    BlockArguments
    LambdaCase
    OverloadedStrings
    PatternSynonyms
  ghc-options: -O2 -Wall
  build-depends:
      base                  >= 4.18   && < 5
    , bytestring            >= 0.11   && < 0.13
    , containers            >= 0.6    && < 0.9
    , idna2008              >= 1.0    && < 1.1
    , optparse-applicative  >= 0.17   && < 0.20
    , streaming             >= 0.2    && < 0.3
    , streaming-bytestring  >= 0.3    && < 0.4
    , text                  >= 2.0    && < 2.2