Go to file
Simon Michael 499e20c0b2 lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11
fail is moving out of Monad and into it's own MonadFail class.
This will be enforced in GHC 8.8 (I think).

base-compat/base-compat-batteries 0.11.0 have adapted to this,
and are approaching stackage nightly
(https://github.com/commercialhaskell/stackage/issues/4802).

hledger is now ready to build with base-compat-batteries 0.11.0, once
all of our deps do (eg aeson). We are still compatible with the older
0.10.x and GHC 7.10.3 as well.

For now we are using both fails:

- new fail (from Control.Monad.Fail), used in our parsers, imported
  via base-compat-batteries Control.Monad.Fail.Compat to work with
  older GHC versions.

- old fail (from GHC.Base, exported by Prelude, Control.Monad,
  Control.Monad.State.Strict, Prelude.Compat, ...), used in easytest's
  Test, since I couldn't find their existing fail implementation to update.

To reduce (my) confusion, these are imported carefully, consistently,
and qualified everywhere as Fail.fail and Prelude.fail, with clashing
re-exports suppressed, like so:

import Prelude hiding (fail)
import qualified Prelude (fail)
import Control.Monad.State.Strict hiding (fail)
import "base-compat-batteries" Prelude.Compat hiding (fail)
import qualified "base-compat-batteries" Control.Monad.Fail.Compat as Fail
2019-09-08 17:13:47 -07:00
.github ;github: issue templates: tweak support wording 2019-06-07 08:14:07 -07:00
.sandstorm Add --capabilities-header to launcher.sh 2018-06-24 17:44:22 +02:00
bin bin: check: fix weird hashbang error (#1072) 2019-07-17 00:01:10 +01:00
checks update dev setup tests 2015-03-16 17:59:06 -07:00
doc ;doc: README note 2019-09-01 10:02:15 -07:00
docker package: added helper scripts in docker/ 2019-01-31 12:44:12 -08:00
examples ;examples: Cody: hledger compatibility and a txn tweak 2019-08-23 08:05:44 -07:00
hledger lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11 2019-09-08 17:13:47 -07:00
hledger-api bump versions to 1.15 2019-09-01 08:53:06 -07:00
hledger-install ;install: bump to 1.15.2 2019-09-05 15:43:53 -07:00
hledger-lib lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11 2019-09-08 17:13:47 -07:00
hledger-ui lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11 2019-09-08 17:13:47 -07:00
hledger-web ;doc: regen manuals 2019-09-02 11:11:56 -07:00
shell-completion Update shell completion script 2019-06-30 10:38:06 +02:00
tests ;valuation: test documenting new end-date behaviour (#1083) 2019-09-05 21:03:30 -07:00
tools ;doc: don't add page TOCs any more, sphinx has it covered 2019-08-26 09:37:03 -07:00
.appveyor.yml appveyor: note 7z docs 2019-03-09 17:43:54 -08:00
.ci .ci: track generated md files as well 2018-05-21 08:35:49 -07:00
.ctags tools: remove some more hakyll-std traces 2018-05-09 10:20:21 -07:00
.dockerignore package: added Dockerfile 2019-01-29 16:14:03 -08:00
.editorconfig fix datepicker not closing, linting 2017-12-30 13:44:40 -05:00
.ghci tools: .ghci file to control prompt 2017-03-29 14:43:00 -07:00
.gitignore ;site: git ignore the site/ sub-repo 2019-08-26 18:41:43 -07:00
.hlint.yaml refactor: lib: hlint cleanups 2019-02-14 05:15:49 -08:00
.mailmap doc: use consistent spelling of Mykola Orliuk 2017-03-27 05:47:15 -07:00
.travis-maybe-skip.sh tools: travis: note occasional breakage on PRs 2017-10-16 08:03:43 -07:00
.travis.yml travis: skip hledger-api at least for now to stay under time limit 2019-06-14 19:04:09 -07:00
.version bump version to 1.13 2019-02-01 17:19:19 -08:00
azure-pipelines.yml ci: azure: try without display names 2019-02-02 12:55:12 -08:00
bench.sh tools: make bench: disable slowest 10k-txn benchmarks by default 2017-12-05 14:38:55 -08:00
cabal-install.sh cabal-install: do a cabal update 2018-02-16 23:11:10 -08:00
cabal.project disregard over-specified version constraints in brick and config-ini 2018-10-24 10:37:28 -07:00
CHANGES.md ;doc: more changelog cleanups 2019-09-01 09:59:51 -07:00
CONTRIBUTING.md ;doc: contrib: fix some links when on github, & make sphinx happier 2019-08-29 07:30:20 -07:00
dev.hs collect some langage pragmas in dev.hs 2019-02-20 18:08:33 -08:00
Dockerfile Update Dockerfile (#1075) 2019-07-26 19:49:04 +01:00
LICENSE add LICENSE 2008-10-01 07:52:07 +00:00
Makefile ;make tag: drop nonexistent path causing this to fail 2019-09-02 07:17:34 -07:00
Makefile.helpsys make: rename sub-makefiles; start moving site script to make/shake 2019-03-05 18:43:04 -08:00
README.md doc: fix readme markdown formatting on github 2017-10-31 12:03:26 -07:00
Shake.hs ;shake manuals: workaround to avoid ANSI codes in plaintext help 2019-09-02 11:05:28 -07:00
stack-ghc7.10.yaml ;deps: a better fix for nubSortBy with ghc 7.10, 8.0 2019-07-13 00:13:33 -07:00
stack-ghc8.0.yaml ;deps: a better fix for nubSortBy with ghc 7.10, 8.0 2019-07-13 00:13:33 -07:00
stack-ghc8.2.yaml ;deps: explicit process extra-dep for ghc 8.2 also 2019-07-13 00:12:44 -07:00
stack-ghc8.4.yaml ;stack: bump to latest ghc 8.2, 8.4 snapshots 2019-07-12 15:26:16 -07:00
stack.yaml lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11 2019-09-08 17:13:47 -07:00

hledger

lightweight, portable, dependable accounting tools

hledger is a computer program for easily tracking money, time, or other commodities, on unix, mac and windows (and web-capable mobile devices, to some extent).

It is first a command-line tool, but there are also curses-style and web interfaces, and a Haskell library (http://hackage.haskell.org/package/hledger-lib) for building your own programs and scripts (hledger is written in Haskell). hledger was inspired by and is largely compatible with Ledger. hledger is free software available under the GNU General Public License v3+.

hledger aims to help both computer experts and regular folks to gain clarity and control in their finances and time management, but currently it is a bit more suited to techies. I use it every day to:

  • track spending and income
  • see time reports by day/week/month/project
  • get accurate numbers for client billing and tax filing
  • track invoices

Though limited in features, hledger is lightweight, usable and reliable. For some, it is a simpler, less distracting, more future-proof alternative to Quicken or GnuCash.

For more, see http://hledger.org.

Support

Backers

Support us with a monthly donation and help us continue our activities. [Become a backer]

Sponsors

Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]

license

OpenCollective OpenCollective bountysource github issues

on hackage on stackage nightly on stackage lts on stackage lts 7

travis build status appveyor windows build status