doc: generate (and commit) text-rendred man pages

Intended for embedding in executables. Quick implementation,
hopefully these are fixed-width and compatible with all terminals.
This commit is contained in:
Simon Michael 2016-04-13 22:29:16 -07:00
parent 7a53895cdf
commit bfa5e14373
9 changed files with 3217 additions and 1 deletions

View File

@ -44,6 +44,7 @@ usage = [i|Usage:
./Shake # show commands ./Shake # show commands
./Shake site # generate things needed for the website ./Shake site # generate things needed for the website
./Shake manpages # generate nroff files for man ./Shake manpages # generate nroff files for man
./Shake txtmanpages # generate text man pages for embedding
./Shake webmanpages # generate web man pages for hakyll ./Shake webmanpages # generate web man pages for hakyll
./Shake webmanual # generate combined web man page for hakyll ./Shake webmanual # generate combined web man page for hakyll
|] |]
@ -52,6 +53,7 @@ pandoc =
-- "stack exec -- pandoc" -- use the pandoc required above -- "stack exec -- pandoc" -- use the pandoc required above
"pandoc" -- use pandoc in PATH (faster) "pandoc" -- use pandoc in PATH (faster)
hakyllstd = "site/hakyll-std/hakyll-std" hakyllstd = "site/hakyll-std/hakyll-std"
nroff = "nroff"
main = do main = do
@ -80,6 +82,7 @@ main = do
phony "docs" $ do phony "docs" $ do
need [ need [
"manpages" "manpages"
,"txtmanpages"
] ]
let webmanual = "site/manual.md" let webmanual = "site/manual.md"
@ -157,6 +160,13 @@ main = do
"--filter doc/pandoc-drop-notes" "--filter doc/pandoc-drop-notes"
"-o" out "-o" out
-- render man page nroffs as fixed-width text, for embedding
let txtmanpages = [m <.> "txt" | m <- manpages] -- hledger/doc/hledger.1.txt, hledger-lib/doc/journal.5.txt
phony "txtmanpages" $ need txtmanpages
txtmanpages |%> \out -> do
let nroffsrc = dropExtension out -- hledger/doc/hledger.1
cmd Shell nroff "-man" nroffsrc ">" out
-- adjust man page mds for (hakyll) web output, with pandoc -- adjust man page mds for (hakyll) web output, with pandoc
let webmanpages = ["site" </> manpageNameToUri m <.>".md" | m <- manpageNames] -- site/hledger.md, site/journal.md let webmanpages = ["site" </> manpageNameToUri m <.>".md" | m <- manpageNames] -- site/hledger.md, site/journal.md
phony "webmanpages" $ need webmanpages phony "webmanpages" $ need webmanpages

View File

@ -0,0 +1,71 @@
hledger-api(1) hledger User Manuals hledger-api(1)
NNAAMMEE
hledger-api - web API server for the hledger accounting tool
SSYYNNOOPPSSIISS
hledger-api [OPTIONS]
hledger api -- [OPTIONS]
DDEESSCCRRIIPPTTIIOONN
hledger is a cross-platform program for tracking money, time, or any
other commodity, using double-entry accounting and a simple, editable
file format. hledger is inspired by and largely compatible with
ledger(1).
hledger-api is a simple web API server, intended to support client-side
web apps operating on hledger data. It comes with a series of simple
client-side app examples, which drive it's evolution.
Data is served from the usual hledger journal file: ~/.hledger.journal,
$LEDGER_FILE, or another file specified with -f. For more about the
format, see hledger(1) or hledger_journal(5).
The server listens for requests on port ...
Note there is no built-in access control, so you will need to hide
hledger-api behind an authenticating proxy if you want to restrict
access.
EENNVVIIRROONNMMEENNTT
LLEEDDGGEERR__FFIILLEE sets the default journal file path. If not set, it is
~/.hledger.journal.
FFIILLEESS
Reads data from a hledger journal file ($LEDGER_FILE or
~/.hledger.journal by default), or a CSV file plus associated CSV rules
file.
BBUUGGSS
The need to precede options with -- when invoked from hledger is awk-
ward.
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
January 2016 hledger-api(1)

View File

