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