2015-10-20 16:26:09 +03:00
|
|
|
|
2024-03-25 03:22:54 +03:00
|
|
|
.TH "HLEDGER\-WEB" "1" "March 2024" "hledger-web-1.32.99 " "hledger User Manuals"
|
2015-10-20 16:26:09 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.SH NAME
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web \- robust, friendly plain text accounting (Web version)
|
2015-10-20 16:26:09 +03:00
|
|
|
.SH SYNOPSIS
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]hledger\-web [\-\-serve|\-\-serve\-api] [OPTS] [ARGS]\f[R]
|
2015-10-20 16:26:09 +03:00
|
|
|
.PD 0
|
|
|
|
.P
|
|
|
|
.PD
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]hledger web \-\- [\-\-serve|\-\-serve\-api] [OPTS] [ARGS]\f[R]
|
2015-10-20 16:26:09 +03:00
|
|
|
.SH DESCRIPTION
|
2023-12-02 22:09:53 +03:00
|
|
|
This manual is for hledger\[aq]s web interface, version 1.32.99.
|
2022-12-14 20:53:09 +03:00
|
|
|
See also the hledger manual for common concepts and file formats.
|
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger is a robust, user\-friendly, cross\-platform set of programs for
|
|
|
|
tracking money, time, or any other commodity, using double\-entry
|
2023-01-11 12:34:47 +03:00
|
|
|
accounting and a simple, editable file format.
|
|
|
|
hledger is inspired by and largely compatible with ledger(1), and
|
|
|
|
largely interconvertible with beancount(1).
|
2015-10-20 16:26:09 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web is a simple web application for browsing and adding
|
2022-11-03 21:31:47 +03:00
|
|
|
transactions.
|
2024-01-13 02:52:11 +03:00
|
|
|
It provides a more user\-friendly UI than the hledger CLI or hledger\-ui
|
2022-11-03 21:31:47 +03:00
|
|
|
TUI, showing more at once (accounts, the current account register,
|
2024-01-13 02:52:11 +03:00
|
|
|
balance charts) and allowing history\-aware data entry, interactive
|
2015-10-30 23:23:01 +03:00
|
|
|
searching, and bookmarking.
|
2015-10-20 16:26:09 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web also lets you share a journal with multiple users, or even
|
2015-10-20 16:26:09 +03:00
|
|
|
the public web.
|
|
|
|
There is no access control, so if you need that you should put it behind
|
|
|
|
a suitable web proxy.
|
|
|
|
As a small protection against data loss when running an unprotected
|
2022-11-03 21:31:47 +03:00
|
|
|
instance, it writes a numbered backup of the main journal file (only) on
|
|
|
|
every edit.
|
2015-10-20 16:26:09 +03:00
|
|
|
.PP
|
2023-05-26 22:28:53 +03:00
|
|
|
Like hledger, it reads from (and appends to) a journal file specified by
|
2023-12-02 06:25:00 +03:00
|
|
|
the \f[CR]LEDGER_FILE\f[R] environment variable (defaulting to
|
|
|
|
\f[CR]$HOME/.hledger.journal\f[R]); or you can specify files with
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-f\f[R] options.
|
2023-05-26 22:28:53 +03:00
|
|
|
It can also read timeclock files, timedot files, or any CSV/SSV/TSV file
|
|
|
|
with a date field.
|
2024-01-13 02:52:11 +03:00
|
|
|
(See hledger(1) \-> Input for details.)
|
2022-11-03 21:31:47 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web can be run in three modes:
|
2022-11-03 21:31:47 +03:00
|
|
|
.IP \[bu] 2
|
|
|
|
Transient mode (the default): your default web browser will be opened to
|
|
|
|
show the app if possible, and the app exits automatically after two
|
|
|
|
minutes of inactivity (no requests received and no open browser windows
|
|
|
|
viewing it).
|
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
With \f[CR]\-\-serve\f[R]: the app runs without stopping, and without
|
2022-11-03 21:31:47 +03:00
|
|
|
opening a browser.
|
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
With \f[CR]\-\-serve\-api\f[R]: only the JSON API is served.
|
2022-11-03 21:31:47 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
In all cases hledger\-web runs as a foreground process, logging requests
|
2022-11-03 21:31:47 +03:00
|
|
|
to stdout.
|
2019-02-21 00:15:41 +03:00
|
|
|
.SH OPTIONS
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web provides the following options:
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-serve\f[R]
|
|
|
|
serve and log requests, don\[aq]t browse or auto\-exit after timeout
|
2017-01-06 04:18:13 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-serve\-api\f[R]
|
|
|
|
like \-\-serve, but serve only the JSON web API, not the web UI
|
2023-12-16 02:59:02 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-allow=view|add|edit\f[R]
|
2023-12-16 02:59:02 +03:00
|
|
|
set the user\[aq]s access level for changing data (default:
|
|
|
|
\f[CR]add\f[R]).
|
|
|
|
It also accepts \f[CR]sandstorm\f[R] for use on that platform (reads
|
2024-01-13 02:52:11 +03:00
|
|
|
permissions from the \f[CR]X\-Sandstorm\-Permissions\f[R] request
|
|
|
|
header).
|
2023-12-16 02:59:02 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-cors=ORIGIN\f[R]
|
|
|
|
allow cross\-origin requests from the specified origin; setting ORIGIN
|
|
|
|
to \[dq]*\[dq] allows requests from any origin
|
2019-09-01 07:02:00 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-host=IPADDR\f[R]
|
2017-01-06 04:18:13 +03:00
|
|
|
listen on this IP address (default: 127.0.0.1)
|
2023-12-16 02:59:02 +03:00
|
|
|
.PP
|
|
|
|
By default the server listens on IP address \f[CR]127.0.0.1\f[R], which
|
|
|
|
is accessible only to requests from the local machine..
|
2024-01-13 02:52:11 +03:00
|
|
|
You can use \f[CR]\-\-host\f[R] to listen on a different address
|
2023-12-16 02:59:02 +03:00
|
|
|
configured on the machine, eg to allow access from other machines.
|
|
|
|
The special address \f[CR]0.0.0.0\f[R] causes it to listen on all
|
|
|
|
addresses configured on the machine.
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-port=PORT\f[R]
|
2017-01-06 04:18:13 +03:00
|
|
|
listen on this TCP port (default: 5000)
|
2023-12-16 02:59:02 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
Similarly, you can use \f[CR]\-\-port\f[R] to listen on a TCP port other
|
2023-12-16 02:59:02 +03:00
|
|
|
than 5000.
|
2024-01-13 02:52:11 +03:00
|
|
|
This is useful if you want to run multiple hledger\-web instances on a
|
2023-12-16 02:59:02 +03:00
|
|
|
machine.
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-socket=SOCKETFILE\f[R]
|
2023-12-16 02:59:02 +03:00
|
|
|
listen on the given unix socket instead of an IP address and port (unix
|
2024-01-13 02:52:11 +03:00
|
|
|
only; implies \-\-serve)
|
2023-12-16 02:59:02 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
When \f[CR]\-\-socket\f[R] is used, hledger\-web creates and
|
|
|
|
communicates via a socket file instead of a TCP port.
|
2023-12-16 02:59:02 +03:00
|
|
|
This can be more secure, respects unix file permissions, and makes
|
2024-01-13 02:52:11 +03:00
|
|
|
certain use cases easier, such as running per\-user instances behind an
|
2023-12-16 02:59:02 +03:00
|
|
|
nginx reverse proxy.
|
|
|
|
(Eg:
|
|
|
|
\f[CR]proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;\f[R].)
|
2020-01-21 05:02:42 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-base\-url=URL\f[R]
|
2017-01-06 04:18:13 +03:00
|
|
|
set the base url (default: http://IPADDR:PORT).
|
2023-05-31 20:57:37 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
You can use \f[CR]\-\-base\-url\f[R] to change the protocol, hostname,
|
|
|
|
port and path that appear in hledger\-web\[aq]s hyperlinks.
|
|
|
|
This is useful eg when integrating hledger\-web within a larger website.
|
2023-12-02 06:25:00 +03:00
|
|
|
The default is \f[CR]http://HOST:PORT/\f[R] using the server\[aq]s
|
|
|
|
configured host address and TCP port (or \f[CR]http://HOST\f[R] if PORT
|
2023-05-31 20:57:37 +03:00
|
|
|
is 80).
|
2023-12-16 02:59:02 +03:00
|
|
|
Note this affects url generation but not route parsing.
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-test\f[R]
|
|
|
|
run hledger\-web\[aq]s tests and exit.
|
|
|
|
hspec test runner args may follow a \-\-, eg: hledger\-web \-\-test \-\-
|
|
|
|
\-\-help
|
2023-05-31 20:57:37 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web also supports many of hledger\[aq]s general options.
|
2023-12-16 02:59:02 +03:00
|
|
|
Query options and arguments may be used to set an initial filter, which
|
|
|
|
although not shown in the UI, will restrict the data shown, in addition
|
|
|
|
to any search query entered in the UI.
|
2024-03-25 03:22:54 +03:00
|
|
|
.PP
|
|
|
|
Note that hledger\-web shows accounts with zero balances by default,
|
|
|
|
like \f[CR]hledger\-ui\f[R] (and unlike \f[CR]hledger\f[R]).
|
|
|
|
Using the \f[CR]\-E/\-\-empty\f[R] flag at startup will hide them.
|
|
|
|
.PP
|
|
|
|
If you see accounts which appear to have a zero balance, but cannot be
|
|
|
|
hidden with \f[CR]\-E\f[R]: these have a mixed\-cost balance which looks
|
|
|
|
like zero when costs are hidden.
|
|
|
|
Currently hledger\-web does not show costs at all.
|
2023-05-31 20:57:37 +03:00
|
|
|
.SS General help options
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-h \-\-help\f[R]
|
2023-05-31 20:57:37 +03:00
|
|
|
show general or COMMAND help
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-man\f[R]
|
2023-05-31 20:57:37 +03:00
|
|
|
show general or COMMAND user manual with man
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-info\f[R]
|
2023-05-31 20:57:37 +03:00
|
|
|
show general or COMMAND user manual with info
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-version\f[R]
|
2023-05-31 20:57:37 +03:00
|
|
|
show general or ADDONCMD version
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-debug[=N]\f[R]
|
|
|
|
show debug output (levels 1\-9, default: 1)
|
2023-05-31 20:57:37 +03:00
|
|
|
.SS General input options
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-f FILE \-\-file=FILE\f[R]
|
2017-03-30 00:35:59 +03:00
|
|
|
use a different input file.
|
2024-01-13 02:52:11 +03:00
|
|
|
For stdin, use \- (default: \f[CR]$LEDGER_FILE\f[R] or
|
2023-12-02 06:25:00 +03:00
|
|
|
\f[CR]$HOME/.hledger.journal\f[R])
|
2016-05-29 09:43:52 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-rules\-file=RULESFILE\f[R]
|
2017-03-30 00:35:59 +03:00
|
|
|
Conversion rules file to use when reading CSV (default: FILE.rules)
|
2016-05-29 09:43:52 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-separator=CHAR\f[R]
|
2019-01-25 02:37:40 +03:00
|
|
|
Field separator to expect when reading CSV (default: \[aq],\[aq])
|
2018-09-07 22:44:17 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-alias=OLD=NEW\f[R]
|
2017-03-30 00:35:59 +03:00
|
|
|
rename accounts named OLD to NEW
|
2016-05-29 09:43:52 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-pivot FIELDNAME\f[R]
|
2017-09-05 21:44:02 +03:00
|
|
|
use some other field or tag for the account name
|
2016-05-29 09:43:52 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-I \-\-ignore\-assertions\f[R]
|
2020-01-05 18:04:00 +03:00
|
|
|
disable balance assertion checks (note: does not disable balance
|
|
|
|
assignments)
|
2020-11-26 19:52:56 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-s \-\-strict\f[R]
|
2020-11-26 19:52:56 +03:00
|
|
|
do extra error checking (check that all posted accounts are declared)
|
2023-05-31 20:57:37 +03:00
|
|
|
.SS General reporting options
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-b \-\-begin=DATE\f[R]
|
2021-05-18 23:48:42 +03:00
|
|
|
include postings/txns on or after this date (will be adjusted to
|
|
|
|
preceding subperiod start when using a report interval)
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-e \-\-end=DATE\f[R]
|
2021-05-18 23:48:42 +03:00
|
|
|
include postings/txns before this date (will be adjusted to following
|
|
|
|
subperiod end when using a report interval)
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-D \-\-daily\f[R]
|
2016-06-03 19:38:06 +03:00
|
|
|
multiperiod/multicolumn report by day
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-W \-\-weekly\f[R]
|
2016-06-03 19:38:06 +03:00
|
|
|
multiperiod/multicolumn report by week
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-M \-\-monthly\f[R]
|
2016-06-03 19:38:06 +03:00
|
|
|
multiperiod/multicolumn report by month
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-Q \-\-quarterly\f[R]
|
2016-06-03 19:38:06 +03:00
|
|
|
multiperiod/multicolumn report by quarter
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-Y \-\-yearly\f[R]
|
2016-06-03 19:38:06 +03:00
|
|
|
multiperiod/multicolumn report by year
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-p \-\-period=PERIODEXP\f[R]
|
2017-12-15 05:20:07 +03:00
|
|
|
set start date, end date, and/or reporting interval all at once using
|
2019-09-01 07:02:00 +03:00
|
|
|
period expressions syntax
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-date2\f[R]
|
2017-08-22 03:19:06 +03:00
|
|
|
match the secondary date instead (see command help for other effects)
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-today=DATE\f[R]
|
2021-09-19 00:24:52 +03:00
|
|
|
override today\[aq]s date (affects relative smart dates, for
|
|
|
|
tests/examples)
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-U \-\-unmarked\f[R]
|
|
|
|
include only unmarked postings/txns (can combine with \-P or \-C)
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-P \-\-pending\f[R]
|
2015-10-20 16:26:09 +03:00
|
|
|
include only pending postings/txns
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-C \-\-cleared\f[R]
|
2017-06-16 04:47:28 +03:00
|
|
|
include only cleared postings/txns
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-R \-\-real\f[R]
|
|
|
|
include only non\-virtual postings
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-NUM \-\-depth=NUM\f[R]
|
2017-09-22 21:51:53 +03:00
|
|
|
hide/aggregate accounts or postings more than NUM levels deep
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-E \-\-empty\f[R]
|
|
|
|
show items with zero amount, normally hidden (and vice\-versa in
|
|
|
|
hledger\-ui/hledger\-web)
|
2015-10-20 16:26:09 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-B \-\-cost\f[R]
|
2020-06-20 00:36:58 +03:00
|
|
|
convert amounts to their cost/selling amount at transaction time
|
2016-06-03 19:38:06 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-V \-\-market\f[R]
|
2020-06-20 00:36:58 +03:00
|
|
|
convert amounts to their market value in default valuation commodities
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-X \-\-exchange=COMM\f[R]
|
2020-06-20 00:36:58 +03:00
|
|
|
convert amounts to their market value in commodity COMM
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-value\f[R]
|
|
|
|
convert amounts to cost or market value, more flexibly than \-B/\-V/\-X
|
2020-06-20 00:36:58 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-infer\-equity\f[R]
|
2023-05-26 22:28:53 +03:00
|
|
|
infer conversion equity postings from costs
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-infer\-costs\f[R]
|
2023-05-26 22:28:53 +03:00
|
|
|
infer costs from conversion equity postings
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-infer\-market\-prices\f[R]
|
2023-05-26 22:28:53 +03:00
|
|
|
use costs as additional market prices, as if they were P directives
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-forecast\f[R]
|
2023-05-26 22:28:53 +03:00
|
|
|
generate transactions from periodic rules,
|
|
|
|
between the latest recorded txn and 6 months from today,
|
|
|
|
or during the specified PERIOD (= is required).
|
|
|
|
Auto posting rules will be applied to these transactions as well.
|
2024-01-13 02:52:11 +03:00
|
|
|
Also, in hledger\-ui make future\-dated transactions visible.
|
2017-12-15 05:20:07 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-auto\f[R]
|
2023-05-26 22:28:53 +03:00
|
|
|
generate extra postings by applying auto posting rules to all txns (not
|
|
|
|
just forecast txns)
|
2017-12-15 05:20:07 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-verbose\-tags\f[R]
|
2023-05-26 22:28:53 +03:00
|
|
|
add visible tags indicating transactions or postings which have been
|
|
|
|
generated/modified
|
2020-07-14 22:22:27 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-commodity\-style\f[R]
|
2021-09-21 05:56:36 +03:00
|
|
|
Override the commodity style in the output for the specified commodity.
|
|
|
|
For example \[aq]EUR1.000,00\[aq].
|
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-color=WHEN (or \-\-colour=WHEN)\f[R]
|
|
|
|
Should color\-supporting commands use ANSI color codes in text output.
|
|
|
|
\[aq]auto\[aq] (default): whenever stdout seems to be a
|
|
|
|
color\-supporting terminal.
|
2020-07-18 22:37:06 +03:00
|
|
|
\[aq]always\[aq] or \[aq]yes\[aq]: always, useful eg when piping output
|
2024-01-13 02:52:11 +03:00
|
|
|
into \[aq]less \-R\[aq].
|
2020-07-18 22:37:06 +03:00
|
|
|
\[aq]never\[aq] or \[aq]no\[aq]: never.
|
|
|
|
A NO_COLOR environment variable overrides this.
|
2021-09-22 04:46:55 +03:00
|
|
|
.TP
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]\-\-pretty[=WHEN]\f[R]
|
2021-09-22 04:46:55 +03:00
|
|
|
Show prettier output, e.g.
|
2024-01-13 02:52:11 +03:00
|
|
|
using unicode box\-drawing characters.
|
2021-09-22 04:46:55 +03:00
|
|
|
Accepts \[aq]yes\[aq] (the default) or \[aq]no\[aq] (\[aq]y\[aq],
|
|
|
|
\[aq]n\[aq], \[aq]always\[aq], \[aq]never\[aq] also work).
|
|
|
|
If you provide an argument you must use \[aq]=\[aq], e.g.
|
2024-01-13 02:52:11 +03:00
|
|
|
\[aq]\-\-pretty=yes\[aq].
|
2017-03-30 00:35:59 +03:00
|
|
|
.PP
|
2017-10-01 00:29:25 +03:00
|
|
|
When a reporting option appears more than once in the command line, the
|
|
|
|
last one takes precedence.
|
|
|
|
.PP
|
|
|
|
Some reporting options can also be written as query arguments.
|
2019-02-21 00:15:41 +03:00
|
|
|
.SH PERMISSIONS
|
2024-01-13 02:52:11 +03:00
|
|
|
By default, hledger\-web allows anyone who can reach it to view the
|
2019-02-21 00:15:41 +03:00
|
|
|
journal and to add new transactions, but not to change existing data.
|
|
|
|
.PP
|
|
|
|
You can restrict who can reach it by
|
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
setting the IP address it listens on (see \f[CR]\-\-host\f[R] above).
|
2019-02-21 00:15:41 +03:00
|
|
|
By default it listens on 127.0.0.1, accessible to all users on the local
|
|
|
|
machine.
|
|
|
|
.IP \[bu] 2
|
|
|
|
putting it behind an authenticating proxy, using eg apache or nginx
|
|
|
|
.IP \[bu] 2
|
|
|
|
custom firewall rules
|
|
|
|
.PP
|
|
|
|
You can restrict what the users who reach it can do, by
|
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
using the \f[CR]\-\-capabilities=CAP[,CAP..]\f[R] flag when you start
|
|
|
|
it, enabling one or more of the following capabilities.
|
2023-12-02 06:25:00 +03:00
|
|
|
The default value is \f[CR]view,add\f[R]:
|
2019-02-21 00:15:41 +03:00
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]view\f[R] \- allows viewing the journal file and all included
|
|
|
|
files
|
2019-02-21 00:15:41 +03:00
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]add\f[R] \- allows adding new transactions to the main journal
|
|
|
|
file
|
2019-02-21 00:15:41 +03:00
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]manage\f[R] \- allows editing, uploading or downloading the main
|
|
|
|
or included files
|
2019-02-21 00:15:41 +03:00
|
|
|
.RE
|
|
|
|
.IP \[bu] 2
|
2024-01-13 02:52:11 +03:00
|
|
|
using the \f[CR]\-\-capabilities\-header=HTTPHEADER\f[R] flag to specify
|
|
|
|
a HTTP header from which it will read capabilities to enable.
|
|
|
|
hledger\-web on Sandstorm uses the X\-Sandstorm\-Permissions header to
|
2019-02-21 00:15:41 +03:00
|
|
|
integrate with Sandstorm\[aq]s permissions.
|
|
|
|
This is disabled by default.
|
|
|
|
.SH EDITING, UPLOADING, DOWNLOADING
|
2023-12-02 06:25:00 +03:00
|
|
|
If you enable the \f[CR]manage\f[R] capability mentioned above,
|
2019-05-24 08:26:43 +03:00
|
|
|
you\[aq]ll see a new \[dq]spanner\[dq] button to the right of the search
|
|
|
|
form.
|
2019-02-21 00:15:41 +03:00
|
|
|
Clicking this will let you edit, upload, or download the journal file or
|
|
|
|
any files it includes.
|
|
|
|
.PP
|
|
|
|
Note, unlike any other hledger command, in this mode you (or any
|
|
|
|
visitor) can alter or wipe the data files.
|
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
Normally whenever a file is changed in this way, hledger\-web saves a
|
2019-02-21 00:15:41 +03:00
|
|
|
numbered backup (assuming file permissions allow it, the disk is not
|
2022-12-01 23:24:23 +03:00
|
|
|
full, etc.)
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web is not aware of version control systems, currently; if you
|
2022-12-01 23:24:23 +03:00
|
|
|
use one, you\[aq]ll have to arrange to commit the changes yourself (eg
|
|
|
|
with a cron job or a file watcher like entr).
|
2019-02-21 00:15:41 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
Changes which would leave the journal file(s) unparseable or non\-valid
|
2019-02-21 00:15:41 +03:00
|
|
|
(eg with failing balance assertions) are prevented.
|
|
|
|
(Probably.
|
2024-01-13 02:52:11 +03:00
|
|
|
This needs re\-testing.)
|
2019-02-21 00:15:41 +03:00
|
|
|
.SH RELOADING
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-web detects changes made to the files by other means (eg if you
|
|
|
|
edit it directly, outside of hledger\-web), and it will show the new
|
|
|
|
data when you reload the page or navigate to a new page.
|
|
|
|
If a change makes a file unparseable, hledger\-web will display an error
|
2019-02-21 00:15:41 +03:00
|
|
|
message until the file has been fixed.
|
2019-09-01 07:02:00 +03:00
|
|
|
.PP
|
|
|
|
(Note: if you are viewing files mounted from another machine, make sure
|
|
|
|
that both machine clocks are roughly in step.)
|
2019-02-21 00:15:41 +03:00
|
|
|
.SH JSON API
|
2024-01-13 02:52:11 +03:00
|
|
|
In addition to the web UI, hledger\-web also serves a JSON API that can
|
2020-05-26 03:49:01 +03:00
|
|
|
be used to get data or add new transactions.
|
2024-01-13 02:52:11 +03:00
|
|
|
If you want the JSON API only, you can use the \f[CR]\-\-serve\-api\f[R]
|
2020-05-26 03:49:01 +03:00
|
|
|
flag.
|
|
|
|
Eg:
|
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2024-01-13 02:52:11 +03:00
|
|
|
$ hledger\-web \-f examples/sample.journal \-\-serve\-api
|
2020-05-26 03:49:01 +03:00
|
|
|
\&...
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2020-05-26 03:49:01 +03:00
|
|
|
.PP
|
|
|
|
You can get JSON data from these routes:
|
2019-02-21 00:15:41 +03:00
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2020-09-30 03:32:51 +03:00
|
|
|
/version
|
2019-02-21 00:15:41 +03:00
|
|
|
/accountnames
|
|
|
|
/transactions
|
|
|
|
/prices
|
|
|
|
/commodities
|
|
|
|
/accounts
|
2020-05-26 03:49:01 +03:00
|
|
|
/accounttransactions/ACCOUNTNAME
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2019-05-24 08:26:43 +03:00
|
|
|
.PP
|
2020-06-07 03:21:18 +03:00
|
|
|
Eg, all account names in the journal (similar to the accounts command).
|
2024-01-13 02:52:11 +03:00
|
|
|
(hledger\-web\[aq]s JSON does not include newlines, here we use python
|
|
|
|
to prettify it):
|
2020-05-26 03:49:01 +03:00
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2024-01-13 02:52:11 +03:00
|
|
|
$ curl \-s http://127.0.0.1:5000/accountnames | python \-m json.tool
|
2020-05-26 03:49:01 +03:00
|
|
|
[
|
|
|
|
\[dq]assets\[dq],
|
|
|
|
\[dq]assets:bank\[dq],
|
|
|
|
\[dq]assets:bank:checking\[dq],
|
|
|
|
\[dq]assets:bank:saving\[dq],
|
|
|
|
\[dq]assets:cash\[dq],
|
|
|
|
\[dq]expenses\[dq],
|
|
|
|
\[dq]expenses:food\[dq],
|
|
|
|
\[dq]expenses:supplies\[dq],
|
|
|
|
\[dq]income\[dq],
|
|
|
|
\[dq]income:gifts\[dq],
|
|
|
|
\[dq]income:salary\[dq],
|
|
|
|
\[dq]liabilities\[dq],
|
|
|
|
\[dq]liabilities:debts\[dq]
|
|
|
|
]
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2019-05-24 08:26:43 +03:00
|
|
|
.PP
|
2020-05-26 03:49:01 +03:00
|
|
|
Or all transactions:
|
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2024-01-13 02:52:11 +03:00
|
|
|
$ curl \-s http://127.0.0.1:5000/transactions | python \-m json.tool
|
2020-05-26 03:49:01 +03:00
|
|
|
[
|
|
|
|
{
|
|
|
|
\[dq]tcode\[dq]: \[dq]\[dq],
|
|
|
|
\[dq]tcomment\[dq]: \[dq]\[dq],
|
2024-01-13 02:52:11 +03:00
|
|
|
\[dq]tdate\[dq]: \[dq]2008\-01\-01\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]tdate2\[dq]: null,
|
|
|
|
\[dq]tdescription\[dq]: \[dq]income\[dq],
|
|
|
|
\[dq]tindex\[dq]: 1,
|
|
|
|
\[dq]tpostings\[dq]: [
|
|
|
|
{
|
|
|
|
\[dq]paccount\[dq]: \[dq]assets:bank:checking\[dq],
|
|
|
|
\[dq]pamount\[dq]: [
|
|
|
|
{
|
|
|
|
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
|
|
|
\[dq]aismultiplier\[dq]: false,
|
|
|
|
\[dq]aprice\[dq]: null,
|
|
|
|
\&...
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2019-05-24 08:26:43 +03:00
|
|
|
.PP
|
2020-05-26 03:49:01 +03:00
|
|
|
Most of the JSON corresponds to hledger\[aq]s data types; for details of
|
|
|
|
what the fields mean, see the Hledger.Data.Json haddock docs and click
|
|
|
|
on the various data types, eg Transaction.
|
2022-12-14 20:53:09 +03:00
|
|
|
And for a higher level understanding, see the journal docs.
|
2020-05-26 03:49:01 +03:00
|
|
|
.PP
|
|
|
|
In some cases there is outer JSON corresponding to a \[dq]Report\[dq]
|
|
|
|
type.
|
|
|
|
To understand that, go to the Hledger.Web.Handler.MiscR haddock and look
|
|
|
|
at the source for the appropriate handler to see what it returns.
|
2023-12-02 06:25:00 +03:00
|
|
|
Eg for \f[CR]/accounttransactions\f[R] it\[aq]s getAccounttransactionsR,
|
|
|
|
returning a \[dq]\f[CR]accountTransactionsReport ...\f[R]\[dq].
|
2020-05-26 03:49:01 +03:00
|
|
|
Looking up the haddock for that we can see that /accounttransactions
|
|
|
|
returns an AccountTransactionsReport, which consists of a report title
|
|
|
|
and a list of AccountTransactionsReportItem (etc).
|
|
|
|
.PP
|
|
|
|
You can add a new transaction to the journal with a PUT request to
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]/add\f[R], if hledger\-web was started with the \f[CR]add\f[R]
|
2020-05-26 03:49:01 +03:00
|
|
|
capability (enabled by default).
|
|
|
|
The payload must be the full, exact JSON representation of a hledger
|
|
|
|
transaction (partial data won\[aq]t do).
|
2024-01-13 02:52:11 +03:00
|
|
|
You can get sample JSON from hledger\-web\[aq]s \f[CR]/transactions\f[R]
|
2023-12-02 06:25:00 +03:00
|
|
|
or \f[CR]/accounttransactions\f[R], or you can export it with
|
2024-01-13 02:52:11 +03:00
|
|
|
hledger\-lib, eg like so:
|
2019-05-24 08:26:43 +03:00
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2024-01-13 02:52:11 +03:00
|
|
|
\&.../hledger$ stack ghci hledger\-lib
|
2020-06-07 03:21:18 +03:00
|
|
|
>>> writeJsonFile \[dq]txn.json\[dq] (head $ jtxns samplejournal)
|
2019-05-24 08:26:43 +03:00
|
|
|
>>> :q
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2019-05-24 08:26:43 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
Here\[aq]s how it looks as of hledger\-1.17 (remember, this JSON
|
2020-05-26 03:49:01 +03:00
|
|
|
corresponds to hledger\[aq]s Transaction and related data types):
|
2019-05-24 08:26:43 +03:00
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2020-05-26 03:49:01 +03:00
|
|
|
{
|
|
|
|
\[dq]tcomment\[dq]: \[dq]\[dq],
|
|
|
|
\[dq]tpostings\[dq]: [
|
|
|
|
{
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]pbalanceassertion\[dq]: null,
|
|
|
|
\[dq]pstatus\[dq]: \[dq]Unmarked\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]pamount\[dq]: [
|
|
|
|
{
|
|
|
|
\[dq]aprice\[dq]: null,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]aquantity\[dq]: {
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]floatingPoint\[dq]: 1,
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]decimalPlaces\[dq]: 10,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]decimalMantissa\[dq]: 10000000000
|
2020-05-26 03:49:01 +03:00
|
|
|
},
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]aismultiplier\[dq]: false,
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]astyle\[dq]: {
|
|
|
|
\[dq]ascommodityside\[dq]: \[dq]L\[dq],
|
|
|
|
\[dq]asdigitgroups\[dq]: null,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ascommodityspaced\[dq]: false,
|
|
|
|
\[dq]asprecision\[dq]: 2,
|
|
|
|
\[dq]asdecimalpoint\[dq]: \[dq].\[dq]
|
2020-05-26 03:49:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ptransaction_\[dq]: \[dq]1\[dq],
|
|
|
|
\[dq]paccount\[dq]: \[dq]assets:bank:checking\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]pdate\[dq]: null,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ptype\[dq]: \[dq]RegularPosting\[dq],
|
|
|
|
\[dq]pcomment\[dq]: \[dq]\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]pdate2\[dq]: null,
|
|
|
|
\[dq]ptags\[dq]: [],
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]poriginal\[dq]: null
|
2020-05-26 03:49:01 +03:00
|
|
|
},
|
|
|
|
{
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]pbalanceassertion\[dq]: null,
|
|
|
|
\[dq]pstatus\[dq]: \[dq]Unmarked\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]pamount\[dq]: [
|
|
|
|
{
|
|
|
|
\[dq]aprice\[dq]: null,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]acommodity\[dq]: \[dq]$\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]aquantity\[dq]: {
|
2024-01-13 02:52:11 +03:00
|
|
|
\[dq]floatingPoint\[dq]: \-1,
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]decimalPlaces\[dq]: 10,
|
2024-01-13 02:52:11 +03:00
|
|
|
\[dq]decimalMantissa\[dq]: \-10000000000
|
2020-05-26 03:49:01 +03:00
|
|
|
},
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]aismultiplier\[dq]: false,
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]astyle\[dq]: {
|
|
|
|
\[dq]ascommodityside\[dq]: \[dq]L\[dq],
|
|
|
|
\[dq]asdigitgroups\[dq]: null,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ascommodityspaced\[dq]: false,
|
|
|
|
\[dq]asprecision\[dq]: 2,
|
|
|
|
\[dq]asdecimalpoint\[dq]: \[dq].\[dq]
|
2020-05-26 03:49:01 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ptransaction_\[dq]: \[dq]1\[dq],
|
|
|
|
\[dq]paccount\[dq]: \[dq]income:salary\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]pdate\[dq]: null,
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ptype\[dq]: \[dq]RegularPosting\[dq],
|
|
|
|
\[dq]pcomment\[dq]: \[dq]\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]pdate2\[dq]: null,
|
|
|
|
\[dq]ptags\[dq]: [],
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]poriginal\[dq]: null
|
2020-05-26 03:49:01 +03:00
|
|
|
}
|
|
|
|
],
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]ttags\[dq]: [],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]tsourcepos\[dq]: {
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]tag\[dq]: \[dq]JournalSourcePos\[dq],
|
2020-05-26 03:49:01 +03:00
|
|
|
\[dq]contents\[dq]: [
|
|
|
|
\[dq]\[dq],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
1
|
|
|
|
]
|
2020-06-07 03:21:18 +03:00
|
|
|
]
|
2020-05-26 03:49:01 +03:00
|
|
|
},
|
2024-01-13 02:52:11 +03:00
|
|
|
\[dq]tdate\[dq]: \[dq]2008\-01\-01\[dq],
|
2020-06-07 03:21:18 +03:00
|
|
|
\[dq]tcode\[dq]: \[dq]\[dq],
|
|
|
|
\[dq]tindex\[dq]: 1,
|
|
|
|
\[dq]tprecedingcomment\[dq]: \[dq]\[dq],
|
|
|
|
\[dq]tdate2\[dq]: null,
|
|
|
|
\[dq]tdescription\[dq]: \[dq]income\[dq],
|
|
|
|
\[dq]tstatus\[dq]: \[dq]Unmarked\[dq]
|
2020-05-26 03:49:01 +03:00
|
|
|
}
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2019-09-01 07:02:00 +03:00
|
|
|
.PP
|
2020-05-26 03:49:01 +03:00
|
|
|
And here\[aq]s how to test adding it with curl.
|
|
|
|
This should add a new entry to your journal:
|
|
|
|
.IP
|
2023-12-02 06:25:00 +03:00
|
|
|
.EX
|
2024-01-13 02:52:11 +03:00
|
|
|
$ curl http://127.0.0.1:5000/add \-X PUT \-H \[aq]Content\-Type: application/json\[aq] \-\-data\-binary \[at]txn.json
|
2023-12-02 06:25:00 +03:00
|
|
|
.EE
|
2022-11-06 22:39:22 +03:00
|
|
|
.SH DEBUG OUTPUT
|
|
|
|
.SS Debug output
|
2024-01-13 02:52:11 +03:00
|
|
|
You can add \f[CR]\-\-debug[=N]\f[R] to the command line to log debug
|
2022-11-06 22:39:22 +03:00
|
|
|
output.
|
|
|
|
N ranges from 1 (least output, the default) to 9 (maximum output).
|
|
|
|
Typically you would start with 1 and increase until you are seeing
|
|
|
|
enough.
|
|
|
|
Debug output goes to stderr, interleaved with the requests logged on
|
|
|
|
stdout.
|
|
|
|
To capture debug output in a log file instead, you can usually redirect
|
|
|
|
stderr, eg:
|
|
|
|
.PD 0
|
|
|
|
.P
|
|
|
|
.PD
|
2024-01-13 02:52:11 +03:00
|
|
|
\f[CR]hledger\-web \-\-debug=3 2>hledger\-web.log\f[R].
|
2015-10-20 16:26:09 +03:00
|
|
|
.SH ENVIRONMENT
|
2023-05-26 22:28:53 +03:00
|
|
|
\f[B]LEDGER_FILE\f[R] The main journal file to use when not specified
|
2024-01-13 02:52:11 +03:00
|
|
|
with \f[CR]\-f/\-\-file\f[R].
|
2023-12-02 06:25:00 +03:00
|
|
|
Default: \f[CR]$HOME/.hledger.journal\f[R].
|
2015-10-20 16:26:09 +03:00
|
|
|
.SH BUGS
|
2023-05-26 22:28:53 +03:00
|
|
|
We welcome bug reports in the hledger issue tracker (shortcut:
|
|
|
|
http://bugs.hledger.org), or on the #hledger chat or hledger mail list
|
|
|
|
(https://hledger.org/support).
|
2015-10-20 16:26:09 +03:00
|
|
|
.PP
|
2023-05-26 22:28:53 +03:00
|
|
|
Some known issues:
|
2015-10-20 16:26:09 +03:00
|
|
|
.PP
|
2024-01-13 02:52:11 +03:00
|
|
|
Does not work well on small screens, or in text\-mode browsers.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
|
|
|
|
|
|
|
.SH AUTHORS
|
2022-12-14 20:53:09 +03:00
|
|
|
Simon Michael <simon@joyful.com> and contributors.
|
|
|
|
.br
|
|
|
|
See http://hledger.org/CREDITS.html
|
2015-10-20 16:26:09 +03:00
|
|
|
|
|
|
|
.SH COPYRIGHT
|
2022-12-14 20:53:09 +03:00
|
|
|
Copyright 2007-2023 Simon Michael and contributors.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2022-12-14 20:53:09 +03:00
|
|
|
.SH LICENSE
|
2016-04-13 06:31:17 +03:00
|
|
|
Released under GNU GPL v3 or later.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
|
|
|
.SH SEE ALSO
|
2020-12-21 07:11:35 +03:00
|
|
|
hledger(1), hledger\-ui(1), hledger\-web(1), ledger(1)
|