@ -0,0 +1,169 @@
hledger_csv(5) hledger User Manuals hledger_csv(5)
NNAAMMEE
CSV - how hledger reads CSV data, and the CSV rules file format
DDEESSCCRRIIPPTTIIOONN
hledger can read CSV files, converting each CSV record into a journal
entry (transaction), if you provide some conversion hints in a "rules
file". This file should be named like the CSV file with an additional
.rules suffix (eg: mybank.csv.rules); or, you can specify the file with
--rules-file PATH. hledger will create it if necessary, with some
default rules which you'll need to adjust. At minimum, the rules file
must specify the date and amount fields. For an example, see How to
read CSV files.
To learn about _e_x_p_o_r_t_i_n_g CSV, see CSV output.
CCSSVV RRUULLEESS
The following six kinds of rule can appear in the rules file, in any
order. Blank lines and lines beginning with # or ; are ignored.
sskkiipp
skip_N
Skip this number of CSV records at the beginning. You'll need this
whenever your CSV data contains header lines. Eg:
# ignore the first CSV line
skip 1
ddaattee--ffoorrmmaatt
date-format_D_A_T_E_F_M_T
When your CSV date fields are not formatted like YYYY/MM/DD (or
YYYY-MM-DD or YYYY.MM.DD), you'll need to specify the format. DATEFMT
is a strptime-like date parsing pattern, which must parse the date
field values completely. Examples:
# for dates like "6/11/2013":
date-format %-d/%-m/%Y
# for dates like "11/06/2013":
date-format %m/%d/%Y
# for dates like "2013-Nov-06":
date-format %Y-%h-%d
# for dates like "11/6/2013 11:32 PM":
date-format %-m/%-d/%Y %l:%M %p
ffiieelldd lliisstt
fields_F_I_E_L_D_N_A_M_E_1_, _F_I_E_L_D_N_A_M_E_2_._._.
This (a) names the CSV fields, in order (names may not contain white-
space, but may be omitted), and (b) assigns them to journal entry
fields if you use any of these standard field names: date, date2, sta-
tus, code, description, comment, account1, account2, amount, amount-in,
amount-out, currency. Eg:
# use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,
# and give the 7th and 8th fields meaningful names for later reference:
#
# CSV field:
# 1 2 3 4 5 6 7 8
# entry field:
fields date, description, , amount, , , somefield, anotherfield
ffiieelldd aassssiiggnnmmeenntt
_E_N_T_R_Y_F_I_E_L_D_N_A_M_E _F_I_E_L_D_V_A_L_U_E
This sets a journal entry field (one of the standard names above) to
the given text value, which can include CSV field values interpolated
by name (%CSVFIELDNAME) or 1-based position (%N).
Eg:
# set the amount to the 4th CSV field with "USD " prepended
amount USD %4
# combine three fields to make a comment (containing two tags)
comment note: %somefield - %anotherfield, date: %1
Field assignments can be used instead of or in addition to a field
list.
ccoonnddiittiioonnaall bblloocckk
if _P_A_T_T_E_R_N
_F_I_E_L_D_A_S_S_I_G_N_M_E_N_T_S_._._.
if
_P_A_T_T_E_R_N
_P_A_T_T_E_R_N_._._.
_F_I_E_L_D_A_S_S_I_G_N_M_E_N_T_S_._._.
This applies one or more field assignments, only to those CSV records
matched by one of the PATTERNs. The patterns are case-insensitive reg-
ular expressions which match anywhere within the whole CSV record (it's
not yet possible to match within a specific field). When there are
multiple patterns they should be written on separate lines, unindented.
The field assignments are on separate lines indented by at least one
space. Examples:
# if the CSV record contains "groceries", set account2 to "expenses:groceries"
if groceries
account2 expenses:groceries
# if the CSV record contains any of these patterns, set account2 and comment as shown
if
monthly service fee
atm transaction fee
banking thru software
account2 expenses:business:banking
comment XXX deductible ? check it
iinncclluuddee
include_R_U_L_E_S_F_I_L_E
Include another rules file at this point. RULESFILE is either an abso-
lute file path or a path relative to the current file's directory. Eg:
# rules reused with several CSV files
include common.rules
TTIIPPSS
Each generated journal entry will have two postings, to account1 and
account2 respectively. Currently it's not possible to generate entries
with more than two postings.
If the CSV has debit/credit amounts in separate fields, assign to the
amount-in and amount-out pseudo fields instead of amount.
If the CSV has the currency in a separate field, assign that to the
currency pseudo field which will be automatically prepended to the
amount. (Or you can do the same thing with a field assignment.)
If an amount value is parenthesised, it will be de-parenthesised and
sign-flipped automatically.
The generated journal entries will be sorted by date. The original
order of same-day entries will be preserved, usually.
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
April 2016 hledger_csv(5)

View File

