hledger -package:hledger-web

Command-line interface for the hledger accounting system The command-line interface for the hledger accounting system. Its basic function is to read a plain text file describing financial transactions and produce useful reports. 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
This is the root of the hledger-lib package and the Hledger.* module hierarchy. hledger-lib is the core engine used by various hledger UIs and tools, providing the main data types, file format parsers, reporting logic, and utilities. SPDX-License-Identifier: GPL-3.0-or-later Copyright (c) 2007-2025 (each year in this range) Simon Michael simon@joyful.com and contributors. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
A library providing the core functionality of hledger This library contains hledger's core functionality. It is used by most hledger* packages so that they support the same command line options, file formats, 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. See also:
Build a cmdarg mode for a hledger command, from a help template and flag/argument specifications. Reduces boilerplate a little, though the complicated cmdargs flag and argument specs are still required.
Terminal interface for the hledger accounting system A simple terminal user interface for the hledger accounting system. It can be a more convenient way to browse your accounts than the CLI. 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
Not on Stackage, so not searched. Web API server for the hledger accounting tool
Not on Stackage, so not searched. A pie chart image generator for the hledger accounting tool.
Not on Stackage, so not searched. Compares the transactions in two ledger files.
Not on Stackage, so not searched. An hledger workflow focusing on automated statement import and classification.
A terminal UI as drop-in replacement for hledger add This is a terminal UI as drop-in replacement for hledger add. It improves in the following ways on hledger's add command:
  • Interactive as-you-type completion for account names and descriptions with optional fuzzy matching.
  • Integrated calculator: Amounts can be written as simple sums with real-time feedback on the result.
  • All actions while entering a transaction can be undone
  • Configurable format for date input. Instead of y/m/d it is also possible to use other formats like the german d.m.y.
Executable only. computes interest for a given account
Not on Stackage, so not searched. computes the internal rate of return of an investment
Not on Stackage, so not searched. An hledger workflow focusing on automated statement import and classification.
Generate HLedger Price Directives From Daily Stock Quotes. hledger-stockquotes is an addon for hledger that reads your journal file, pulls the historical stock prices for commodities, and writes out a new journal file containing the respective price directives. The AlphaVantage API is used to fetch the stock quotes and you will need a free API key to use this program. You can install hledger-stockquotes with Stack: stack install --resolver nightly hledger-stockquotes. Then run hledger-stockquotes --help to see the usage instructions & all available options.
Not on Stackage, so not searched. A curses-style console interface for the hledger accounting tool.
Custom error data for hledger parsers. Specialised for a Text parse stream. ReparseableTextParseErrorData ?
A specialised version of ParseErrorBundle: a non-empty collection of hledger parse errors, equipped with PosState to help pretty-print them. Specialised for a Text parse stream.
The name and package version of a hledger binary, and the build's git hash, the release date, and the binary's intended operating machine and machine architecture, if we can detect these. Also, a copy of the --version output from which it was parsed.
A hledger version string, as shown by hledger --version. This can vary; some examples:
  • dev builds: hledger 1.42.99-g2288f5193-20250422, mac-aarch64
  • release builds: hledger 1.42.1, mac-aarch64
  • older versions: hledger 1.21
Make classy lenses for Hledger options fields. This is intended to be used with BalancingOpts, InputOpt, ReportOpts, ReportSpec, and CliOpts. When run on X, it will create a typeclass named HasX (except for ReportOpts, which will be named HasReportOptsNoUpdate) containing all the lenses for that type. If the field name starts with an underscore, the lens name will be created by stripping the underscore from the front on the name. If the field name ends with an underscore, the field name ends with an underscore, the lens name will be mostly created by stripping the underscore, but a few names for which this would create too many conflicts instead have a second underscore appended. ReportOpts fields for which updating them requires updating the query in ReportSpec are instead names by dropping the trailing underscore and appending NoUpdate to the name, e.g. querystring_ -> querystringNoUpdate. There are a few reasons for the complicated rules. - We have some legacy field names ending in an underscore (e.g. value_) which we want to temporarily accommodate, before eventually switching to a more modern style (e.g. _rsReportOpts) - Certain fields in ReportOpts need to update the enclosing ReportSpec when they are updated, and it is a common programming error to forget to do this. We append NoUpdate to those lenses which will not update the enclosing field, and reserve the shorter name for manually define lenses (or at least something lens-like) which will update the ReportSpec. cf. the lengthy discussion here and in surrounding comments: https://github.com/simonmichael/hledger/pull/1545#issuecomment-881974554