name: hledger-lib
version: 1.22.99
synopsis: A reusable library providing the core functionality of hledger
description: |
  A reusable library containing hledger's core functionality.
  This is used by most hledger* packages so that they support the same
  common file formats, command line options, reports etc.

  hledger is a robust, cross-platform set of tools for tracking money,
  time, or any other commodity, using double-entry accounting and a
  simple, editable file format, with command-line, terminal and web
  interfaces. It is a Haskell rewrite of Ledger, and one of the leading
  implementations of Plain Text Accounting. Read more at:
  <https://hledger.org>

category: Finance
license: GPL-3
author: Simon Michael <simon@joyful.com>
maintainer: Simon Michael <simon@joyful.com>
github: simonmichael/hledger
homepage: http://hledger.org
bug-reports: http://bugs.hledger.org
stability: stable
tested-with: GHC==8.6.5, GHC==8.8.4, GHC==8.10.4, GHC==9.0.1

extra-source-files:
- CHANGES.md
- README.md
- test/unittest.hs
- test/doctests.hs

#data-files:

dependencies:
- base >=4.11 && <4.16
- base-compat-batteries >=0.10.1 && <0.12
- aeson >=1
- aeson-pretty
- ansi-terminal >=0.9
- array
- blaze-markup >=0.5.1
- bytestring
- call-stack
- cmdargs >=0.10
- containers >=0.5.9
- cassava
- cassava-megaparsec
- data-default >=0.5
- Decimal >=0.5.1
- directory
- file-embed >=0.0.10
- filepath
- hashtables >=1.2.3.1
- megaparsec >=7.0.0 && <9.2
- microlens >=0.4
- microlens-th >=0.4
- mtl >=2.2.1
- parser-combinators >=0.4.0
- pretty-simple >4 && <5
- regex-tdfa
- safe >=0.2
- tabular >=0.2
- tasty >=1.2.3
- tasty-hunit >=0.10.0.2
- template-haskell
- text >=1.2
- time >=1.5
- timeit
- transformers >=0.2
- unordered-containers >=0.2
- uglymemo
- utf8-string >=0.3.5
- extra >=1.6.3
- Glob >= 0.9
# for ledger-parse:
#- parsers >=0.5
#- system-filepath
#- trifecta >=0.91

ghc-options:
- -Wall
- -fno-warn-unused-do-bind
- -fno-warn-name-shadowing
- -fno-warn-missing-signatures
- -fno-warn-type-defaults
- -fno-warn-orphans

source-dirs: 
#- other/ledger-parse
- .

library:
  exposed-modules:
  - Hledger
  - Hledger.Data
  - Hledger.Data.Account
  - Hledger.Data.AccountName
  - Hledger.Data.Amount
  - Hledger.Data.Dates
  - Hledger.Read.InputOptions
  - Hledger.Data.Journal
  - Hledger.Data.Json
  - Hledger.Data.Ledger
  - Hledger.Data.Period
  - Hledger.Data.PeriodicTransaction
  - Hledger.Data.StringFormat
  - Hledger.Data.Posting
  - Hledger.Data.RawOptions
  - Hledger.Data.Timeclock
  - Hledger.Data.Transaction
  - Hledger.Data.TransactionModifier
  - Hledger.Data.Types
  - Hledger.Data.Valuation
  - Hledger.Query
  - Hledger.Read
  - Hledger.Read.Common
  - Hledger.Read.CsvReader
  - Hledger.Read.JournalReader
#  - Hledger.Read.LedgerReader
  - Hledger.Read.TimedotReader
  - Hledger.Read.TimeclockReader
  - Hledger.Reports
  - Hledger.Reports.ReportOptions
  - Hledger.Reports.ReportTypes
  - Hledger.Reports.AccountTransactionsReport
  - Hledger.Reports.BalanceReport
  - Hledger.Reports.BudgetReport
  - Hledger.Reports.EntriesReport
  - Hledger.Reports.MultiBalanceReport
  - Hledger.Reports.PostingsReport
  - Hledger.Utils
  - Hledger.Utils.Debug
  - Hledger.Utils.Parse
  - Hledger.Utils.Regex
  - Hledger.Utils.String
  - Hledger.Utils.Test
  - Hledger.Utils.Text
  - Text.Tabular.AsciiWide
#  other-modules:
#  - Ledger.Parser.Text

# "cabal test hledger-lib" currently fails, see doctest suite below
tests:

  unittest:
    buildable: true
    source-dirs: test
    main: unittest.hs
    other-modules: []  # prevent double compilation, https://github.com/sol/hpack/issues/188
    dependencies:
    - hledger-lib

  # Note when run by cabal, doctest requires a ghc environment file,
  # so we ensure this is generated, see cabal.project.
  # https://github.com/simonmichael/hledger/issues/1139
  doctest:
    source-dirs: test
    main: doctests.hs  # can't call it doctest.hs ("File name does not match module name")
    other-modules: []  # prevent double compilation, https://github.com/sol/hpack/issues/188
    dependencies:
    # prefer the latest doctest
    - doctest >=0.18.1
    - Glob >=0.7

    # disable doctest with GHC 9 for now, https://github.com/sol/doctest/issues/301
    when:
    - condition: impl(ghc >= 9.0)
      buildable: false

    # ghc 8.4+ on mac needs this workaround. See
    # https://github.com/sol/doctest/issues/199
    # https://ghc.haskell.org/trac/ghc/ticket/15105#comment:10 :
    #  ~$ locate HSinteger-gmp-1.0.2.0.o
    #  /Users/simon/.stack/programs/x86_64-osx/ghc-8.4.3/lib/ghc-8.4.2/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o
    #  ~$ mv /Users/simon/.stack/programs/x86_64-osx/ghc-8.4.3/lib/ghc-8.4.2/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o{,_DISABLE_GHC_ISSUE_15105}
    # Should probably disable it by default:
    #when:
    # - condition: os(darwin) && impl(ghc >= 8.4)
    #   buildable: false