@ -0,0 +1,668 @@
hledger_journal(5) hledger User Manuals hledger_journal(5)
NNAAMMEE
Journal - hledger's default file format, representing a General Journal
DDEESSCCRRIIPPTTIIOONN
hledger's usual data source is a plain text file containing journal
entries in hledger journal format. This file represents a standard
accounting general journal. I use file names ending in .journal, but
that's not required. The journal file contains a number of transaction
entries, each describing a transfer of money (or any commodity) between
two or more named accounts, in a simple format readable by both hledger
and humans.
hledger's journal format is a compatible subset, mostly, of ledger's
journal format, so hledger can work with compatible ledger journal
files as well. It's safe, and encouraged, to run both hledger and
ledger on the same journal file, eg to validate the results you're get-
ting.
You can use hledger without learning any more about this file; just use
the add or web commands to create and update it. Many users, though,
also edit the journal file directly with a text editor, perhaps
assisted by the helper modes for emacs or vim.
Here's an example:
; A sample journal file. This is a comment.
2008/01/01 income ; <- transaction's first line starts in column 0, contains date and description
assets:bank:checking $1 ; <- posting lines start with whitespace, each contains an account name
income:salary $-1 ; followed by at least two spaces and an amount
2008/06/01 gift
assets:bank:checking $1 ; <- at least two postings in a transaction
income:gifts $-1 ; <- their amounts must balance to 0
2008/06/02 save
assets:bank:saving $1
assets:bank:checking ; <- one amount may be omitted; here $-1 is inferred
2008/06/03 eat & shop ; <- description can be anything
expenses:food $1
expenses:supplies $1 ; <- this transaction debits two expense accounts
assets:cash ; <- $-2 inferred
2008/12/31 * pay off ; <- an optional * or ! after the date means "cleared" (or anything you want)
liabilities:debts $1
assets:bank:checking
FFIILLEE FFOORRMMAATT
TTrraannssaaccttiioonnss
Transactions are represented by journal entries. Each begins with a
simple date in column 0, followed by three optional fields with spaces
between them:
+o a status flag, which can be empty or ! or * (meaning "uncleared",
"pending" and "cleared", or whatever you want)
+o a transaction code (eg a check number),
+o and/or a description
then some number of postings, of some amount to some account, each on
its own line. Usually there are at least two postings, though one or
even none is possible.
The (real) posting amounts within a transaction must always balance, ie
add up to 0. Optionally one amount can be left blank, in which case it
will be inferred.
DDaatteess
SSiimmppllee ddaatteess
Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)
Leading zeroes are optional. The year may be omitted, in which case it
defaults to the current year, or you can set the default year with a
default year directive.
Some examples: 2010/01/31, 1/31, 2010-01-31, 2010.1.31.
SSeeccoonnddaarryy ddaatteess
Real-life transactions sometimes involve more than one date - eg the
date you write a cheque, and the date it clears in your bank. When you
want to model this, eg for more accurate balances, write both dates
separated by an equals sign. The _p_r_i_m_a_r_y _d_a_t_e, on the left, is used by
default; the _s_e_c_o_n_d_a_r_y _d_a_t_e, on the right, is used when the --date2
flag is specified (For Ledger compatibility, --aux-date or --effective
also work.)
Their meaning is up to you, but it's best to follow a consistent rule.
Eg write the bank's clearing date as primary, and when needed, the date
the transaction was initiated as secondary.
Here's an example. Note that a secondary date will use the year of the
primary date if unspecified.
2010/2/23=2/19 movie ticket
expenses:cinema $10
assets:checking
$ hledger register checking
2010/02/23 movie ticket assets:checking $-10 $-10
$ hledger register checking --date2
2010/02/19 movie ticket assets:checking $-10 $-10
Secondary dates require some effort: you must use them consistently in
your journal entries and remember whether to use or not use the --date2
flag for your reports. Arguably they are now obsolete, superseded
by...
PPoossttiinngg ddaatteess
You can give individual postings a different date from their parent
transaction, by adding a posting tag (see below) like date:DATE, where
DATE is a simple date. This is probably the best way to control post-
ing dates precisely. Eg in this example the expense should appear in
May reports, and the deduction from checking should be reported on 6/1
for easy bank reconciliation:
2015/5/30
expenses:food $10 ; food purchased on saturday 5/30
assets:checking ; bank cleared it on monday, date:6/1
$ hledger -f tt.j register food
2015/05/30 expenses:food $10 $10
$ hledger -f tt.j register checking
2015/06/01 assets:checking $-10 $-10
A posting date will use the year of the transaction date if unspeci-
fied.
You can also set the secondary date, with date2:DATE2. For compatibil-
ity, Ledger's older posting date syntax is also supported: [DATE],
[DATE=DATE2] or [=DATE2] in a posting comment.
When using any of these forms, be sure to provide a valid simple date
or you'll get a parse error. Eg a date: tag with no value is not
allowed.
AAccccoouunntt nnaammeess
Account names typically have several parts separated by a full colon,
from which hledger derives a hierarchical chart of accounts. They can
be anything you like, but in finance there are traditionally five
top-level accounts: assets, liabilities, income, expenses, and equity.
Account names may contain single spaces, eg: assets:accounts receiv-
able. Because of this, they must always be followed by at least two
spaces (or newline).
Account names can be aliased.
AAmmoouunnttss
After the account name, there is usually an amount. Important: between
account name and amount, there must be ttwwoo oorr mmoorree spaces.
The amount is a number, optionally with a currency symbol or commodity
name on either the left or right. Negative amounts may have the minus
sign either before or after the currency symbol (-$1 or $-1). Commod-
ity names which contain more than just letters should be enclosed in
double quotes (1 "person hours").
DDeecciimmaall ppooiinnttss aanndd ddiiggiitt ggrroouuppss
hledger supports flexible decimal point and digit group separator
styles, to support international variations. Numbers can use either a
period (.) or a comma (,) as decimal point. They can also have digit
group separators at any position (eg thousands separators) which can be
comma or period - whichever one you did not use as a decimal point. If
you use digit group separators, you must also include a decimal point
in at least one number in the same commodity, so that hledger knows
which character is which. Eg, write $1,000.00 or $1.000,00.
AAmmoouunntt ddiissppllaayy ssttyylleess
Based on how you format amounts, hledger will infer canonical display
styles for each commodity, and use these when displaying amounts in
that commodity. Amount styles include:
+o the position (left or right) and spacing (space or no separator) of
the commodity symbol
+o the digit group separator character (comma or period) and digit group
sizes, if any
+o the decimal point character (period or comma)
+o the display precision (number of decimal places displayed)
The canonical style is generally the style of the first posting amount
seen in a commodity. However the display precision will be the highest
precision seen in all posting amounts in that commmodity.
The precisions used in a price amount, or a D directive, don't affect
the canonical display precision directly, but they can affect it indi-
rectly, eg when D's default commodity is applied to a commodity-less
amount or when an amountless posting is balanced using a price's com-
modity (actually this last case does not influence the canonical dis-
play precision but probably should).
VViirrttuuaall PPoossttiinnggss
When you parenthesise the account name in a posting, that posting is
considered _v_i_r_t_u_a_l, which means:
+o it is ignored when checking that the transaction is balanced
+o it is excluded from reports when the --real/-R flag is used, or the
real:1 query.
You could use this, eg, to set an account's opening balance without
needing to use the equity:opening balances account:
1/1 special unbalanced posting to set initial balance
(assets:checking) $1000
BBaallaanncceedd VViirrttuuaall PPoossttiinnggss
When the account name is bracketed, the posting is _b_a_l_a_n_c_e_d _v_i_r_t_u_a_l,
which is just like a virtual posting except the balanced virtual post-
ings in a transaction must balance to 0, like the real postings (but
separately from them). Balanced virtual postings are also excluded by
--real/-R or real:1.
Virtual postings are a feature inherited from Ledger can can occasion-
ally be useful, but they can be a crutch and you should think twice or
three times before using them. You can almost always find an equiva-
lent journal entry using two or more real postings that will be more
correct and more error-proof.
BBaallaannccee AAsssseerrttiioonnss
hledger supports ledger-style balance assertions in journal files.
These look like =EXPECTEDBALANCE following a posting's amount. Eg in
this example we assert the expected dollar balance in accounts a and b
after each posting:
2013/1/1
a $1 =$1
b =$-1
2013/1/2
a $1 =$2
b $-1 =$-2
After reading a journal file, hledger will check all balance assertions
and report an error if any of them fail. Balance assertions can pro-
tect you from, eg, inadvertently disrupting reconciled balances while
cleaning up old entries. You can disable them temporarily with the
--ignore-assertions flag, which can be useful for troubleshooting or
for reading Ledger files.
AAsssseerrttiioonnss aanndd oorrddeerriinngg
hledger sorts an account's postings and assertions first by date and
then (for postings on the same day) by parse order. Note this is dif-
ferent from Ledger, which sorts assertions only by parse order. (Also,
Ledger assertions do not see the accumulated effect of repeated post-
ings to the same account within a transaction.)
So, hledger balance assertions keep working if you reorder differ-
ently-dated transactions within the journal. But if you reorder
same-dated transactions or postings, assertions might break and require
updating. This order dependence does bring an advantage: precise con-
trol over the order of postings and assertions within a day, so you can
assert intra-day balances.
With included files, things are a little more complicated. Including
preserves the ordering of postings and assertions. If you have multi-
ple postings to an account on the same day, split across different
files, and you also want to assert the account's balance on the same
day, you'll have to put the assertion in the right file.
AAsssseerrttiioonnss aanndd ccoommmmooddiittiieess
The asserted balance must be a simple single-commodity amount, and in
fact the assertion checks only this commodity's balance within the
(possibly multi-commodity) account balance. We could call this a par-
tial balance assertion. This is compatible with Ledger, and makes it
possible to make assertions about accounts containing multiple commodi-
ties.
To assert each commodity's balance in such a multi-commodity account,
you can add multiple postings (with amount 0 if necessary). But note
that no matter how many assertions you add, you can't be sure the
account does not contain some unexpected commodity. (We'll add support
for this kind of total balance assertion if there's demand.)
AAsssseerrttiioonnss aanndd ssuubbaaccccoouunnttss
Balance assertions do not count the balance from subaccounts; they
check the posted account's exclusive balance. For example:
1/1
checking:fund 1 = 1 ; post to this subaccount, its balance is now 1
checking 1 = 1 ; post to the parent account, its exclusive balance is now 1
equity
The balance report's flat mode shows these exclusive balances more
clearly:
$ hledger bal checking --flat
1 checking
1 checking:fund
--------------------
2
AAsssseerrttiioonnss aanndd vviirrttuuaall ppoossttiinnggss
Balance assertions are checked against all postings, both real and vir-
tual. They are not affected by the --real/-R flag or real: query.
PPrriicceess
TTrraannssaaccttiioonn pprriicceess
When recording a transaction, you can also record an amount's price in
another commodity. This documents the exchange rate, cost (of a pur-
chase), or selling price (of a sale) that was in effect within this
particular transaction (or more precisely, within the particular post-
ing). These transaction prices are fixed, and do not change.
Such priced amounts can be displayed in their transaction price's com-
modity, by using the --cost/-B flag (B for "cost Basis"), supported by
most hledger commands.
There are three ways to specify a transaction price:
1. Write the unit price (aka exchange rate), as @ UNITPRICE after the
amount:
2009/1/1
assets:foreign currency ^a~100 @ $1.35 ; one hundred euros at $1.35 each
assets:cash
2. Or write the total price, as @@ TOTALPRICE after the amount:
2009/1/1
assets:foreign currency ^a~100 @@ $135 ; one hundred euros at $135 for the lot
assets:cash
3. Or let hledger infer the price so as to balance the transaction. To
permit this, you must fully specify all posting amounts, and their
sum must have a non-zero amount in exactly two commodities:
2009/1/1
assets:foreign currency ^a~100 ; one hundred euros
assets:cash $-135 ; exchanged for $135
With any of the above examples we get:
$ hledger print -B
2009/01/01
assets:foreign currency $135.00
assets:cash $-135.00
Example use for transaction prices: recording the effective conversion
rate of purchases made in a foreign currency.
MMaarrkkeett pprriicceess
Market prices are not tied to a particular transaction; they represent
historical exchange rates between two commodities, usually from some
public market which publishes such rates.
When market prices are known, the -V/--value option will use them to
convert reported amounts to their market value as of the report end
date. This option is currently available only with the balance com-
mand.
You record market prices (Ledger calls them historical prices) with a P
directive, in the journal or perhaps in a separate included file. Mar-
ket price directives have the format:
P DATE COMMODITYSYMBOL UNITPRICE
For example, the following directives say that the euro's exchange rate
was 1.35 US dollars during 2009, and $1.40 from 2010 onward (and
unknown before 2009).
P 2009/1/1 ^a~ $1.35
P 2010/1/1 ^a~ $1.40
Example use for market prices: tracking the value of stocks.
CCoommmmeennttss
Lines in the journal beginning with a semicolon (;) or hash (#) or
asterisk (*) are comments, and will be ignored. (Asterisk comments
make it easy to treat your journal like an org-mode outline in emacs.)
Also, anything between comment and end comment directives is a
(multi-line) comment. If there is no end comment, the comment extends
to the end of the file.
You can attach comments to a transaction by writing them after the
description and/or indented on the following lines (before the post-
ings). Similarly, you can attach comments to an individual posting by
writing them after the amount and/or indented on the following lines.
Some examples:
# a journal comment
; also a journal comment
comment
This is a multiline comment,
which continues until a line
where the "end comment" string
appears on its own.
end comment
2012/5/14 something ; a transaction comment
; the transaction comment, continued
posting1 1 ; a comment for posting 1
posting2
; a comment for posting 2
; another comment line for posting 2
; a journal comment (because not indented)
TTaaggss
A _t_a_g is a word followed by a full colon inside a transaction or post-
ing comment. You can write multiple tags, comma separated. Eg:
; a comment containing sometag:, anothertag:. You can search for tags
with the tag: query.
A tag can also have a value, which is any text between the colon and
the next comma or newline, excluding leading/trailing whitespace. (So
hledger tag values can not contain commas or newlines).
Tags in a transaction comment affect the transaction and all of its
postings, while tags in a posting comment affect only that posting.
For example, the following transaction has three tags (A, TAG2,
third-tag) and the posting has four (A, TAG2, third-tag, posting-tag):
1/1 a transaction ; A:, TAG2:
; third-tag: a third transaction tag, this time with a value
(a) $1 ; posting-tag:
Tags are like Ledger's metadata feature, except hledger's tag values
are always simple strings.
DDiirreeccttiivveess
AAccccoouunntt aalliiaasseess
You can define aliases which rewrite your account names (after reading
the journal, before generating reports). hledger's account aliases can
be useful for:
+o expanding shorthand account names to their full form, allowing easier
data entry and a less verbose journal
+o adapting old journals to your current chart of accounts
+o experimenting with new account organisations, like a new hierarchy or
combining two accounts into one
+o customising reports
See also How to use account aliases.
BBaassiicc aalliiaasseess
To set an account alias, use the alias directive in your journal file.
This affects all subsequent journal entries in the current file or its
included files. The spaces around the = are optional:
alias OLD = NEW
Or, you can use the --alias 'OLD=NEW' option on the command line. This
affects all entries. It's useful for trying out aliases interactively.
OLD and NEW are full account names. hledger will replace any occur-
rence of the old account name with the new one. Subaccounts are also
affected. Eg:
alias checking = assets:bank:wells fargo:checking
# rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"
RReeggeexx aalliiaasseess
There is also a more powerful variant that uses a regular expression,
indicated by the forward slashes. (This was the default behaviour in
hledger 0.24-0.25):
alias /REGEX/ = REPLACEMENT
or --alias '/REGEX/=REPLACEMENT'.
REGEX is a case-insensitive regular expression. Anywhere it matches
inside an account name, the matched part will be replaced by REPLACE-
MENT. If REGEX contains parenthesised match groups, these can be ref-
erenced by the usual numeric backreferences in REPLACEMENT. Note, cur-
rently regular expression aliases may cause noticeable slow-downs.
(And if you use Ledger on your hledger file, they will be ignored.) Eg:
alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3
# rewrites "assets:bank:wells fargo:checking" to "assets:wells fargo checking"
MMuullttiippllee aalliiaasseess
You can define as many aliases as you like using directives or com-
mand-line options. Aliases are recursive - each alias sees the result
of applying previous ones. (This is different from Ledger, where
aliases are non-recursive by default). Aliases are applied in the fol-
lowing order:
1. alias directives, most recently seen first (recent directives take
precedence over earlier ones; directives not yet seen are ignored)
2. alias options, in the order they appear on the command line
eenndd aalliiaasseess
You can clear (forget) all currently defined aliases with the
end aliases directive:
end aliases
aaccccoouunntt ddiirreeccttiivvee
The account directive predefines account names, as in Ledger and Bean-
count. This may be useful for your own documentation; hledger doesn't
make use of it yet.
; account ACCT
; OPTIONAL COMMENTS/TAGS...
account assets:bank:checking
a comment
acct-no:12345
account expenses:food
; etc.
aappppllyy aaccccoouunntt ddiirreeccttiivvee
You can specify a parent account which will be prepended to all
accounts within a section of the journal. Use the apply account and
end apply account directives like so:
apply account home
2010/1/1
food $10
cash
end apply account
which is equivalent to:
2010/01/01
home:food $10
home:cash $-10
If end apply account is omitted, the effect lasts to the end of the
file. Included files are also affected, eg:
apply account business
include biz.journal
end apply account
apply account personal
include personal.journal
Prior to hledger 0.28, legacy account and end spellings were also sup-
ported.
MMuullttii--lliinnee ccoommmmeennttss
A line containing just comment starts a multi-line comment, and a line
containing just end comment ends it. See comments.
DDeeffaauulltt ccoommmmooddiittyy
You can set a default commodity, to be used for amounts without one.
Use the D directive with a sample amount. The commodity (and the sam-
ple amount's display style) will be applied to all subsequent commod-
ity-less amounts, up to the next D directive. (Note this is different
from Ledger's default commodity directive.)
Also note the directive itself does not influence the commodity's
default display style, but the amount it is applied to might. Here's
an example:
; set ^A-L as the default commodity
D ^A-L1,000.00
2010/1/1
a 2340
b
2014/1/1
c ^A-L1000
d
$ hledger print
2010/01/01
a ^A-L2,340.00
b ^A-L-2,340.00
2014/01/01
c ^A-L1,000.00
d ^A-L-1,000.00
DDeeffaauulltt yyeeaarr
You can set a default year to be used for subsequent dates which don't
specify a year. This is a line beginning with Y followed by the year.
Eg:
Y2009 ; set default year to 2009
12/15 ; equivalent to 2009/12/15
expenses 1
assets
Y2010 ; change default year to 2010
2009/1/30 ; specifies the year, not affected
expenses 1
assets
1/31 ; equivalent to 2010/1/31
expenses 1
assets
IInncclluuddiinngg ootthheerr ffiilleess
You can pull in the content of additional journal files by writing an
include directive, like this:
include path/to/file.journal
If the path does not begin with a slash, it is relative to the current
file.
Glob patterns (*) are not currently supported.
The include directive may only be used in journal files, and currently
it may only include other journal files (eg, not CSV or timeclock
files.)
EEDDIITTOORR SSUUPPPPOORRTT
Add-on modes exist for various text editors, to make working with jour-
nal files easier. They add colour, navigation aids and helpful com-
mands. For hledger users who edit the journal file directly (the
majority), using one of these modes is quite recommended.
These were written with Ledger in mind, but also work with hledger
files:
tab(@); lw(16.5n) lw(51.5n). T{ Emacs T}@T{
http://www.ledger-cli.org/3.0/doc/ledger-mode.html T} T{ Vim T}@T{
https://github.com/ledger/ledger/wiki/Getting-started T} T{ Sublime
Text T}@T{ https://github.com/ledger/ledger/wiki/Using-Sublime-Text T}
T{ Textmate T}@T{ https://github.com/ledger/ledger/wiki/Using-Text-
Mate-2 T} T{ Text Wrangler T}@T{
https://github.com/ledger/ledger/wiki/Editing-Ledger-files-with-Tex-
tWrangler T}
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
April 2016 hledger_journal(5)

View File

@ -0,0 +1,83 @@
hledger_timeclock(5) hledger User Manuals hledger_timeclock(5)
NNAAMMEE
Timeclock - the time logging format of timeclock.el, as read by hledger
DDEESSCCRRIIPPTTIIOONN
hledger can read timeclock files. As with Ledger, these are (a subset
of) timeclock.el's format, containing clock-in and clock-out entries as
in the example below. The date is a simple date (also, default year
directives work). The time format is HH:MM[:SS][+-ZZZZ]. Seconds and
timezone are optional. The timezone, if present, must be four digits
and is ignored (currently the time is always interpreted as a local
time).
i 2015/03/30 09:00:00 some:account name optional description after two spaces
o 2015/03/30 09:20:00
i 2015/03/31 22:21:45 another account
o 2015/04/01 02:00:34
hledger treats each clock-in/clock-out pair as a transaction posting
some number of hours to an account. Or if the session spans more than
one day, it is split into several transactions, one for each day. For
the above time log, hledger print generates these journal entries:
$ hledger -f t.timeclock print
2015/03/30 * optional description after two spaces
(some:account name) 0.33h
2015/03/31 * 22:21-23:59
(another account) 1.64h
2015/04/01 * 00:00-02:00
(another account) 2.01h
Here is a sample.timeclock to download and some queries to try:
$ hledger -f sample.timeclock balance # current time balances
$ hledger -f sample.timeclock register -p 2009/3 # sessions in march 2009
$ hledger -f sample.timeclock register -p weekly --depth 1 --empty # time summary by week
To generate time logs, ie to clock in and clock out, you could:
+o use emacs and the built-in timeclock.el, or the extended time-
clock-x.el and perhaps the extras in ledgerutils.el
+o at the command line, use these bash aliases:
alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"
alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
+o or use the old ti and to scripts in the ledger 2.x repository. These
rely on a "timeclock" executable which I think is just the ledger 2
executable renamed.
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
April 2016 hledger_timeclock(5)

View File

@ -0,0 +1,125 @@
hledger_timedot(5) hledger User Manuals hledger_timedot(5)
NNAAMMEE
Timedot - hledger's human-friendly time logging format
DDEESSCCRRIIPPTTIIOONN
Timedot is a plain text format for logging dated, categorised quanti-
ties (eg time), supported by hledger. It is convenient for approximate
and retroactive time logging, eg when the real-time clock-in/out
required with a timeclock file is too precise or too interruptive. It
can be formatted like a bar chart, making clear at a glance where time
was spent.
Though called "timedot", the format does not specify the commodity
being logged, so could represent other dated, quantifiable things. Eg
you could record a single-entry journal of financial transactions, per-
haps slightly more conveniently than with hledger_journal(5) format.
FFIILLEE FFOORRMMAATT
A timedot file contains a series of day entries. A day entry begins
with a date, and is followed by category/quantity pairs, one per line.
Dates are hledger-style simple dates (see hledger_journal(5)). Cate-
gories are hledger-style account names, optionally indented. There
must be at least two spaces between the category and the quantity.
Quantities can be written in two ways:
1. a series of dots (period characters). Each dot represents "a quar-
ter" - eg, a quarter hour. Spaces can be used to group dots into
hours, for easier counting.
2. a number (integer or decimal), representing "units" - eg, hours. A
good alternative when dots are cumbersome. (A number also can
record negative quantities.)
Blank lines and lines beginning with #, ; or * are ignored. An exam-
ple:
# on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.
2016/2/1
inc:client1 .... .... .... .... .... ....
fos:haskell .... ..
biz:research .
2016/2/2
inc:client1 .... ....
biz:research .
Or with numbers:
2016/2/3
inc:client1 4
fos:hledger 3
biz:research 1
Reporting:
$ hledger -f t.timedot print date:2016/2/2
2016/02/02 *
(inc:client1) 2.00
2016/02/02 *
(biz:research) 0.25
$ hledger -f t.timedot bal --daily --tree
Balance changes in 2016/02/01-2016/02/03:
|| 2016/02/01d 2016/02/02d 2016/02/03d
============++========================================
biz || 0.25 0.25 1.00
research || 0.25 0.25 1.00
fos || 1.50 0 3.00
haskell || 1.50 0 0
hledger || 0 0 3.00
inc || 6.00 2.00 4.00
client1 || 6.00 2.00 4.00
------------++----------------------------------------
|| 7.75 2.25 8.00
I prefer to use period for separating account components. We can make
this work with an account alias:
2016/2/4
fos.hledger.timedot 4
fos.ledger ..
$ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4
4.50 fos
4.00 hledger:timedot
0.50 ledger
--------------------
4.50
default year directives may be used.
Here is a sample.timedot.
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
April 2016 hledger_timedot(5)

View File

@ -0,0 +1,258 @@
hledger-ui(1) hledger User Manuals hledger-ui(1)
NNAAMMEE
hledger-ui - curses-style interface for the hledger accounting tool
SSYYNNOOPPSSIISS
hledger-ui [OPTIONS] [QUERYARGS]
hledger ui -- [OPTIONS] [QUERYARGS]
DDEESSCCRRIIPPTTIIOONN
hledger is a cross-platform program for tracking money, time, or any
other commodity, using double-entry accounting and a simple, editable
file format. hledger is inspired by and largely compatible with
ledger(1). hledger-ui is hledger's curses-style interface. It reads a
hledger journal file
(~/.hledger.journal, $LEDGER_FILE, or -f FILE; see hledger(1) or
hledger_journal(5))
and provides a simple full-screen console interface for viewing account
balances and transactions.
It is simpler and more convenient for browsing than the command-line
interface, but lighter and faster than hledger-web.
The journal file is ~/.hledger.journal, $LEDGER_FILE, or another file
specified with -f. For more about the format, see hledger(1) or
hledger_journal(5).
OOPPTTIIOONNSS
Note: if invoking hledger-ui as a hledger subcommand, write -- before
options as shown above.
Any QUERYARGS are interpreted as a hledger search query which filters
the data.
----ffllaatt show full account names, unindented
----nnoo--eelliiddee
don't compress empty parent accounts on one line
----rreeggiisstteerr==AACCCCTTRREEGGEEXX
start in the (first) matched account's register screen
----tthheemmee==ddeeffaauulltt||tteerrmmiinnaall||ggrreeeenntteerrmm
use this custom display theme
--VV ----vvaalluuee
show amounts as their current market value in their default val-
uation commodity (accounts screen only)
--hh ----hheellpp
show help
----vveerrssiioonn
show version information
hhlleeddggeerr ooppttiioonnss
The following common hledger options should also work:
--ff FFIILLEE ----ffiillee==FFIILLEE
use a different input file. For stdin, use -
----rruulleess--ffiillee==RRUULLEESSFFIILLEE
Conversion rules file to use when reading CSV (default:
FILE.rules)
----aalliiaass==OOLLDD==NNEEWW
display accounts named OLD as NEW
----iiggnnoorree--aasssseerrttiioonnss
ignore any failing balance assertions in the journal
----ddeebbuugg==NN
show debug output if N is 1-9 (default: 0)
--bb ----bbeeggiinn==DDAATTEE
include postings/txns on or after this date
--ee ----eenndd==DDAATTEE
include postings/txns before this date
--pp ----ppeerriioodd==PPEERRIIOODDEEXXPP
set start date, end date, and/or reporting interval all at once
(overrides the flags above)
----ddaattee22 ----aauuxx--ddaattee
use postings/txns' secondary dates instead
--CC ----cclleeaarreedd
include only cleared postings/txns
----ppeennddiinngg
include only pending postings/txns
--UU ----uunncclleeaarreedd
include only uncleared (and pending) postings/txns
--RR ----rreeaall
include only non-virtual postings
----ddeepptthh==NN
hide accounts/postings deeper than N
--EE ----eemmppttyy
show empty/zero things which are normally omitted
--BB ----ccoosstt
show amounts in their cost price's commodity
KKEEYYSS
Generally the cursor keys navigate; right (or enter) goes deeper, left
returns to the previous screen, up/down/page up/page down/home/end move
up and down through lists.
g gets the latest data and reloads the screen (and any previous
screens). There may be a noticeable pause.
q quits the application.
Some screens have additional key bindings, described below.
SSCCRREEEENNSS
AAccccoouunnttss ssccrreeeenn
This is normally the first screen displayed. It lists accounts and
their balances, like hledger's balance command. By default, it shows
all accounts and their latest ending balances. if you specify a query
on the command line, it shows just the matched accounts and the bal-
ances from matched transactions.
When not in flat mode, indentation indicates the account hierarchy. F
toggles flat mode on and off.
By default, all subaccounts are displayed. To see less detail, set a
depth limit by pressing a number key, 1 to 9. Or, adjust the depth
limit by pressing - or + (= also works). 0 removes the depth limit.
C toggles cleared mode. In cleared mode, the accounts and balances are
derived only from transactions which are marked cleared (*).
Press right or enter to view an account's transactions register.
RReeggiisstteerr ssccrreeeenn
This screen lists all transactions affecting a particular account (like
a check register). In cleared mode (press C) it lists only transac-
tions which are marked cleared. It does not otherwise filter by query.
Note this screen shows transactions, not postings (unlike hledger's
register command). This means:
+o Each line represents a whole transaction.
+o For each transaction, it shows the other account(s) involved, in
abbreviated form. (If there are both real and virtual postings, it
shows only the accounts affected by real postings.)
+o It shows the overall change to the current account's balance from
each transaction; positive for an inflow to this account, negative
for an outflow.
+o When no query other than a date limit is in effect, it shows the cur-
rent account's historic balance as of the transaction date. Other-
wise it shows a running total starting from zero. Eg, these will
show historic balances:
$ hledger-ui
$ hledger-ui --begin 'this month'
$ hledger-ui --register checking date:2015/10
while these will show a running total, since the queries are not just
date limits:
$ hledger-ui checking
$ hledger-ui --begin 'this month' desc:market
$ hledger-ui --register checking --cleared
Press right or enter to view the selected transaction in full detail.
TTrraannssaaccttiioonn ssccrreeeenn
This screen shows a single transaction, as a general journal entry,
similar to hledger's print command and journal format (hledger_jour-
nal(5)).
The transaction's date(s) and any cleared flag, transaction code,
description, comments, along with all of its account postings are
shown. Simple transactions have two postings, but there can be more
(or in certain cases, fewer).
up and down will step through all transactions listed in the previous
account register screen. In the title bar, the numbers in parentheses
show your position within that account register. They will vary
depending on which account register you came from (remember most trans-
actions appear in multiple account registers). The #N number preceding
them is the transaction's position within the complete unfiltered jour-
nal, which is a more stable id (at least until the next reload).
EErrrroorr ssccrreeeenn
This screen will appear if there is a problem, such as a parse error,
when you press g to reload. Once you have fixed the problem described,
press g again to reload and restore normal operation.
EENNVVIIRROONNMMEENNTT
LLEEDDGGEERR__FFIILLEE sets the default journal file path. If not set, it is
~/.hledger.journal.
CCOOLLUUMMNNSS sets the screen width to use (normally the full terminal
width).
FFIILLEESS
Reads data from a hledger journal file ($LEDGER_FILE or
~/.hledger.journal by default), or a CSV file plus associated CSV rules
file.
BBUUGGSS
The need to precede options with -- when invoked from hledger is awk-
ward.
-f- doesn't work (hledger-ui can't read from stdin).
-V affects only the accounts screen.
When you press g, the current and all previous screens are regenerated,
which may cause a noticeable pause. Also there is no visual indication
that this is in progress.
The register screen's switching between historic balance and running
total based on query arguments may be confusing, and there is no column
heading to indicate which is being displayed.
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
October 2015 hledger-ui(1)

View File

@ -0,0 +1,204 @@
hledger-web(1) hledger User Manuals hledger-web(1)
NNAAMMEE
hledger-web - web interface for the hledger accounting tool
SSYYNNOOPPSSIISS
hledger-web [OPTIONS]
hledger web -- [OPTIONS]
DDEESSCCRRIIPPTTIIOONN
hledger is a cross-platform program for tracking money, time, or any
other commodity, using double-entry accounting and a simple, editable
file format. hledger is inspired by and largely compatible with
ledger(1).
hledger-web is hledger's web interface. It starts a simple web appli-
cation for browsing and adding transactions, and optionally opens it in
a web browser window if possible. It provides a more user-friendly UI
than the hledger CLI or hledger-ui interface, showing more at once
(accounts, the current account register, balance charts) and allowing
history-aware data entry, interactive searching, and bookmarking.
hledger-web also lets you share a ledger with multiple users, or even
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 instance, it writes a
numbered backup of the main journal file (only ?) on every edit.
The journal file is ~/.hledger.journal, $LEDGER_FILE, or another file
specified with -f. For more about the format, see hledger(1) or
hledger_journal(5).
By default, hledger-web starts the web app in "transient mode" and also
opens it in your default web browser if possible. In this mode the web
app will keep running for as long as you have it open in a browser win-
dow, and will exit after two minutes of inactivity (no requests and no
browser windows viewing it).
$ hledger web
Starting web app on port 5000 with base url http://localhost:5000
Starting web browser if possible
Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)
With --server, it starts the web app in non-transient mode and logs
requests to the console. Typically when running hledger web as part of
a website you'll want to use --base-url to set the protocol/host-
name/port/path to be used in hyperlinks. The --file-url option allows
static files to be served from a different url, eg for better caching
or cookie-less serving.
You can use --port to listen on a different TCP port, eg if you are
running multiple hledger-web instances. This need not be the same as
the PORT in the base url.
Note there is no built-in access control, so you will need to hide
hledger-web behind an authenticating proxy (such as apache or nginx) if
you want to restrict who can see and add entries to your journal.
With journal and timeclock files (but not CSV files, currently) the web
app detects changes and will show the new data on the next request. If
a change makes the file unparseable, hledger-web will show an error
until the file has been fixed.
OOPPTTIIOONNSS
Note: if invoking hledger-web as a hledger subcommand, write -- before
options as shown above.
----sseerrvveerr
disable browser-opening and auto-exit-on-idle, and log all
requests to stdout
----ppoorrtt==PPOORRTT
set the TCP port to listen on (default: 5000)
----bbaassee--uurrll==UURRLL
set the base url (default: http://localhost:PORT). You would
change this when sharing over the network, or integrating within
a larger website.
----ffiillee--uurrll==UURRLL
set the static files url (default: BASEURL/static). hledger-web
normally serves static files itself, but if you wanted to serve
them from another server for efficiency, you would set the url
with this.
--hh ----hheellpp
show help
----vveerrssiioonn
show version information
hhlleeddggeerr ooppttiioonnss
The following common hledger options should also work:
--ff FFIILLEE ----ffiillee==FFIILLEE
use a different input file. For stdin, use -
----rruulleess--ffiillee==RRUULLEESSFFIILLEE
Conversion rules file to use when reading CSV (default:
FILE.rules)
----aalliiaass==OOLLDD==NNEEWW
display accounts named OLD as NEW
----iiggnnoorree--aasssseerrttiioonnss
ignore any failing balance assertions in the journal
----ddeebbuugg==NN
show debug output if N is 1-9 (default: 0)
--bb ----bbeeggiinn==DDAATTEE
include postings/txns on or after this date
--ee ----eenndd==DDAATTEE
include postings/txns before this date
--pp ----ppeerriioodd==PPEERRIIOODDEEXXPP
set start date, end date, and/or reporting interval all at once
(overrides the flags above)
----ddaattee22 ----aauuxx--ddaattee
use postings/txns' secondary dates instead
--CC ----cclleeaarreedd
include only cleared postings/txns
----ppeennddiinngg
include only pending postings/txns
--UU ----uunncclleeaarreedd
include only uncleared (and pending) postings/txns
--RR ----rreeaall
include only non-virtual postings
----ddeepptthh==NN
hide accounts/postings deeper than N
--EE ----eemmppttyy
show empty/zero things which are normally omitted
--BB ----ccoosstt
show amounts in their cost price's commodity
EENNVVIIRROONNMMEENNTT
LLEEDDGGEERR__FFIILLEE sets the default journal file path. If not set, it is
~/.hledger.journal.
FFIILLEESS
Reads data from a hledger journal file ($LEDGER_FILE or
~/.hledger.journal by default), or a CSV file plus associated CSV rules
file.
BBUUGGSS
The need to precede options with -- when invoked from hledger is awk-
ward.
-f- doesn't work (hledger-web can't read from stdin).
Query arguments and some applicable hledger options probably aren't
supported.
Does not work in text-mode browsers.
Does not work well on small screens.
The auto-exit feature was added to avoid leaving stray processes, eg on
Windows. It is not well tested.
If you start two instances on the same port, the second one will appear
to run normally, but you will be seeing pages served from the first
one.
RREEPPOORRTTIINNGG BBUUGGSS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
AAUUTTHHOORRSS
Simon Michael <simon@joyful.com> and contributors
CCOOPPYYRRIIGGHHTT
Copyright (C) 2007-2016 Simon Michael.
Released under GNU GPL v3 or later.
SSEEEE AALLSSOO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
dot(5), ledger(1)
http://hledger.org
October 2015 hledger-web(1)

1628
hledger/doc/hledger.1.txt Normal file

File diff suppressed because it is too large Load Diff