packages feed

graphwiz-3.0.0: graphwiz.cabal

cabal-version:      3.4
name:               graphwiz
synopsis:           Monadic DOT graph builder DSL
version:            3.0.0
category:           Data, Text
license:            BSD-3-Clause
license-file:       LICENSE
copyright:          Copyright (C) 2025 Antoine Leblanc
maintainer:         nicuveo@gmail.com
author:             Antoine Leblanc
homepage:           https://github.com/nicuveo/graphwiz#readme
bug-reports:        https://github.com/nicuveo/graphwiz/issues
tested-with:        GHC ==9.8 || ==9.10 || ==9.12
description:        Small monadic DSL to build Graphviz DOT files.
extra-source-files:
  .gitignore
  .stylish-haskell.yaml
  README.md

extra-doc-files:    CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/nicuveo/graphwiz.git

flag export-internals-for-coverage
  description:
    Whether internal modules should be exported so that coverage can be analyzed.

  default:     False
  manual:      True

common setup
  default-language:   GHC2021
  default-extensions:
    AllowAmbiguousTypes
    ApplicativeDo
    BlockArguments
    DataKinds
    DefaultSignatures
    DerivingVia
    FunctionalDependencies
    GADTs
    LambdaCase
    MultiWayIf
    NoImplicitPrelude
    OverloadedStrings
    PackageImports
    RecordWildCards
    RoleAnnotations
    StrictData
    TypeFamilies
    ViewPatterns

  ghc-options:
    -Wall -Wcompat -Widentities -Wincomplete-uni-patterns
    -Winvalid-haddock -Wpartial-fields -Wredundant-constraints -Wtabs
    -Wunused-packages -Wno-unused-do-bind -fhide-source-paths
    -foptimal-applicative-do -funbox-small-strict-fields
    -fwrite-ide-info

library
  import:         setup

  if flag(export-internals-for-coverage)
    other-modules:   Prelude
    exposed-modules:
      Text.Dot
      Text.Dot.Attributes
      Text.Dot.Build
      Text.Dot.Monad
      Text.Dot.Render
      Text.Dot.Types

  else
    exposed-modules: Text.Dot
    other-modules:
      Prelude
      Text.Dot.Attributes
      Text.Dot.Build
      Text.Dot.Monad
      Text.Dot.Render
      Text.Dot.Types

  hs-source-dirs: common src
  build-depends:
    , base                  >=4.16 && <5
    , containers            <1
    , hashable              >=1    && <2
    , lens                  >=5    && <6
    , mtl                   >=2    && <3
    , text                  >=2    && <3
    , text-builder          >=1    && <2
    , transformers          <1
    , unordered-containers  <1

test-suite tests
  import:             setup
  type:               exitcode-stdio-1.0
  main-is:            Tests.hs
  other-modules:
    Golden
    Prelude
    Reporter

  hs-source-dirs:     common test
  ghc-options:        -F -pgmF=tasty-autocollect
  build-tool-depends: tasty-autocollect:tasty-autocollect
  build-depends:
    , base                  >=4.16 && <5
    , containers
    , directory
    , filepath
    , graphwiz
    , hashable
    , lens
    , mtl
    , stm
    , tagged
    , tasty
    , tasty-autocollect
    , tasty-golden
    , text
    , text-builder
    , transformers
    , unordered-containers

executable example
  import:             setup
  main-is:            Main.hs
  hs-source-dirs:     example
  default-extensions: ImplicitPrelude
  build-depends:
    , base
    , graphwiz
    , lens
    , text
    , text-builder