Merge branch 'master' into ExceptTLayer

This commit is contained in:
Simon Michael 2018-10-04 21:04:02 -10:00 committed by GitHub
commit 2c9c4ebf79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 15871 additions and 497 deletions

View File

@ -1 +1 @@
1.10.99
1.11

View File

@ -7,7 +7,7 @@ m4_define({{_webseparate_}}, m4_ifdef({{WEB && SEPARATE}},{{$1}}) )m4_dnl
m4_define({{_webcombined_}}, m4_ifdef({{WEB && COMBINED}},{{$1}}) )m4_dnl
m4_dnl
m4_define({{_author_}}, {{}})m4_dnl
m4_define({{_monthyear_}}, {{July 2018}})m4_dnl
m4_define({{_monthyear_}}, {{September 2018}})m4_dnl
m4_define({{_version_}}, {{1.10.99}})m4_dnl
m4_dnl
m4_dnl Links to dev and recent release versions of a manual.
@ -20,6 +20,7 @@ This doc is for version **_version_** (dev).
m4_dnl Too painful for static generation, insert from site.js instead
m4_dnl Available versions:
m4_dnl <a href="/$1.html">dev</a>
m4_dnl | <a href="/doc/1.11/$1.html">1.11</a>
m4_dnl | <a href="/doc/1.10/$1.html">1.10</a>
m4_dnl | <a href="/doc/1.9/$1.html">1.9</a>
m4_dnl | <a href="/doc/1.5/$1.html">1.5</a>

View File

@ -1,6 +1,11 @@
User-visible changes in hledger-api. See also hledger, hledger-lib.
# 1.11 (2018/9/30)
* use hledger 1.11
# 1.10 (2018/6/30)
* use hledger-lib 1.10

View File

@ -1,5 +1,5 @@
.TH "hledger\-api" "1" "July 2018" "hledger\-api 1.10.99" "hledger User Manuals"
.TH "hledger\-api" "1" "September 2018" "hledger\-api 1.10.99" "hledger User Manuals"

View File

@ -2,10 +2,10 @@
--
-- see: https://github.com/sol/hpack
--
-- hash: 07d6eec88f8c0ba15f32b5bf4c9f74e54364b6da30852617699b496fbf3bf63a
-- hash: 7f5a11be3e9db0d4fcebb5b663ee988461de6d815042a7785f9076e083dde205
name: hledger-api
version: 1.10.99
version: 1.11
synopsis: Web API server for the hledger accounting tool
description: This is a simple web API server for hledger data.
It comes with a series of simple client-side web app examples.
@ -45,7 +45,7 @@ executable hledger-api
other-modules:
Paths_hledger_api
ghc-options: -threaded
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
Decimal
, aeson
@ -55,8 +55,8 @@ executable hledger-api
, data-default >=0.5
, docopt
, either
, hledger >=1.10.99 && <1.11
, hledger-lib >=1.10.99 && <1.11
, hledger >=1.11 && <1.12
, hledger-lib >=1.11 && <1.12
, microlens >=0.4
, microlens-platform >=0.2.3.1
, safe

View File

@ -37,12 +37,12 @@ import Text.Printf
import Hledger.Query
import Hledger.Cli hiding (Reader, version)
hledgerApiVersion="1.10.99"
hledgerApiVersion="1.11"
-- https://github.com/docopt/docopt.hs#readme
doc :: Docopt
doc = [docopt|
hledger-api 1.10.99
hledger-api 1.11
Serves hledger data and reports as a JSON web API.

View File

@ -117,4 +117,4 @@ SEE ALSO
hledger-api 1.10.99 July 2018 hledger-api(1)
hledger-api 1.10.99 September 2018 hledger-api(1)

View File

@ -1,5 +1,5 @@
name: hledger-api
version: '1.10.99'
version: '1.11'
synopsis: Web API server for the hledger accounting tool
description: |
This is a simple web API server for hledger data.
@ -32,8 +32,8 @@ extra-source-files:
#data-files:
dependencies:
- hledger-lib >=1.10.99 && <1.11
- hledger >=1.10.99 && <1.11
- hledger-lib >=1.11 && <1.12
- hledger >=1.11 && <1.12
- base >=4.8 && <4.12
- aeson
- bytestring
@ -58,4 +58,4 @@ executables:
hledger-api:
main: hledger-api.hs
ghc-options: -threaded
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"

View File

@ -46,28 +46,22 @@ HERE
#Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpcomplete.com/) ...
# /Users/simon/.stack/indices/Hackage/hackage-security-lock: createDirectory: already exists (File exists)
# this script's name (can't use $0 when it's piped into bash)
HLEDGER_INSTALL_TOOL=hledger-install.sh
# ^ this script's name (can't use $0 when it's piped into bash)
HLEDGER_INSTALL_VERSION=20180824
# this script's version
HLEDGER_INSTALL_VERSION=20181001
# stackage version to install from when using stack
# You can specify a different stackage version here, or comment out
# this line to use your current global resolver, which might avoid
# some unnecessary building.
# Mac Sierra+ requires at least lts-8.0.
# Old lts-6 or lts-7 would probably require tweaking the hledger install commands below.
RESOLVER="--resolver=lts-12"
#RESOLVER="--resolver=nightly-2018-07-09"
# ^ You can specify a different stackage snapshot here,
# or comment out this line to use your current global resolver, which might
# avoid some unnecessary building. OSX Sierra+ requires at least lts-8.0.
# lts-6 or 7 probably require tweaking the hledger install commands below.
HLEDGER_LIB_VERSION=1.10
HLEDGER_VERSION=1.10
HLEDGER_UI_VERSION=1.10.1
HLEDGER_WEB_VERSION=1.10
HLEDGER_API_VERSION=1.10
HLEDGER_DIFF_VERSION=0.2.0.14
HLEDGER_IADD_VERSION=1.3.6
HLEDGER_INTEREST_VERSION=1.5.2
HLEDGER_IRR_VERSION=0.1.1.15
# things to be installed
HLEDGER_MAIN_TOOLS="\
hledger \
@ -80,11 +74,30 @@ HLEDGER_OTHER_TOOLS="\
hledger-diff \
hledger-iadd \
hledger-interest \
hledger-irr \
"
# latest hledger package versions, update often:
HLEDGER_VERSION=1.11
HLEDGER_LIB_VERSION=$HLEDGER_VERSION
HLEDGER_UI_VERSION=$HLEDGER_VERSION
HLEDGER_WEB_VERSION=$HLEDGER_VERSION
HLEDGER_API_VERSION=$HLEDGER_VERSION
HLEDGER_DIFF_VERSION=0.2.0.14
HLEDGER_IADD_VERSION=1.3.6
HLEDGER_INTEREST_VERSION=1.5.2
# extra dependencies that aren't in stackage:
EXTRA_DEPS="\
cassava-megaparsec-1.0.0 \
"
# the oldest version of stack that will work:
STACK_VERSION=1.7.1
# start of (most of) get-stack.sh, https://github.com/commercialhaskell/stack/blob/master/etc/scripts/get-stack.sh
# modified at CHANGED markers
# CHANGED marks a few of our customisations, but not all.
HOME_LOCAL_BIN="$HOME/.local/bin"
USR_LOCAL_BIN="/usr/local/bin"
@ -645,6 +658,12 @@ has_stack() {
has_cmd stack
}
# Check whether a new enough version of the 'stack' command exists
has_good_stack() {
has_cmd stack &&
[[ ! $(cmpver "$(cmd_version stack 2>/dev/null)" $STACK_VERSION) = 2 ]]
}
# Check whether 'wget' command exists
has_wget() {
has_cmd wget
@ -735,7 +754,7 @@ check_usr_local_bin_on_path() {
# Check whether Stack is already installed, and print an error if it is.
check_stack_installed() {
if [ "$FORCE_INSTALL_STACK" != "true" ] && has_stack ; then
if [ "$FORCE_INSTALL_STACK" != "true" ] && has_good_stack ; then
die "Stack $(stack_version) already appears to be installed at:
$(stack_location)
Use 'stack upgrade' or your OS's package manager to upgrade,
@ -749,9 +768,11 @@ trap cleanup_temp_dir EXIT
# hledger routines
# install stack if needed, or always with --force-install-stack, in $HOME/.local/bin
# install stack or a newer version of stack if needed,
# or always with --force-install-stack,
# in $HOME/.local/bin
ensure_stack() {
if ! has_stack || [[ "$FORCE_INSTALL_STACK" == "true" ]] ; then
if ! has_good_stack || [[ "$FORCE_INSTALL_STACK" == "true" ]] ; then
echo "Installing stack"
do_os
fi
@ -786,13 +807,13 @@ print_cmd_version() {
if [[ $(cmd_location "$1") ]]; then
echo "$1" $(cmd_version "$1") is installed at $(cmd_location "$1")
else
echo "$1 not found"
echo "$1 is not found"
fi
}
# Show the installation status of the $HLEDGER_MAIN_TOOLS and $HLEDGER_OTHER_TOOLS.
print_hledger_versions() {
for cmd in $HLEDGER_MAIN_TOOLS $HLEDGER_OTHER_TOOLS $HLEDGER_INSTALL_TOOL ; do print_cmd_version "$cmd"; done
# Show the current installation status of the hledger packages and install tools.
print_installed_versions() {
for cmd in $HLEDGER_MAIN_TOOLS $HLEDGER_OTHER_TOOLS $HLEDGER_INSTALL_TOOL stack cabal ; do print_cmd_version "$cmd"; done
}
# Run a command, but first log it with "Trying" prepended.
@ -814,14 +835,20 @@ quietly_run() {
# For the stack method, it's necessary to provide not only the package(s) you want to
# install but also all dependencies which are not in the specified stackage $RESOLVER.
try_install() {
(cd # avoid any project-specific stack/cabal config, install at user level
(! has_cmd stack && has_cmd cabal && echo "using $(cabal --version)" && try_info cabal install "$@" --verbose="$CABAL_VERBOSITY" ) ||
(cd # ensure we install at user level, not in some project's stack/cabal setup
# cabal and not stack installed ? use cabal
(! has_cmd stack && has_cmd cabal && (
echo "no stack installed, cabal $(cabal --numeric-version) installed; trying cabal install" && # cf cabal update step
try_info cabal install "$@" --verbose="$CABAL_VERBOSITY" )
) ||
# use stack, installing it if missing or too old
(ensure_stack && (
#(try_info stack install --install-ghc "$@" --verbosity=$STACK_VERBOSITY ) || # existing resolver
(try_info stack install --install-ghc $RESOLVER "$@" --verbosity="$STACK_VERBOSITY" ) # specific resolver
)
) ||
echo Failed to install "$@"
# or give up
echo "Failed to install $@"
)
}
@ -900,15 +927,18 @@ quietly_run uname -rsv
quietly_run lsb_release -a
# show current installed hledger packages
echo "Install status:"
print_hledger_versions
echo "Install status before:"
print_installed_versions
if [[ $STATUSFLAG ]] ; then
exit 0
fi
# if we'll be using cabal, run cabal update once at the start
(! has_cmd stack && has_cmd cabal && try_info cabal update )
(! has_cmd stack && has_cmd cabal &&
echo "no stack installed, cabal $(cabal --numeric-version) installed; trying cabal update" && # cf try-install()
try_info cabal update
)
# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401.
# cmpver A B's exit status *and* output is
@ -951,60 +981,54 @@ echo ----------
if [[ $(cmpver "$(cmd_version hledger 2>/dev/null)" $HLEDGER_VERSION) = 2 ]]; then
echo Installing hledger
try_install hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION
try_install hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS
echo
fi
if [[ $(cmpver "$(cmd_version hledger-ui 2>/dev/null)" $HLEDGER_UI_VERSION) = 2 ]]; then
echo Installing hledger-ui
try_install hledger-ui-$HLEDGER_UI_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION \
fsnotify-0.3.0.1
# brick-0.19 data-clist-0.1.2.0
# ^ when hledger-iadd requires a non-stack brick, use the same version here to avoid rebuilding
try_install hledger-ui-$HLEDGER_UI_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS \
# brick-X.Y # when hledger-iadd requires a special brick, use the same here to reduce rebuilding
echo
fi
if [[ $(cmpver "$(cmd_version hledger-web 2>/dev/null)" $HLEDGER_WEB_VERSION) = 2 ]]; then
echo Installing hledger-web
try_install hledger-web-$HLEDGER_WEB_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION
try_install hledger-web-$HLEDGER_WEB_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS
echo
fi
if [[ $(cmpver "$(cmd_version hledger-api 2>/dev/null)" $HLEDGER_API_VERSION) = 2 ]]; then
echo Installing hledger-api
try_install hledger-api-$HLEDGER_API_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION
try_install hledger-api-$HLEDGER_API_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS
echo
fi
# Third-party addons. We allow these to use an older version of
# hledger-lib, in case their bounds have not been updated yet.
exit
# Third-party addons. We sometimes build these with an older version
# of hledger[-lib], if their bounds have not been updated yet.
if [[ $(cmpver "$(cmd_version hledger-diff 2>/dev/null)" $HLEDGER_DIFF_VERSION) = 2 ]]; then
echo Installing hledger-diff
try_install hledger-diff-$HLEDGER_DIFF_VERSION hledger-lib-$HLEDGER_LIB_VERSION
try_install hledger-diff-$HLEDGER_DIFF_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS
echo
fi
if [[ $(cmpver "$(cmd_version hledger-iadd 2>/dev/null)" $HLEDGER_IADD_VERSION) = 2 ]]; then
echo Installing hledger-iadd
try_install hledger-iadd-$HLEDGER_IADD_VERSION hledger-lib-$HLEDGER_LIB_VERSION
try_install hledger-iadd-$HLEDGER_IADD_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS
echo
fi
if [[ $(cmpver "$(cmd_version hledger-interest 2>/dev/null)" $HLEDGER_INTEREST_VERSION) = 2 ]]; then
echo Installing hledger-interest
try_install hledger-interest-$HLEDGER_INTEREST_VERSION hledger-lib-$HLEDGER_LIB_VERSION
try_install hledger-interest-$HLEDGER_INTEREST_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS
echo
fi
if [[ $(cmpver "$(cmd_version hledger-irr 2>/dev/null)" $HLEDGER_IRR_VERSION) = 2 ]]; then
echo Installing hledger-irr
try_install hledger-irr-$HLEDGER_IRR_VERSION hledger-lib-$HLEDGER_LIB_VERSION
echo
fi
echo ----------
# show new installation status
print_hledger_versions
echo "Install status after:"
print_installed_versions
# warn if $HOME/.local/bin isn't in $PATH
check_home_local_bin_on_path

View File

@ -2,6 +2,79 @@ API-ish changes in the hledger-lib package.
Most user-visible changes are noted in the hledger changelog, instead.
# 1.11 (2018/9/30)
* compilation now works when locale is unset (#849)
* all unit tests have been converted from HUnit+test-framework to easytest
* doctests now run quicker by default, by skipping reloading between tests.
This can be disabled by passing --slow to the doctests test suite
executable.
* doctests test suite executable now supports --verbose, which shows
progress output as tests are run if doctest 0.16.0+ is installed
(and hopefully is harmless otherwise).
* doctests now support file pattern arguments, provide more informative output.
Limiting to just the file(s) you're interested can make doctest start
much quicker. With one big caveat: you can limit the starting files,
but it always imports and tests all other local files those import.
* a bunch of custom Show instances have been replaced with defaults,
for easier troubleshooting. These were sometimes obscuring
important details, eg in test failure output. Our new policy is:
stick with default derived Show instances as far as possible, but
when necessary adjust them to valid haskell syntax so pretty-show
can pretty-print them (eg when they contain Day values, cf
https://github.com/haskell/time/issues/101). By convention, when
fields are shown in less than full detail, and/or in double-quoted
pseudo syntax, we show a double period (..) in the output.
* Amount has a new Show instance. Amount's show instance hid
important details by default, and showing more details required
increasing the debug level, which was inconvenient. Now it has a
single show instance which shows more information, is fairly
compact, and is pretty-printable.
ghci> usd 1
OLD:
Amount {acommodity="$", aquantity=1.00, ..}
NEW:
Amount {acommodity = "$", aquantity = 1.00, aprice = NoPrice, astyle = AmountStyle "L False 2 Just '.' Nothing..", amultiplier = False}
MixedAmount's show instance is unchanged, but showMixedAmountDebug
is affected by this change:
ghci> putStrLn $ showMixedAmountDebug $ Mixed [usd 1]
OLD:
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle {ascommodityside = L, ascommodityspaced = False, asprecision = 2, asdecimalpoint = Just '.', asdigitgroups = Nothing}}]
NEW:
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle "L False 2 Just '.' Nothing.."}]
* Same-line & next-line comments of transactions, postings, etc.
are now parsed a bit more precisely (followingcommentp).
Previously, parsing no comment gave the same result as an empty
comment (a single newline); now it gives an empty string.
Also, and perhaps as a consequence of the above, when there's no
same-line comment but there is a next-line comment, we'll insert an
empty first line, since otherwise next-line comments would get moved
up to the same line when rendered.
* Hledger.Utils.Test exports HasCallStack
* queryDateSpan, queryDateSpan' now intersect date AND'ed date spans
instead of unioning them, and docs are clearer.
* pushAccount -> pushDeclaredAccount
* jaccounts -> jdeclaredaccounts
* AutoTransaction.hs -> PeriodicTransaction.hs & TransactionModifier.hs
* Hledger.Utils.Debug helpers have been renamed/cleaned up
# 1.10 (2018/6/30)
* build cleanly with all supported GHC versions again (7.10 to 8.4)

View File

@ -2,10 +2,10 @@
--
-- see: https://github.com/sol/hpack
--
-- hash: 54632c4329f85aa921fb91abbed9c0871465e0cfb4cdfa05a390447c6d796b83
-- hash: f3cc307bb564ecec4c16143a1d254c4cbbbee1483eb7860c711e3c4c5ed46431
name: hledger-lib
version: 1.10.99
version: 1.11
synopsis: Core data types, parsers and functionality for the hledger accounting tools
description: This is a reusable library containing hledger's core functionality.
.

View File

@ -1,5 +1,5 @@
.TH "hledger_csv" "5" "July 2018" "hledger 1.10.99" "hledger User Manuals"
.TH "hledger_csv" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals"

View File

@ -249,4 +249,4 @@ SEE ALSO
hledger 1.10.99 July 2018 hledger_csv(5)
hledger 1.10.99 September 2018 hledger_csv(5)

View File

@ -1,6 +1,6 @@
.\"t
.TH "hledger_journal" "5" "July 2018" "hledger 1.10.99" "hledger User Manuals"
.TH "hledger_journal" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals"
@ -1159,54 +1159,84 @@ hledger add, hledger\-iadd, hledger\-web, and ledger\-mode.
.PD
In future it will also help detect misspelled accounts.
.PP
Account names can be followed by a numeric account code:
.IP
.nf
\f[C]
account\ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1000
account\ assets:bank:checking\ \ \ \ 1110
account\ liabilities\ \ \ \ \ \ \ \ \ \ \ \ \ 2000
account\ revenues\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4000
account\ expenses\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 6000
\f[]
.fi
.PP
This affects how accounts are sorted in account and balance reports:
accounts with codes are listed before accounts without codes, and in
increasing code order (instead of listing all accounts alphabetically).
Warning, this feature is incomplete; account codes do not yet affect
sort order in
.IP \[bu] 2
the \f[C]accounts\f[] command
.IP \[bu] 2
the \f[C]balance\f[] command's single\-column mode
.IP \[bu] 2
flat mode balance reports (to work around this, declare account codes on
the subaccounts as well).
.IP \[bu] 2
hledger\-web's sidebar
.PP
Account codes should be all numeric digits, unique, and separated from
the account name by at least two spaces (since account names may contain
single spaces).
By convention, often the first digit indicates the type of account, as
in this numbering scheme and the example above.
In future, we might use this to recognize account types.
.PP
An account directive can also have indented subdirectives following it,
which are currently ignored.
Here is the full syntax:
.IP
.nf
\f[C]
;\ account\ ACCTNAME\ \ [OPTIONALCODE]
;\ account\ ACCTNAME
;\ \ \ [OPTIONALSUBDIRECTIVES]
account\ assets:bank:checking\ \ \ 1110
account\ assets:bank:checking
\ \ a\ comment
\ \ some\-tag:12345
\f[]
.fi
.SS Account display order
.PP
Account directives have another purpose: they set the order in which
accounts are displayed, in hledger reports, hledger\-ui accounts screen,
hledger\-web sidebar etc.
For example, say you have these top\-level accounts:
.IP
.nf
\f[C]
$\ accounts\ \-1
assets
equity
expenses
liabilities
misc
other
revenues
\f[]
.fi
.PP
By default, they are displayed in alphabetical order.
But if you add the following account directives to the journal:
.IP
.nf
\f[C]
account\ assets
account\ liabilities
account\ equity
account\ revenues
account\ expenses
\f[]
.fi
.PP
the display order changes to:
.IP
.nf
\f[C]
$\ accounts\ \-1
assets
liabilities
equity
revenues
expenses
misc
other
\f[]
.fi
.PP
Ie, declared accounts first, in the order they were declared, followed
by any undeclared accounts in alphabetic order.
.PP
Note that sorting is done at each level of the account tree (within each
group of sibling accounts under the same parent).
This directive:
.IP
.nf
\f[C]
account\ other:zoo
\f[]
.fi
.PP
would influence the position of \f[C]zoo\f[] among \f[C]other\f[]'s
subaccounts, but not the position of \f[C]other\f[] among the top\-level
accounts.
.SS Rewriting accounts
.PP
You can define account alias rules which rewrite your account names, or

View File

@ -853,6 +853,7 @@ times though.
* Default commodity::
* Market prices::
* Declaring accounts::
* Account display order::
* Rewriting accounts::
* Default parent account::
@ -1002,7 +1003,7 @@ P 2010/1/1 € $1.40
another commodity using these prices.

File: hledger_journal.info, Node: Declaring accounts, Next: Rewriting accounts, Prev: Market prices, Up: Directives
File: hledger_journal.info, Node: Declaring accounts, Next: Account display order, Prev: Market prices, Up: Directives
1.14.7 Declaring accounts
-------------------------
@ -1016,46 +1017,71 @@ account assets:bank:checking
hledger add, hledger-iadd, hledger-web, and ledger-mode.
In future it will also help detect misspelled accounts.
Account names can be followed by a numeric account code:
account assets 1000
account assets:bank:checking 1110
account liabilities 2000
account revenues 4000
account expenses 6000
This affects how accounts are sorted in account and balance reports:
accounts with codes are listed before accounts without codes, and in
increasing code order (instead of listing all accounts alphabetically).
Warning, this feature is incomplete; account codes do not yet affect
sort order in
* the 'accounts' command
* the 'balance' command's single-column mode
* flat mode balance reports (to work around this, declare account
codes on the subaccounts as well).
* hledger-web's sidebar
Account codes should be all numeric digits, unique, and separated
from the account name by at least two spaces (since account names may
contain single spaces). By convention, often the first digit indicates
the type of account, as in this numbering scheme and the example above.
In future, we might use this to recognize account types.
An account directive can also have indented subdirectives following
it, which are currently ignored. Here is the full syntax:
; account ACCTNAME [OPTIONALCODE]
; account ACCTNAME
; [OPTIONALSUBDIRECTIVES]
account assets:bank:checking 1110
account assets:bank:checking
a comment
some-tag:12345

File: hledger_journal.info, Node: Rewriting accounts, Next: Default parent account, Prev: Declaring accounts, Up: Directives
File: hledger_journal.info, Node: Account display order, Next: Rewriting accounts, Prev: Declaring accounts, Up: Directives
1.14.8 Rewriting accounts
1.14.8 Account display order
----------------------------
Account directives have another purpose: they set the order in which
accounts are displayed, in hledger reports, hledger-ui accounts screen,
hledger-web sidebar etc. For example, say you have these top-level
accounts:
$ accounts -1
assets
equity
expenses
liabilities
misc
other
revenues
By default, they are displayed in alphabetical order. But if you add
the following account directives to the journal:
account assets
account liabilities
account equity
account revenues
account expenses
the display order changes to:
$ accounts -1
assets
liabilities
equity
revenues
expenses
misc
other
Ie, declared accounts first, in the order they were declared,
followed by any undeclared accounts in alphabetic order.
Note that sorting is done at each level of the account tree (within
each group of sibling accounts under the same parent). This directive:
account other:zoo
would influence the position of 'zoo' among 'other''s subaccounts,
but not the position of 'other' among the top-level accounts.

File: hledger_journal.info, Node: Rewriting accounts, Next: Default parent account, Prev: Account display order, Up: Directives
1.14.9 Rewriting accounts
-------------------------
You can define account alias rules which rewrite your account names, or
@ -1083,7 +1109,7 @@ hledger-web.

File: hledger_journal.info, Node: Basic aliases, Next: Regex aliases, Up: Rewriting accounts
1.14.8.1 Basic aliases
1.14.9.1 Basic aliases
......................
To set an account alias, use the 'alias' directive in your journal file.
@ -1106,7 +1132,7 @@ alias checking = assets:bank:wells fargo:checking

File: hledger_journal.info, Node: Regex aliases, Next: Multiple aliases, Prev: Basic aliases, Up: Rewriting accounts
1.14.8.2 Regex aliases
1.14.9.2 Regex aliases
......................
There is also a more powerful variant that uses a regular expression,
@ -1131,7 +1157,7 @@ whitespace.

File: hledger_journal.info, Node: Multiple aliases, Next: end aliases, Prev: Regex aliases, Up: Rewriting accounts
1.14.8.3 Multiple aliases
1.14.9.3 Multiple aliases
.........................
You can define as many aliases as you like using directives or
@ -1147,7 +1173,7 @@ following order:

File: hledger_journal.info, Node: end aliases, Prev: Multiple aliases, Up: Rewriting accounts
1.14.8.4 'end aliases'
1.14.9.4 'end aliases'
......................
You can clear (forget) all currently defined aliases with the 'end
@ -1158,8 +1184,8 @@ end aliases

File: hledger_journal.info, Node: Default parent account, Prev: Rewriting accounts, Up: Directives
1.14.9 Default parent account
-----------------------------
1.14.10 Default parent account
------------------------------
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
@ -1417,41 +1443,43 @@ Node: Tags26403
Ref: #tags26521
Node: Directives27923
Ref: #directives28066
Node: Comment blocks33922
Ref: #comment-blocks34067
Node: Including other files34243
Ref: #including-other-files34423
Node: Default year34831
Ref: #default-year35000
Node: Declaring commodities35423
Ref: #declaring-commodities35606
Node: Default commodity36833
Ref: #default-commodity37009
Node: Market prices37645
Ref: #market-prices37810
Node: Declaring accounts38651
Ref: #declaring-accounts38827
Node: Rewriting accounts40498
Ref: #rewriting-accounts40683
Node: Basic aliases41417
Ref: #basic-aliases41563
Node: Regex aliases42267
Ref: #regex-aliases42438
Node: Multiple aliases43156
Ref: #multiple-aliases43331
Node: end aliases43829
Ref: #end-aliases43976
Node: Default parent account44077
Ref: #default-parent-account44243
Node: Periodic transactions45127
Ref: #periodic-transactions45309
Node: Forecasting with periodic transactions46520
Ref: #forecasting-with-periodic-transactions46763
Node: Budgeting with periodic transactions48450
Ref: #budgeting-with-periodic-transactions48689
Node: Transaction Modifiers49148
Ref: #transaction-modifiers49311
Node: EDITOR SUPPORT50567
Ref: #editor-support50685
Node: Comment blocks33948
Ref: #comment-blocks34093
Node: Including other files34269
Ref: #including-other-files34449
Node: Default year34857
Ref: #default-year35026
Node: Declaring commodities35449
Ref: #declaring-commodities35632
Node: Default commodity36859
Ref: #default-commodity37035
Node: Market prices37671
Ref: #market-prices37836
Node: Declaring accounts38677
Ref: #declaring-accounts38856
Node: Account display order39406
Ref: #account-display-order39596
Node: Rewriting accounts40617
Ref: #rewriting-accounts40805
Node: Basic aliases41539
Ref: #basic-aliases41685
Node: Regex aliases42389
Ref: #regex-aliases42560
Node: Multiple aliases43278
Ref: #multiple-aliases43453
Node: end aliases43951
Ref: #end-aliases44098
Node: Default parent account44199
Ref: #default-parent-account44367
Node: Periodic transactions45251
Ref: #periodic-transactions45433
Node: Forecasting with periodic transactions46644
Ref: #forecasting-with-periodic-transactions46887
Node: Budgeting with periodic transactions48574
Ref: #budgeting-with-periodic-transactions48813
Node: Transaction Modifiers49272
Ref: #transaction-modifiers49435
Node: EDITOR SUPPORT50691
Ref: #editor-support50809

End Tag Table

View File

@ -819,45 +819,62 @@ FILE FORMAT
hledger add, hledger-iadd, hledger-web, and ledger-mode.
In future it will also help detect misspelled accounts.
Account names can be followed by a numeric account code:
account assets 1000
account assets:bank:checking 1110
account liabilities 2000
account revenues 4000
account expenses 6000
This affects how accounts are sorted in account and balance reports:
accounts with codes are listed before accounts without codes, and in
increasing code order (instead of listing all accounts alphabetically).
Warning, this feature is incomplete; account codes do not yet affect
sort order in
o the accounts command
o the balance command's single-column mode
o flat mode balance reports (to work around this, declare account codes
on the subaccounts as well).
o hledger-web's sidebar
Account codes should be all numeric digits, unique, and separated from
the account name by at least two spaces (since account names may con-
tain single spaces). By convention, often the first digit indicates
the type of account, as in this numbering scheme and the example above.
In future, we might use this to recognize account types.
An account directive can also have indented subdirectives following it,
which are currently ignored. Here is the full syntax:
; account ACCTNAME [OPTIONALCODE]
; account ACCTNAME
; [OPTIONALSUBDIRECTIVES]
account assets:bank:checking 1110
account assets:bank:checking
a comment
some-tag:12345
Account display order
Account directives have another purpose: they set the order in which
accounts are displayed, in hledger reports, hledger-ui accounts screen,
hledger-web sidebar etc. For example, say you have these top-level
accounts:
$ accounts -1
assets
equity
expenses
liabilities
misc
other
revenues
By default, they are displayed in alphabetical order. But if you add
the following account directives to the journal:
account assets
account liabilities
account equity
account revenues
account expenses
the display order changes to:
$ accounts -1
assets
liabilities
equity
revenues
expenses
misc
other
Ie, declared accounts first, in the order they were declared, followed
by any undeclared accounts in alphabetic order.
Note that sorting is done at each level of the account tree (within
each group of sibling accounts under the same parent). This directive:
account other:zoo
would influence the position of zoo among other's subaccounts, but not
the position of other among the top-level accounts.
Rewriting accounts
You can define account alias rules which rewrite your account names, or
parts of them, before generating reports. This can be useful for:
@ -873,14 +890,14 @@ FILE FORMAT
o customising reports
Account aliases also rewrite account names in account directives. They
do not affect account names being entered via hledger add or
do not affect account names being entered via hledger add or
hledger-web.
See also Cookbook: Rewrite account names.
Basic aliases
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
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
@ -888,54 +905,54 @@ FILE FORMAT
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 case sensitive full account names. hledger will
replace any occurrence of the old account name with the new one. Sub-
OLD and NEW are case sensitive full account names. hledger will
replace any occurrence of the old account name with the new one. Sub-
accounts 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"
Regex aliases
There is also a more powerful variant that uses a regular expression,
There is also a more powerful variant that uses a regular expression,
indicated by the forward slashes:
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-
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. Eg:
alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3
# rewrites "assets:bank:wells fargo:checking" to "assets:wells fargo checking"
Also note that REPLACEMENT continues to the end of line (or on command
line, to end of option argument), so it can contain trailing white-
Also note that REPLACEMENT continues to the end of line (or on command
line, to end of option argument), so it can contain trailing white-
space.
Multiple aliases
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
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
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
end aliases
You can clear (forget) all currently defined aliases with the
You can clear (forget) all currently defined aliases with the
end aliases directive:
end aliases
Default parent account
You can specify a parent account which will be prepended to all
accounts within a section of the journal. Use the apply account and
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
@ -952,7 +969,7 @@ FILE FORMAT
home:food $10
home:cash $-10
If end apply account is omitted, the effect lasts to the end of the
If end apply account is omitted, the effect lasts to the end of the
file. Included files are also affected, eg:
apply account business
@ -961,18 +978,18 @@ FILE FORMAT
apply account personal
include personal.journal
Prior to hledger 1.0, legacy account and end spellings were also sup-
Prior to hledger 1.0, legacy account and end spellings were also sup-
ported.
A default parent account also affects account directives. It does not
affect account names being entered via hledger add or hledger-web. If
account aliases are present, they are applied after the default parent
A default parent account also affects account directives. It does not
affect account names being entered via hledger add or hledger-web. If
account aliases are present, they are applied after the default parent
account.
Periodic transactions
Periodic transaction rules describe transactions that recur. They
Periodic transaction rules describe transactions that recur. They
allow you to generate future transactions for forecasting, without hav-
ing to write them out explicitly in the journal (with --forecast).
ing to write them out explicitly in the journal (with --forecast).
Secondly, they also can be used to define budget goals (with --budget).
A periodic transaction rule looks like a normal journal entry, with the
@ -983,8 +1000,8 @@ FILE FORMAT
expenses:rent $2000
assets:bank:checking
There is an additional constraint on the period expression: the start
date must fall on a natural boundary of the interval. Eg
There is an additional constraint on the period expression: the start
date must fall on a natural boundary of the interval. Eg
monthly from 2018/1/1 is valid, but monthly from 2018/1/15 is not.
If you write a transaction description or same-line comment, it must be
@ -998,77 +1015,77 @@ FILE FORMAT
income:acme inc
Forecasting with periodic transactions
With the --forecast flag, each periodic transaction rule generates
With the --forecast flag, each periodic transaction rule generates
future transactions recurring at the specified interval. These are not
saved in the journal, but appear in all reports. They will look like
normal transactions, but with an extra tag named recur, whose value is
saved in the journal, but appear in all reports. They will look like
normal transactions, but with an extra tag named recur, whose value is
the generating period expression.
Forecast transactions start on the first occurrence, and end on the
last occurrence, of their interval within the forecast period. The
Forecast transactions start on the first occurrence, and end on the
last occurrence, of their interval within the forecast period. The
forecast period:
o begins on the later of
o the report start date if specified with -b/-p/date:
o the day after the latest normal (non-periodic) transaction in the
o the day after the latest normal (non-periodic) transaction in the
journal, or today if there are no normal transactions.
o ends on the report end date if specified with -e/-p/date:, or 180
o ends on the report end date if specified with -e/-p/date:, or 180
days from today.
where "today" means the current date at report time. The "later of"
rule ensures that forecast transactions do not overlap normal transac-
where "today" means the current date at report time. The "later of"
rule ensures that forecast transactions do not overlap normal transac-
tions in time; they will begin only after normal transactions end.
Forecasting can be useful for estimating balances into the future, and
experimenting with different scenarios. Note the start date logic
Forecasting can be useful for estimating balances into the future, and
experimenting with different scenarios. Note the start date logic
means that forecasted transactions are automatically replaced by normal
transactions as you add those.
Forecasting can also help with data entry: describe most of your trans-
actions with periodic rules, and every so often copy the output of
actions with periodic rules, and every so often copy the output of
print --forecast to the journal.
You can generate one-time transactions too: just write a period expres-
sion specifying a date with no report interval. (You could also write
a normal transaction with a future date, but remember this disables
sion specifying a date with no report interval. (You could also write
a normal transaction with a future date, but remember this disables
forecast transactions on previous dates.)
Budgeting with periodic transactions
With the --budget flag, currently supported by the balance command,
each periodic transaction rule declares recurring budget goals for the
specified accounts. Eg the first example above declares a goal of
spending $2000 on rent (and also, a goal of depositing $2000 into
checking) every month. Goals and actual performance can then be com-
With the --budget flag, currently supported by the balance command,
each periodic transaction rule declares recurring budget goals for the
specified accounts. Eg the first example above declares a goal of
spending $2000 on rent (and also, a goal of depositing $2000 into
checking) every month. Goals and actual performance can then be com-
pared in budget reports.
For more details, see: balance: Budget report and Cookbook: Budgeting
For more details, see: balance: Budget report and Cookbook: Budgeting
and Forecasting.
Transaction Modifiers
Transaction modifier rules describe changes that should be applied
automatically to certain transactions. Currently, this means adding
Transaction modifier rules describe changes that should be applied
automatically to certain transactions. Currently, this means adding
extra postings (also known as "automated postings"). Transaction modi-
fiers are enabled by the --auto flag.
A transaction modifier rule looks a bit like a normal journal entry,
except the first line is an equal sign (=) followed by a query
A transaction modifier rule looks a bit like a normal journal entry,
except the first line is an equal sign (=) followed by a query
(mnemonic: = suggests matching something.):
= expenses:gifts
budget:gifts *-1
assets:budget *1
The posting amounts can be of the form *N, which means "the amount of
the matched transaction's first posting, multiplied by N". They can
The posting amounts can be of the form *N, which means "the amount of
the matched transaction's first posting, multiplied by N". They can
also be ordinary fixed amounts. Fixed amounts with no commodity symbol
will be given the same commodity as the matched transaction's first
will be given the same commodity as the matched transaction's first
posting.
This example adds a corresponding (unbalanced) budget posting to every
This example adds a corresponding (unbalanced) budget posting to every
transaction involving the expenses:gifts account:
= expenses:gifts
@ -1084,16 +1101,16 @@ FILE FORMAT
(budget:gifts) $-20
assets
Like postings recorded by hand, automated postings participate in
Like postings recorded by hand, automated postings participate in
transaction balancing, missing amount inference and balance assertions.
EDITOR SUPPORT
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
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
These were written with Ledger in mind, but also work with hledger
files:
@ -1112,7 +1129,7 @@ EDITOR SUPPORT
REPORTING BUGS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
@ -1126,7 +1143,7 @@ COPYRIGHT
SEE ALSO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
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)
@ -1134,4 +1151,4 @@ SEE ALSO
hledger 1.10.99 July 2018 hledger_journal(5)
hledger 1.10.99 September 2018 hledger_journal(5)

View File

@ -1,5 +1,5 @@
.TH "hledger_timeclock" "5" "July 2018" "hledger 1.10.99" "hledger User Manuals"
.TH "hledger_timeclock" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals"

View File

@ -77,4 +77,4 @@ SEE ALSO
hledger 1.10.99 July 2018 hledger_timeclock(5)
hledger 1.10.99 September 2018 hledger_timeclock(5)

View File

@ -1,5 +1,5 @@
.TH "hledger_timedot" "5" "July 2018" "hledger 1.10.99" "hledger User Manuals"
.TH "hledger_timedot" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals"

View File

@ -124,4 +124,4 @@ SEE ALSO
hledger 1.10.99 July 2018 hledger_timedot(5)
hledger 1.10.99 September 2018 hledger_timedot(5)

View File

@ -1,5 +1,5 @@
name: hledger-lib
version: '1.10.99'
version: '1.11'
synopsis: Core data types, parsers and functionality for the hledger accounting tools
description: |
This is a reusable library containing hledger's core functionality.

View File

@ -1,6 +1,11 @@
User-visible changes in hledger-ui. See also hledger, hledger-lib.
# 1.11 (2018/9/30)
* use hledger 1.11
# 1.10.1 (2018/7/3)
* restore support for fsnotify 0.2.1.2, as well as 0.3.x (#833)

View File

@ -1,5 +1,5 @@
.TH "hledger\-ui" "1" "July 2018" "hledger\-ui 1.10.99" "hledger User Manuals"
.TH "hledger\-ui" "1" "September 2018" "hledger\-ui 1.10.99" "hledger User Manuals"

View File

@ -2,10 +2,10 @@
--
-- see: https://github.com/sol/hpack
--
-- hash: 88116009cafa64bb3351a332b88f9848d895f7bc4e614a8647f9c26c6405ba35
-- hash: d2925ba85674c61c233d118134f8b3cd090ca0900953652b4253755bb8840c9c
name: hledger-ui
version: 1.10.99
version: 1.11
synopsis: Curses-style user interface for the hledger accounting tool
description: This is hledger's curses-style interface.
It is simpler and more convenient for browsing data than the command-line interface,
@ -63,7 +63,7 @@ executable hledger-ui
hs-source-dirs:
./.
ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
ansi-terminal >=0.6.2.3
, async
@ -75,8 +75,8 @@ executable hledger-ui
, directory
, filepath
, fsnotify >=0.2.1.2 && <0.4
, hledger >=1.10.99 && <1.11
, hledger-lib >=1.10.99 && <1.11
, hledger >=1.11 && <1.12
, hledger-lib >=1.11 && <1.12
, megaparsec >=6.4.1
, microlens >=0.4
, microlens-platform >=0.2.3.1

View File

@ -387,4 +387,4 @@ SEE ALSO
hledger-ui 1.10.99 July 2018 hledger-ui(1)
hledger-ui 1.10.99 September 2018 hledger-ui(1)

View File

@ -1,5 +1,5 @@
name : hledger-ui
version : '1.10.99'
version : '1.11'
synopsis : Curses-style user interface for the hledger accounting tool
description : |
This is hledger's curses-style interface.
@ -37,11 +37,11 @@ flags:
manual: false
default: true
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
dependencies:
- hledger >=1.10.99 && <1.11
- hledger-lib >=1.10.99 && <1.11
- hledger >=1.11 && <1.12
- hledger-lib >=1.11 && <1.12
- ansi-terminal >=0.6.2.3
- async
- base >=4.8 && <4.12

View File

@ -1,6 +1,11 @@
User-visible changes in hledger-web. See also hledger, hledger-lib.
# 1.11 (2018/9/30)
* use hledger 1.11
# 1.10 (2018/6/30)
* multiple -f options, and --auto, work again

View File

@ -1,5 +1,5 @@
.TH "hledger\-web" "1" "July 2018" "hledger\-web 1.10.99" "hledger User Manuals"
.TH "hledger\-web" "1" "September 2018" "hledger\-web 1.10.99" "hledger User Manuals"

View File

@ -2,10 +2,10 @@
--
-- see: https://github.com/sol/hpack
--
-- hash: b77366b5a138b9d5a3b4c4541bfb875642f06b621bd690712d022f53ab1afbf6
-- hash: a990f6fed36d14942e007240e0b37a9ff1147902b74cadc426403828ce3950a6
name: hledger-web
version: 1.10.99
version: 1.11
synopsis: Web interface for the hledger accounting tool
description: This is hledger's web interface.
It provides a more user-friendly and collaborative UI than the
@ -149,7 +149,7 @@ library
other-modules:
Paths_hledger_web
ghc-options: -Wall -fwarn-tabs
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
base >=4.8 && <4.12
, blaze-html
@ -164,8 +164,8 @@ library
, directory
, filepath
, hjsmin
, hledger >=1.10.99 && <1.11
, hledger-lib >=1.10.99 && <1.11
, hledger >=1.11 && <1.12
, hledger-lib >=1.11 && <1.12
, http-client
, http-conduit
, json
@ -201,7 +201,7 @@ executable hledger-web
hs-source-dirs:
app
ghc-options: -Wall -fwarn-tabs
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
base
, hledger-web

View File

@ -251,4 +251,4 @@ SEE ALSO
hledger-web 1.10.99 July 2018 hledger-web(1)
hledger-web 1.10.99 September 2018 hledger-web(1)

View File

@ -1,5 +1,5 @@
name: hledger-web
version: '1.10.99'
version: '1.11'
synopsis: Web interface for the hledger accounting tool
description: |
This is hledger's web interface.
@ -77,7 +77,7 @@ when:
library:
source-dirs: .
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
exposed-modules:
- Hledger.Web
- Hledger.Web.Application
@ -96,8 +96,8 @@ library:
- Hledger.Web.Widget.AddForm
- Hledger.Web.Widget.Common
dependencies:
- hledger-lib >=1.10.99 && <1.11
- hledger >=1.10.99 && <1.11
- hledger-lib >=1.11 && <1.12
- hledger >=1.11 && <1.12
- base >=4.8 && <4.12
- blaze-html
- blaze-markup
@ -143,7 +143,7 @@ executables:
hledger-web:
source-dirs: app
main: main.hs
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
dependencies:
- base
- hledger-web
@ -161,7 +161,7 @@ executables:
# test:
# source-dirs: tests
# main: main.hs
# cpp-options: -DVERSION="1.10.99"
# cpp-options: -DVERSION="1.11"
# dependencies:
# - base
# - hledger-web

View File

@ -1,6 +1,61 @@
User-visible changes in the hledger command line tool.
# 1.11 (2018/9/30)
* The default display order of accounts is now influenced by
the order of account directives. Accounts declared by account
directives are displayed first (top-most), in declaration order,
followed by undeclared accounts in alphabetical order. Numeric
account codes are no longer used, and are ignored and considered
deprecated.
So if your accounts are displaying in a weird order after upgrading,
and you want them alphabetical like before, just sort your account
directives alphabetically.
* Account sorting (by name, by declaration, by amount) is now more
robust and supported consistently by all commands (accounts,
balance, bs..) in all modes (tree & flat, tabular & non-tabular).
* close: new --opening/--closing flags to print only the opening or
closing transaction
* files: a new command to list included files
* prices: query arguments are now supported. Prices can be filtered by
date, and postings providing transaction prices can also be filtered.
* rewrite: help clarifies relation to print --auto (#745)
* roi: a new command to compute return on investment, based on hledger-irr
* test: has more verbose output, more informative failure messages,
and no longer tries to read the journal
* csv: We use a more robust CSV lib (cassava) and now support
non-comma separators, eg --separator ';' (experimental, this flag
will probably become a CSV rule) (#829)
* csv: interpolated field names in values are now properly case insensitive, so
this works:
fields ...,Transaction_Date,...
date %Transaction_Date
* journal: D (default commodity) directives no longer break multiplier
amounts in transaction modifiers (AKA automated postings) (#860)
* journal: "Automated Postings" have been renamed to "Transaction Modifiers".
* journal: transaction comments in transaction modifier rules are now parsed correctly. (#745)
* journal: when include files form a cycle, we give an error instead
of hanging.
* upper-case day/month names in period expressions no longer give an error (#847, #852)
# 1.10 (2018/6/30)
* journal: many parse error messages have become more informative, and

View File

@ -1,6 +1,6 @@
.\"t
.TH "hledger" "1" "July 2018" "hledger 1.10.99" "hledger User Manuals"
.TH "hledger" "1" "September 2018" "hledger 1.10.99" "hledger User Manuals"
@ -2246,6 +2246,11 @@ boundaries, or for closing out income/expenses for a period.
This was formerly called \[lq]equity\[rq], as in Ledger, and that alias
is also accepted.
See close \[en]help for more.
.SS files
.PP
List all files included in the journal.
With a REGEX argument, only file names matching the regular expression
(case sensitive) are shown.
.SS help
.PP
Show any of the hledger manuals.
@ -2769,6 +2774,11 @@ Helps ledger\-autosync detect already\-seen transactions when importing.
.SS rewrite
.PP
Print all transactions, adding custom postings to the matched ones.
.SS roi
.PP
Shows time\-weighted (TWR) and money\-weighted (IRR) rate of return on
your investments.
See \f[C]roi\ \-\-help\f[] for more.
.SS stats
.PP
Show some journal statistics.

View File

@ -2,10 +2,10 @@
--
-- see: https://github.com/sol/hpack
--
-- hash: eeed47cc18e00b190b0dd220f044f4f63c60442fa26ee301c44454b5f66e09ca
-- hash: a53ed723ef2c43c6425e4bf2d40ae7a37b9816dcdbd49795a7a7972b4b4ca203
name: hledger
version: 1.10.99
version: 1.11
synopsis: Command-line interface for the hledger accounting tool
description: This is hledger's command-line interface.
Its basic function is to read a plain text file describing
@ -111,7 +111,7 @@ library
other-modules:
Paths_hledger
ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
Decimal
, Diff
@ -129,7 +129,7 @@ library
, hashable >=1.2.4
, haskeline >=0.6
, here
, hledger-lib >=1.10.99 && <1.11
, hledger-lib >=1.11 && <1.12
, lucid
, megaparsec >=6.4.1
, mtl
@ -164,7 +164,7 @@ executable hledger
hs-source-dirs:
app
ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
Decimal
, ansi-terminal >=0.6.2.3
@ -181,7 +181,7 @@ executable hledger
, haskeline >=0.6
, here
, hledger
, hledger-lib >=1.10.99 && <1.11
, hledger-lib >=1.11 && <1.12
, megaparsec >=6.4.1
, mtl
, mtl-compat
@ -218,7 +218,7 @@ test-suite test
hs-source-dirs:
test
ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
build-depends:
Decimal
, ansi-terminal >=0.6.2.3
@ -235,7 +235,7 @@ test-suite test
, haskeline >=0.6
, here
, hledger
, hledger-lib >=1.10.99 && <1.11
, hledger-lib >=1.11 && <1.12
, megaparsec >=6.4.1
, mtl
, mtl-compat
@ -289,7 +289,7 @@ benchmark bench
, haskeline >=0.6
, here
, hledger
, hledger-lib >=1.10.99 && <1.11
, hledger-lib >=1.11 && <1.12
, html
, megaparsec >=6.4.1
, mtl

View File

@ -912,6 +912,7 @@ detailed command help.
* check-dates::
* check-dupes::
* close::
* files::
* help::
* import::
* incomestatement::
@ -921,6 +922,7 @@ detailed command help.
* register::
* register-match::
* rewrite::
* roi::
* stats::
* tags::
* test::
@ -1757,7 +1759,7 @@ Report account names having the same leaf but different prefixes. An
example: http://stefanorodighiero.net/software/hledger-dupes.html

File: hledger.info, Node: close, Next: help, Prev: check-dupes, Up: COMMANDS
File: hledger.info, Node: close, Next: files, Prev: check-dupes, Up: COMMANDS
4.10 close
==========
@ -1769,9 +1771,18 @@ a period. This was formerly called "equity", as in Ledger, and that
alias is also accepted. See close -help for more.

File: hledger.info, Node: help, Next: import, Prev: close, Up: COMMANDS
File: hledger.info, Node: files, Next: help, Prev: close, Up: COMMANDS
4.11 help
4.11 files
==========
List all files included in the journal. With a REGEX argument, only
file names matching the regular expression (case sensitive) are shown.

File: hledger.info, Node: help, Next: import, Prev: files, Up: COMMANDS
4.12 help
=========
Show any of the hledger manuals.
@ -1808,7 +1819,7 @@ DESCRIPTION

File: hledger.info, Node: import, Next: incomestatement, Prev: help, Up: COMMANDS
4.12 import
4.13 import
===========
Read new transactions added to each FILE since last run, and add them to
@ -1834,7 +1845,7 @@ $ hledger import --dry ... | hledger -f- print unknown --ignore-assertions

File: hledger.info, Node: incomestatement, Next: prices, Prev: import, Up: COMMANDS
4.13 incomestatement
4.14 incomestatement
====================
This command displays a simple income statement, showing revenues and
@ -1921,7 +1932,7 @@ selection.

File: hledger.info, Node: prices, Next: print, Prev: incomestatement, Up: COMMANDS
4.14 prices
4.15 prices
===========
Print market price directives from the journal. With -costs, also print
@ -1932,7 +1943,7 @@ Prices (and postings providing prices) can be filtered by a query.

File: hledger.info, Node: print, Next: print-unique, Prev: prices, Up: COMMANDS
4.15 print
4.16 print
==========
Show transactions from the journal. Aliases: p, txns.
@ -2049,7 +2060,7 @@ $ hledger print -Ocsv

File: hledger.info, Node: print-unique, Next: register, Prev: print, Up: COMMANDS
4.16 print-unique
4.17 print-unique
=================
Print transactions which do not reuse an already-seen description.
@ -2057,7 +2068,7 @@ Print transactions which do not reuse an already-seen description.

File: hledger.info, Node: register, Next: register-match, Prev: print-unique, Up: COMMANDS
4.17 register
4.18 register
=============
Show postings and their running total. Aliases: r, reg.
@ -2162,7 +2173,7 @@ length and comparable to the others in the report.

File: hledger.info, Node: Custom register output, Up: register
4.17.1 Custom register output
4.18.1 Custom register output
-----------------------------
register uses the full terminal width by default, except on windows.
@ -2193,7 +2204,7 @@ selection.

File: hledger.info, Node: register-match, Next: rewrite, Prev: register, Up: COMMANDS
4.18 register-match
4.19 register-match
===================
Print the one posting whose transaction description is closest to DESC,
@ -2201,17 +2212,26 @@ in the style of the register command. Helps ledger-autosync detect
already-seen transactions when importing.

File: hledger.info, Node: rewrite, Next: stats, Prev: register-match, Up: COMMANDS
File: hledger.info, Node: rewrite, Next: roi, Prev: register-match, Up: COMMANDS
4.19 rewrite
4.20 rewrite
============
Print all transactions, adding custom postings to the matched ones.

File: hledger.info, Node: stats, Next: tags, Prev: rewrite, Up: COMMANDS
File: hledger.info, Node: roi, Next: stats, Prev: rewrite, Up: COMMANDS
4.20 stats
4.21 roi
========
Shows time-weighted (TWR) and money-weighted (IRR) rate of return on
your investments. See 'roi --help' for more.

File: hledger.info, Node: stats, Next: tags, Prev: roi, Up: COMMANDS
4.22 stats
==========
Show some journal statistics.
@ -2243,7 +2263,7 @@ selection.

File: hledger.info, Node: tags, Next: test, Prev: stats, Up: COMMANDS
4.21 tags
4.23 tags
=========
List all the tag names used in the journal. With a TAGREGEX argument,
@ -2254,7 +2274,7 @@ query are considered.

File: hledger.info, Node: test, Prev: tags, Up: COMMANDS
4.22 test
4.24 test
=========
Run built-in unit tests.
@ -2491,94 +2511,98 @@ Node: QUERIES26089
Ref: #queries26191
Node: COMMANDS30153
Ref: #commands30265
Node: accounts31247
Ref: #accounts31345
Node: activity32591
Ref: #activity32701
Node: add33061
Ref: #add33160
Node: balance35821
Ref: #balance35932
Node: Classic balance report39015
Ref: #classic-balance-report39188
Node: Customising the classic balance report40557
Ref: #customising-the-classic-balance-report40785
Node: Colour support42859
Ref: #colour-support43026
Node: Flat mode43199
Ref: #flat-mode43347
Node: Depth limited balance reports43760
Ref: #depth-limited-balance-reports43960
Node: Multicolumn balance report44416
Ref: #multicolumn-balance-report44614
Node: Budget report49794
Ref: #budget-report49937
Ref: #output-format-152971
Node: balancesheet53049
Ref: #balancesheet53185
Node: balancesheetequity55496
Ref: #balancesheetequity55645
Node: cashflow56182
Ref: #cashflow56310
Node: check-dates58433
Ref: #check-dates58560
Node: check-dupes58677
Ref: #check-dupes58801
Node: close58938
Ref: #close59045
Node: help59375
Ref: #help59475
Node: import60549
Ref: #import60663
Node: incomestatement61393
Ref: #incomestatement61527
Node: prices63931
Ref: #prices64046
Node: print64318
Ref: #print64428
Node: print-unique69322
Ref: #print-unique69448
Node: register69516
Ref: #register69643
Node: Custom register output74144
Ref: #custom-register-output74273
Node: register-match75503
Ref: #register-match75637
Node: rewrite75820
Ref: #rewrite75937
Node: stats76006
Ref: #stats76109
Node: tags76979
Ref: #tags77077
Node: test77313
Ref: #test77397
Node: ADD-ON COMMANDS78105
Ref: #add-on-commands78215
Node: Official add-ons79502
Ref: #official-add-ons79642
Node: api79729
Ref: #api79818
Node: ui79870
Ref: #ui79969
Node: web80027
Ref: #web80116
Node: Third party add-ons80162
Ref: #third-party-add-ons80337
Node: diff80472
Ref: #diff80569
Node: iadd80668
Ref: #iadd80782
Node: interest80865
Ref: #interest80986
Node: irr81081
Ref: #irr81179
Node: Experimental add-ons81257
Ref: #experimental-add-ons81409
Node: autosync81689
Ref: #autosync81800
Node: chart82039
Ref: #chart82158
Node: check82229
Ref: #check82331
Node: accounts31265
Ref: #accounts31363
Node: activity32609
Ref: #activity32719
Node: add33079
Ref: #add33178
Node: balance35839
Ref: #balance35950
Node: Classic balance report39033
Ref: #classic-balance-report39206
Node: Customising the classic balance report40575
Ref: #customising-the-classic-balance-report40803
Node: Colour support42877
Ref: #colour-support43044
Node: Flat mode43217
Ref: #flat-mode43365
Node: Depth limited balance reports43778
Ref: #depth-limited-balance-reports43978
Node: Multicolumn balance report44434
Ref: #multicolumn-balance-report44632
Node: Budget report49812
Ref: #budget-report49955
Ref: #output-format-152989
Node: balancesheet53067
Ref: #balancesheet53203
Node: balancesheetequity55514
Ref: #balancesheetequity55663
Node: cashflow56200
Ref: #cashflow56328
Node: check-dates58451
Ref: #check-dates58578
Node: check-dupes58695
Ref: #check-dupes58819
Node: close58956
Ref: #close59064
Node: files59394
Ref: #files59495
Node: help59636
Ref: #help59736
Node: import60810
Ref: #import60924
Node: incomestatement61654
Ref: #incomestatement61788
Node: prices64192
Ref: #prices64307
Node: print64579
Ref: #print64689
Node: print-unique69583
Ref: #print-unique69709
Node: register69777
Ref: #register69904
Node: Custom register output74405
Ref: #custom-register-output74534
Node: register-match75764
Ref: #register-match75898
Node: rewrite76081
Ref: #rewrite76196
Node: roi76265
Ref: #roi76363
Node: stats76479
Ref: #stats76578
Node: tags77448
Ref: #tags77546
Node: test77782
Ref: #test77866
Node: ADD-ON COMMANDS78574
Ref: #add-on-commands78684
Node: Official add-ons79971
Ref: #official-add-ons80111
Node: api80198
Ref: #api80287
Node: ui80339
Ref: #ui80438
Node: web80496
Ref: #web80585
Node: Third party add-ons80631
Ref: #third-party-add-ons80806
Node: diff80941
Ref: #diff81038
Node: iadd81137
Ref: #iadd81251
Node: interest81334
Ref: #interest81455
Node: irr81550
Ref: #irr81648
Node: Experimental add-ons81726
Ref: #experimental-add-ons81878
Node: autosync82158
Ref: #autosync82269
Node: chart82508
Ref: #chart82627
Node: check82698
Ref: #check82800

End Tag Table

View File

@ -1596,6 +1596,10 @@ COMMANDS
a period. This was formerly called "equity", as in Ledger, and that
alias is also accepted. See close -help for more.
files
List all files included in the journal. With a REGEX argument, only
file names matching the regular expression (case sensitive) are shown.
help
Show any of the hledger manuals.
@ -1978,11 +1982,15 @@ COMMANDS
rewrite
Print all transactions, adding custom postings to the matched ones.
roi
Shows time-weighted (TWR) and money-weighted (IRR) rate of return on
your investments. See roi --help for more.
stats
Show some journal statistics.
-o FILE --output-file=FILE
write output to FILE. A file extension matching one of the
write output to FILE. A file extension matching one of the
above formats selects that format.
$ hledger stats
@ -1997,61 +2005,61 @@ COMMANDS
Accounts : 8 (depth 3)
Commodities : 1 ($)
The stats command displays summary information for the whole journal,
or a matched part of it. With a reporting interval, it shows a report
The stats command displays summary information for the whole journal,
or a matched part of it. With a reporting interval, it shows a report
for each report period.
This command also supports output destination and output format selec-
This command also supports output destination and output format selec-
tion.
tags
List all the tag names used in the journal. With a TAGREGEX argument,
only tag names matching the regular expression (case insensitive) are
List all the tag names used in the journal. With a TAGREGEX argument,
only tag names matching the regular expression (case insensitive) are
shown. With additional QUERY arguments, only transactions matching the
query are considered.
test
Run built-in unit tests.
Prints test names and their results on stdout. If any test fails or
Prints test names and their results on stdout. If any test fails or
gives an error, the exit code will be non-zero.
Test names include a group prefix. If a (exact, case sensitive) group
prefix, or a full test name is provided as the first argument, only
Test names include a group prefix. If a (exact, case sensitive) group
prefix, or a full test name is provided as the first argument, only
that group or test is run.
If a numeric second argument is provided, it will set the randomness
seed, for repeatable results from tests using randomness (currently
If a numeric second argument is provided, it will set the randomness
seed, for repeatable results from tests using randomness (currently
none of them).
This is mainly used by developers, but it's nice to be able to san-
This is mainly used by developers, but it's nice to be able to san-
ity-check your installed hledger executable at any time. All tests are
expected to pass - if you ever see otherwise, something has gone wrong,
please report a bug!
ADD-ON COMMANDS
hledger also searches for external add-on commands, and will include
hledger also searches for external add-on commands, and will include
these in the commands list. These are programs or scripts in your PATH
whose name starts with hledger- and ends with a recognised file exten-
whose name starts with hledger- and ends with a recognised file exten-
sion (currently: no extension, bat,com,exe, hs,lhs,pl,py,rb,rkt,sh).
Add-ons can be invoked like any hledger command, but there are a few
Add-ons can be invoked like any hledger command, but there are a few
things to be aware of. Eg if the hledger-web add-on is installed,
o hledger -h web shows hledger's help, while hledger web -h shows
hledger-web's help.
o Flags specific to the add-on must have a preceding -- to hide them
from hledger. So hledger web --serve --port 9000 will be rejected;
o Flags specific to the add-on must have a preceding -- to hide them
from hledger. So hledger web --serve --port 9000 will be rejected;
you must use hledger web -- --serve --port 9000.
o You can always run add-ons directly if preferred:
o You can always run add-ons directly if preferred:
hledger-web --serve --port 9000.
Add-ons are a relatively easy way to add local features or experiment
with new ideas. They can be written in any language, but haskell
scripts have a big advantage: they can use the same hledger (and
haskell) library functions that built-in commands do, for command-line
Add-ons are a relatively easy way to add local features or experiment
with new ideas. They can be written in any language, but haskell
scripts have a big advantage: they can use the same hledger (and
haskell) library functions that built-in commands do, for command-line
options, journal parsing, reporting, etc.
Here are some hledger add-ons available:
@ -2069,7 +2077,7 @@ ADD-ON COMMANDS
hledger-web provides a simple web interface.
Third party add-ons
These are maintained separately, and usually updated shortly after a
These are maintained separately, and usually updated shortly after a
hledger release.
diff
@ -2077,7 +2085,7 @@ ADD-ON COMMANDS
journal file and another.
iadd
hledger-iadd is a curses-style, more interactive replacement for the
hledger-iadd is a curses-style, more interactive replacement for the
add command.
interest
@ -2085,19 +2093,19 @@ ADD-ON COMMANDS
ing to various schemes.
irr
hledger-irr calculates the internal rate of return of an investment
hledger-irr calculates the internal rate of return of an investment
account.
Experimental add-ons
These are available in source form in the hledger repo's bin/ direc-
These are available in source form in the hledger repo's bin/ direc-
tory; installing them is pretty easy. They may be less mature and doc-
umented than built-in commands. Reading and tweaking these is a good
umented than built-in commands. Reading and tweaking these is a good
way to start making your own!
autosync
hledger-autosync is a symbolic link for easily running ledger-autosync,
if installed. ledger-autosync does deduplicating conversion of OFX
data and some CSV formats, and can also download the data if your bank
if installed. ledger-autosync does deduplicating conversion of OFX
data and some CSV formats, and can also download the data if your bank
offers OFX Direct Connect.
chart
@ -2107,21 +2115,21 @@ ADD-ON COMMANDS
hledger-check.hs checks more powerful account balance assertions.
ENVIRONMENT
COLUMNS The screen width used by the register command. Default: the
COLUMNS The screen width used by the register command. Default: the
full terminal width.
LEDGER_FILE The journal file path when not specified with -f. Default:
~/.hledger.journal (on windows, perhaps C:/Users/USER/.hledger.jour-
~/.hledger.journal (on windows, perhaps C:/Users/USER/.hledger.jour-
nal).
FILES
Reads data from one or more files in hledger journal, timeclock, time-
dot, or CSV format specified with -f, or $LEDGER_FILE, or
$HOME/.hledger.journal (on windows, perhaps
Reads data from one or more files in hledger journal, timeclock, time-
dot, or CSV format specified with -f, or $LEDGER_FILE, or
$HOME/.hledger.journal (on windows, perhaps
C:/Users/USER/.hledger.journal).
BUGS
The need to precede addon command options with -- when invoked from
The need to precede addon command options with -- when invoked from
hledger is awkward.
When input data contains non-ascii characters, a suitable system locale
@ -2134,33 +2142,33 @@ BUGS
In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger
add.
Not all of Ledger's journal file syntax is supported. See file format
Not all of Ledger's journal file syntax is supported. See file format
differences.
On large data files, hledger is slower and uses more memory than
On large data files, hledger is slower and uses more memory than
Ledger.
TROUBLESHOOTING
Here are some issues you might encounter when you run hledger (and
remember you can also seek help from the IRC channel, mail list or bug
Here are some issues you might encounter when you run hledger (and
remember you can also seek help from the IRC channel, mail list or bug
tracker):
Successfully installed, but "No command `hledger' found"
stack and cabal install binaries into a special directory, which should
be added to your PATH environment variable. Eg on unix-like systems,
be added to your PATH environment variable. Eg on unix-like systems,
that is ~/.local/bin and ~/.cabal/bin respectively.
I set a custom LEDGER_FILE, but hledger is still using the default file
LEDGER_FILE should be a real environment variable, not just a shell
variable. The command env | grep LEDGER_FILE should show it. You may
LEDGER_FILE should be a real environment variable, not just a shell
variable. The command env | grep LEDGER_FILE should show it. You may
need to use export. Here's an explanation.
"Illegal byte sequence" or "Invalid or incomplete multibyte or wide
"Illegal byte sequence" or "Invalid or incomplete multibyte or wide
character" errors
In order to handle non-ascii letters and symbols (like ), hledger needs
an appropriate locale. This is usually configured system-wide; you can
also configure it temporarily. The locale may need to be one that sup-
ports UTF-8, if you built hledger with GHC < 7.2 (or possibly always,
ports UTF-8, if you built hledger with GHC < 7.2 (or possibly always,
I'm not sure yet).
Here's an example of setting the locale temporarily, on ubuntu
@ -2179,7 +2187,7 @@ TROUBLESHOOTING
$ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
$ bash --login
If we preferred to use eg fr_FR.utf8, we might have to install that
If we preferred to use eg fr_FR.utf8, we might have to install that
first:
$ apt-get install language-pack-fr
@ -2200,7 +2208,7 @@ TROUBLESHOOTING
REPORTING BUGS
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
or hledger mail list)
@ -2214,7 +2222,7 @@ COPYRIGHT
SEE ALSO
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
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)
@ -2222,4 +2230,4 @@ SEE ALSO
hledger 1.10.99 July 2018 hledger(1)
hledger 1.10.99 September 2018 hledger(1)

View File

@ -1,5 +1,5 @@
name: hledger
version: '1.10.99'
version: '1.11'
synopsis: Command-line interface for the hledger accounting tool
description: |
This is hledger's command-line interface.
@ -78,7 +78,7 @@ ghc-options:
- -optP-Wno-nonportable-include-path
dependencies:
- hledger-lib >=1.10.99 && <1.11
- hledger-lib >=1.11 && <1.12
- ansi-terminal >=0.6.2.3
- base >=4.8 && <4.12
- base-compat-batteries >=0.10.1 && <0.11
@ -121,7 +121,7 @@ when:
- terminfo
library:
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
exposed-modules:
- Hledger.Cli
- Hledger.Cli.Main
@ -163,7 +163,7 @@ executables:
hledger:
source-dirs: app
main: hledger-cli.hs
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
when:
- condition: flag(threaded)
ghc-options: -threaded
@ -174,7 +174,7 @@ tests:
test:
source-dirs: test
main: test.hs
cpp-options: -DVERSION="1.10.99"
cpp-options: -DVERSION="1.11"
dependencies:
- hledger
- test-framework

0
site/doc/1.11/.snapshot Normal file
View File

274
site/doc/1.11/csv.md Normal file
View File

@ -0,0 +1,274 @@
# csv format
This doc is for version **1.10.99** (dev). []{.docversions}
\$toc\$
## NAME
CSV - how hledger reads CSV data, and the CSV rules file format
## DESCRIPTION
hledger can read
[CSV](http://en.wikipedia.org/wiki/Comma-separated_values)
(comma-separated value) files as if they were journal files,
automatically converting each CSV record into a transaction. (To learn
about *writing* CSV, see [CSV output](hledger.html#csv-output).)
Converting CSV to transactions requires some special conversion rules.
These do several things:
- they describe the layout and format of the CSV data
- they can customize the generated journal entries using a simple
templating language
- they can add refinements based on patterns in the CSV data, eg
categorizing transactions with more detailed account names.
When reading a CSV file named `FILE.csv`, hledger looks for a conversion
rules file named `FILE.csv.rules` in the same directory. You can
override this with the `--rules-file` option. If the rules file does not
exist, hledger will auto-create one with some example rules, which
you'll need to adjust.
At minimum, the rules file must identify the `date` and `amount` fields.
It may also be necessary to specify the date format, and the number of
header lines to skip. Eg:
fields date, _, _, amount
date-format %d/%m/%Y
skip 1
A more complete example:
# hledger CSV rules for amazon.com order history
# sample:
# "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID"
# "Jul 29, 2012","Payment","To","Adapteva, Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL"
# skip one header line
skip 1
# name the csv fields (and assign the transaction's date, amount and code)
fields date, _, toorfrom, name, amzstatus, amount, fees, code
# how to parse the date
date-format %b %-d, %Y
# combine two fields to make the description
description %toorfrom %name
# save these fields as tags
comment status:%amzstatus, fees:%fees
# set the base account for all transactions
account1 assets:amazon
# flip the sign on the amount
amount -%amount
For more examples, see [Convert CSV
files](https://github.com/simonmichael/hledger/wiki/Convert-CSV-files).
## CSV RULES
The following seven kinds of rule can appear in the rules file, in any
order. Blank lines and lines beginning with `#` or `;` are ignored.
### skip
`skip`*`N`*
Skip this number of CSV records at the beginning. You'll need this
whenever your CSV data contains header lines. Eg: <!-- XXX -->
<!-- hledger tries to skip initial CSV header lines automatically. -->
<!-- If it guesses wrong, use this directive to skip exactly N lines. -->
<!-- This can also be used in a conditional block to ignore certain CSV records. -->
``` {.rules}
# ignore the first CSV line
skip 1
```
### date-format
`date-format`*`DATEFMT`*
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](http://hackage.haskell.org/packages/archive/time/latest/doc/html/Data-Time-Format.html#v:formatTime),
which must parse the date field values completely. Examples:
``` {.rules .display-table}
# for dates like "6/11/2013":
date-format %-d/%-m/%Y
```
``` {.rules .display-table}
# for dates like "11/06/2013":
date-format %m/%d/%Y
```
``` {.rules .display-table}
# for dates like "2013-Nov-06":
date-format %Y-%h-%d
```
``` {.rules .display-table}
# for dates like "11/6/2013 11:32 PM":
date-format %-m/%-d/%Y %l:%M %p
```
### field list
`fields`*`FIELDNAME1`*, *`FIELDNAME2`*...
This (a) names the CSV fields, in order (names may not contain
whitespace; uninteresting names may be left blank), and (b) assigns them
to journal entry fields if you use any of these standard field names:
`date`, `date2`, `status`, `code`, `description`, `comment`, `account1`,
`account2`, `amount`, `amount-in`, `amount-out`, `currency`, `balance`.
Eg:
``` {.rules}
# 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
```
### field assignment
*`ENTRYFIELDNAME`* *`FIELDVALUE`*
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`).
<!-- Whitespace before or after the value is ignored. --> Eg:
``` {.rules .display-table}
# set the amount to the 4th CSV field with "USD " prepended
amount USD %4
```
``` {.rules .display-table}
# 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.
### conditional block
`if` *`PATTERN`*\
    *`FIELDASSIGNMENTS`*...
`if`\
*`PATTERN`*\
*`PATTERN`*...\
    *`FIELDASSIGNMENTS`*...
This applies one or more field assignments, only to those CSV records
matched by one of the PATTERNs. The patterns are case-insensitive
regular 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 can be written on separate lines, unindented. The
field assignments are on separate lines indented by at least one space.
Examples:
``` {.rules .display-table}
# if the CSV record contains "groceries", set account2 to "expenses:groceries"
if groceries
account2 expenses:groceries
```
``` {.rules .display-table}
# 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
```
### include
`include`*`RULESFILE`*
Include another rules file at this point. `RULESFILE` is either an
absolute file path or a path relative to the current file's directory.
Eg:
``` {.rules}
# rules reused with several CSV files
include common.rules
```
### newest-first
`newest-first`
Consider adding this rule if all of the following are true: you might be
processing just one day of data, your CSV records are in reverse
chronological order (newest first), and you care about preserving the
order of same-day transactions. It usually isn't needed, because hledger
autodetects the CSV order, but when all CSV records have the same date
it will assume they are oldest first.
## CSV TIPS
### CSV ordering
The generated [journal entries](/journal.html#transactions) will be
sorted by date. The order of same-day entries will be preserved (except
in the special case where you might need
[`newest-first`](#newest-first), see above).
### CSV accounts
Each journal entry will have two [postings](/journal.html#postings), to
`account1` and `account2` respectively. It's not yet possible to
generate entries with more than two postings. It's conventional and
recommended to use `account1` for the account whose CSV we are reading.
### CSV amounts
The `amount` field sets the [amount](/journal.html#amounts) of the
`account1` posting.
If the CSV has debit/credit amounts in separate fields, assign to the
`amount-in` and `amount-out` pseudo fields instead. (Whichever one has a
value will be used, with appropriate sign. If both contain a value, it
may not work so well.)
If an amount value is parenthesised, it will be de-parenthesised and
sign-flipped.
If an amount value begins with a double minus sign, those will cancel
out and be removed.
If the CSV has the currency symbol in a separate field, assign that to
the `currency` pseudo field to have it prepended to the amount. Or, you
can use a [field assignment](#field-assignment) to `amount` that
interpolates both CSV fields (giving more control, eg to put the
currency symbol on the right).
### CSV balance assertions
If the CSV includes a running balance, you can assign that to the
`balance` pseudo field; whenever the running balance value is non-empty,
it will be [asserted](/journal.html#balance-assertions) as the balance
after the `account1` posting.
### Reading multiple CSV files
You can read multiple CSV files at once using multiple `-f` arguments on
the command line, and hledger will look for a correspondingly-named
rules file for each. Note if you use the `--rules-file` option, this one
rules file will be used for all the CSV files being read.

View File

@ -0,0 +1,102 @@
# hledger-api
This doc is for version **1.10.99** (dev). []{.docversions}
\$toc\$
## NAME
hledger-api - web API server for the hledger accounting tool
## SYNOPSIS
`hledger-api [OPTIONS]`\
`hledger api -- [OPTIONS]`
## DESCRIPTION
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 its evolution.
Like hledger, it reads data from one or more files in hledger journal,
timeclock, timedot, or CSV format specified with `-f`, or
`$LEDGER_FILE`, or `$HOME/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`). For more about this see hledger(1),
hledger\_journal(5) etc.
The server listens on IP address 127.0.0.1, accessible only to local
requests, by default. You can change this with `--host`, eg
`--host 0.0.0.0` to listen on all addresses. Note there is no other
access control, and hledger-api allows file browsing, so on shared
machines you will certainly need to put it behind an authenticating
proxy to restrict access.
You can change the TCP port it listens on (default: 8001) with
`-p PORT`.
API methods look like:
/api/v1/accountnames
/api/v1/transactions
/api/v1/prices
/api/v1/commodities
/api/v1/accounts
/api/v1/accounts/ACCTNAME
See `/api/swagger.json` for a full list in Swagger 2.0 format. (Or you
can run `hledger-api --swagger` to print this in the console.)
hledger-api also serves files, from the current directory by default,
and the `/` path will also show a directory listing. This is convenient
for serving client-side web code, in addition to the server-side api.
## OPTIONS
Note: if invoking hledger-api as a hledger subcommand, write `--` before
options as shown above.
`-f --file=FILE`
: use a different input file. For stdin, use - (default:
`$LEDGER_FILE` or `$HOME/.hledger.journal`)
`-d --static-dir=DIR`
: serve files from a different directory (default: `.`)
`--host=IPADDR`
: listen on this IP address (default: 127.0.0.1)
`-p --port=PORT`
: listen on this TCP port (default: 8001)
`--swagger`
: print API docs in Swagger 2.0 format, and exit
`--version`
: show version
`-h --help`
: show usage
## ENVIRONMENT
**LEDGER\_FILE** The journal file path when not specified with `-f`.
Default: `~/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`).
## FILES
Reads data from one or more files in hledger journal, timeclock,
timedot, or CSV format specified with `-f`, or `$LEDGER_FILE`, or
`$HOME/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`).
## BUGS
The need to precede options with `--` when invoked from hledger is
awkward.

412
site/doc/1.11/hledger-ui.md Normal file
View File

@ -0,0 +1,412 @@
# hledger-ui
This doc is for version **1.10.99** (dev). []{.docversions}
\$toc\$
## NAME
hledger-ui - curses-style interface for the hledger accounting tool
## SYNOPSIS
`hledger-ui [OPTIONS] [QUERYARGS]`\
`hledger ui -- [OPTIONS] [QUERYARGS]`
## DESCRIPTION
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).
<style>
.highslide img {max-width:200px; border:0;}
.highslide-caption {color:white; background-color:black;}
</style>
<div style="float:right; max-width:200px; text-align:right;">
<a href="images/hledger-ui/hledger-ui-sample-acc2.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc2.png" title="Accounts screen with query and depth limit" /></a>
<a href="images/hledger-ui/hledger-ui-sample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc.png" title="Accounts screen" /></a>
<a href="images/hledger-ui/hledger-ui-sample-acc-greenterm.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc-greenterm.png" title="Accounts screen with greenterm theme" /></a>
<a href="images/hledger-ui/hledger-ui-sample-txn.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-txn.png" title="Transaction screen" /></a>
<a href="images/hledger-ui/hledger-ui-sample-reg.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-reg.png" title="Register screen" /></a>
<!-- <br clear=all> -->
<a href="images/hledger-ui/hledger-ui-bcexample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc.png" title="beancount example accounts" /></a>
<a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade-cash.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade-cash.png" title="beancount example's etrade cash subaccount" /></a>
<a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" title="beancount example's etrade investments, all commoditiess" /></a>
</div>
hledger-ui is hledger's curses-style interface, providing an efficient
full-window text UI for viewing accounts and transactions, and some
limited data entry capability. It is easier than hledger's command-line
interface, and sometimes quicker and more convenient than the web
interface.
Like hledger, it reads data from one or more files in hledger journal,
timeclock, timedot, or CSV format specified with `-f`, or
`$LEDGER_FILE`, or `$HOME/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`). For more about this see hledger(1),
hledger\_journal(5) etc.
## OPTIONS
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.
`--watch`
: watch for data and date changes and reload automatically
`--theme=default|terminal|greenterm`
: use this custom display theme
`--register=ACCTREGEX`
: start in the (first) matched account's register screen
`--change`
: show period balances (changes) at startup instead of historical
balances
`--flat`
: show full account names, unindented
hledger input options:
`-f FILE --file=FILE`
: use a different input file. For stdin, use - (default:
`$LEDGER_FILE` or `$HOME/.hledger.journal`)
`--rules-file=RULESFILE`
: Conversion rules file to use when reading CSV (default: FILE.rules)
`--separator=CHAR`
: Field separator to expect when reading CSV (default: ',')
`--alias=OLD=NEW`
: rename accounts named OLD to NEW
`--anon`
: anonymize accounts and payees
`--pivot FIELDNAME`
: use some other field or tag for the account name
`-I --ignore-assertions`
: ignore any failing balance assertions
hledger reporting options:
`-b --begin=DATE`
: include postings/txns on or after this date
`-e --end=DATE`
: include postings/txns before this date
`-D --daily`
: multiperiod/multicolumn report by day
`-W --weekly`
: multiperiod/multicolumn report by week
`-M --monthly`
: multiperiod/multicolumn report by month
`-Q --quarterly`
: multiperiod/multicolumn report by quarter
`-Y --yearly`
: multiperiod/multicolumn report by year
`-p --period=PERIODEXP`
: set start date, end date, and/or reporting interval all at once
using [period expressions](manual.html#period-expressions) syntax
(overrides the flags above)
`--date2`
: match the secondary date instead (see command help for other
effects)
`-U --unmarked`
: include only unmarked postings/txns (can combine with -P or -C)
`-P --pending`
: include only pending postings/txns
`-C --cleared`
: include only cleared postings/txns
`-R --real`
: include only non-virtual postings
`-NUM --depth=NUM`
: hide/aggregate accounts or postings more than NUM levels deep
`-E --empty`
: show items with zero amount, normally hidden (and vice-versa in
hledger-ui/hledger-web)
`-B --cost`
: convert amounts to their cost at transaction time (using the
[transaction price](journal.html#transaction-prices), if any)
`-V --value`
: convert amounts to their market value on the report end date (using
the most recent applicable [market
price](journal.html#market-prices), if any)
`--auto`
: apply [automated posting
rules](journal.html#automated-posting-rules) to modify transactions.
`--forecast`
: apply [periodic transaction](journal.html#periodic-transactions)
rules to generate future transactions, to 6 months from now or
report end date.
When a reporting option appears more than once in the command line, the
last one takes precedence.
Some reporting options can also be written as [query
arguments](#queries).
hledger help options:
`-h --help`
: show general usage (or after COMMAND, command usage)
`--version`
: show version
`--debug[=N]`
: show debug output (levels 1-9, default: 1)
A @FILE argument will be expanded to the contents of FILE, which should
contain one command line option/argument per line. (To prevent this,
insert a `--` argument before.)
## KEYS
`?` shows a help dialog listing all keys. (Some of these also appear in
the quick help at the bottom of each screen.) Press `?` again (or
`ESCAPE`, or `LEFT`) to close it. The following keys work on most
screens:
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. Vi-style (`h`/`j`/`k`/`l`) and Emacs-style
(`CTRL-p`/`CTRL-n`/`CTRL-f`/`CTRL-b`) movement keys are also supported.
A tip: movement speed is limited by your keyboard repeat rate, to move
faster you may want to adjust it. (If you're on a mac, the Karabiner app
is one way to do that.)
With shift pressed, the cursor keys adjust the report period, limiting
the transactions to be shown (by default, all are shown).
`shift-down/up` steps downward and upward through these standard report
period durations: year, quarter, month, week, day. Then,
`shift-left/right` moves to the previous/next period. `t` sets the
report period to today. With the `--watch` option, when viewing a
"current" period (the current day, week, month, quarter, or year), the
period will move automatically to track the current date. To set a
non-standard period, you can use `/` and a `date:` query.
`/` lets you set a general filter query limiting the data shown, using
the same [query terms](/hledger.html#queries) as in hledger and
hledger-web. While editing the query, you can use [CTRL-a/e/d/k, BS,
cursor
keys](http://hackage.haskell.org/package/brick-0.7/docs/Brick-Widgets-Edit.html#t:Editor);
press `ENTER` to set it, or `ESCAPE`to cancel. There are also keys for
quickly adjusting some common filters like account depth and transaction
status (see below). `BACKSPACE` or `DELETE` removes all filters, showing
all transactions.
`ESCAPE` removes all filters and jumps back to the top screen. Or, it
cancels a minibuffer edit or help dialog in progress.
`CTRL-l` redraws the screen and centers the selection if possible
(selections near the top won't be centered, since we don't scroll above
the top).
`g` reloads from the data file(s) and updates the current screen and any
previous screens. (With large files, this could cause a noticeable
pause.)
`I` toggles balance assertion checking. Disabling balance assertions
temporarily can be useful for troubleshooting.
`a` runs command-line hledger's add command, and reloads the updated
file. This allows some basic data entry.
`A` is like `a`, but runs the
[hledger-iadd](http://hackage.haskell.org/package/hledger-iadd) tool,
which provides a curses-style interface. This key will be available if
`hledger-iadd` is installed in \$PATH.
`E` runs \$HLEDGER\_UI\_EDITOR, or \$EDITOR, or a default
(`emacsclient -a "" -nw`) on the journal file. With some editors (emacs,
vi), the cursor will be positioned at the current transaction when
invoked from the register and transaction screens, and at the error
location (if possible) when invoked from the error screen.
`q` quits the application.
Additional screen-specific keys are described below.
## SCREENS
### Accounts screen
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 (including the balances of
subaccounts). if you specify a query on the command line, it shows just
the matched accounts and the balances from matched transactions.
Account names are normally indented to show the hierarchy (tree mode).
To see less detail, set a depth limit by pressing a number key, `1` to
`9`. `0` shows even less detail, collapsing all accounts to a single
total. `-` and `+` (or `=`) decrease and increase the depth limit. To
remove the depth limit, set it higher than the maximum account depth, or
press `ESCAPE`.
`F` toggles flat mode, in which accounts are shown as a flat list, with
their full names. In this mode, account balances exclude subaccounts,
except for accounts at the depth limit (as with hledger's balance
command).
`H` toggles between showing historical balances or period balances.
Historical balances (the default) are ending balances at the end of the
report period, taking into account all transactions before that date
(filtered by the filter query if any), including transactions before the
start of the report period. In other words, historical balances are what
you would see on a bank statement for that account (unless disturbed by
a filter query). Period balances ignore transactions before the report
start date, so they show the change in balance during the report period.
They are more useful eg when viewing a time log.
`U` toggles filtering by [unmarked status](/journal.html#status),
including or excluding unmarked postings in the balances. Similarly, `P`
toggles pending postings, and `C` toggles cleared postings. (By default,
balances include all postings; if you activate one or two status
filters, only those postings are included; and if you activate all
three, the filter is removed.)
`R` toggles real mode, in which [virtual
postings](/journal.html#virtual-postings) are ignored.
`Z` toggles nonzero mode, in which only accounts with nonzero balances
are shown (hledger-ui shows zero items by default, unlike command-line
hledger).
Press `right` or `enter` to view an account's transactions register.
### Register screen
This screen shows the transactions affecting a particular account, like
a check register. Each line represents one transaction and 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.)
- the overall change to the current account's balance; positive for an
inflow to this account, negative for an outflow.
- the running historical total or period total for the current
account, after the transaction. This can be toggled with `H`.
Similar to the accounts screen, the historical total is affected by
transactions (filtered by the filter query) before the report start
date, while the period total is not. If the historical total is not
disturbed by a filter query, it will be the running historical
balance you would see on a bank register for the current account.
If the accounts screen was in tree mode, the register screen will
include transactions from both the current account and its subaccounts.
If the accounts screen was in flat mode, and a non-depth-clipped account
was selected, the register screen will exclude transactions from
subaccounts. In other words, the register always shows the transactions
responsible for the period balance shown on the accounts screen. As on
the accounts screen, this can be toggled with `F`.
`U` toggles filtering by [unmarked status](/journal.html#status),
showing or hiding unmarked transactions. Similarly, `P` toggles pending
transactions, and `C` toggles cleared transactions. (By default,
transactions with all statuses are shown; if you activate one or two
status filters, only those transactions are shown; and if you activate
all three, the filter is removed.)q
`R` toggles real mode, in which [virtual
postings](/journal.html#virtual-postings) are ignored.
`Z` toggles nonzero mode, in which only transactions posting a nonzero
change are shown (hledger-ui shows zero items by default, unlike
command-line hledger).
Press `right` (or `enter`) to view the selected transaction in detail.
### Transaction screen
This screen shows a single transaction, as a general journal entry,
similar to hledger's print command and journal format
(hledger\_journal(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
transactions appear in multiple account registers). The \#N number
preceding them is the transaction's position within the complete
unfiltered journal, which is a more stable id (at least until the next
reload).
### Error screen
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, press g
again to reload and resume normal operation. (Or, you can press escape
to cancel the reload attempt.)
## ENVIRONMENT
**COLUMNS** The screen width to use. Default: the full terminal width.
**LEDGER\_FILE** The journal file path when not specified with `-f`.
Default: `~/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`).
## FILES
Reads data from one or more files in hledger journal, timeclock,
timedot, or CSV format specified with `-f`, or `$LEDGER_FILE`, or
`$HOME/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`).
## BUGS
The need to precede options with `--` when invoked from hledger is
awkward.
`-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 with large files. Also
there is no visual indication that this is in progress.
`--watch` is not yet fully robust. It works well for normal usage, but
many file changes in a short time (eg saving the file thousands of times
with an editor macro) can cause problems at least on OSX. Symptoms
include: unresponsive UI, periodic resetting of the cursor position,
momentary display of parse errors, high CPU usage eventually subsiding,
and possibly a small but persistent build-up of CPU usage until the
program is restarted.

View File

@ -0,0 +1,253 @@
# hledger-web
This doc is for version **1.10.99** (dev). []{.docversions}
\$toc\$
## NAME
hledger-web - web interface for the hledger accounting tool
## SYNOPSIS
`hledger-web [OPTIONS]`\
`hledger web -- [OPTIONS]`
## DESCRIPTION
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).
<style>
.highslide img {max-width:200px; border:thin grey solid; margin:0 0 1em 1em; }
.highslide-caption {color:white; background-color:black;}
</style>
<div style="float:right; max-width:200px; text-align:right;">
<a href="images/hledger-web/normal/register.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/register.png" title="Account register view with accounts sidebar" /></a>
<a href="images/hledger-web/normal/journal.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/journal.png" title="Journal view" /></a>
<a href="images/hledger-web/normal/help.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/help.png" title="Help dialog" /></a>
<a href="images/hledger-web/normal/add.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-web/normal/add.png" title="Add form" /></a>
</div>
hledger-web is hledger's web interface. It starts a simple web
application 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.
Like hledger, it reads data from one or more files in hledger journal,
timeclock, timedot, or CSV format specified with `-f`, or
`$LEDGER_FILE`, or `$HOME/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`). For more about this see hledger(1),
hledger\_journal(5) etc.
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
window, and will exit after two minutes of inactivity (no requests and
no browser windows viewing it). With `--serve`, it just runs the web app
without exiting, and logs requests to the console.
By default the server listens on IP address 127.0.0.1, accessible only
to local requests. You can use `--host` to change this, eg
`--host 0.0.0.0` to listen on all configured addresses.
Similarly, use `--port` to set a TCP port other than 5000, eg if you are
running multiple hledger-web instances.
You can use `--base-url` to change the protocol, hostname, port and path
that appear in hyperlinks, useful eg for integrating hledger-web within
a larger website. The default is `http://HOST:PORT/` using the server's
configured host address and TCP port (or `http://HOST` if PORT is 80).
With `--file-url` you can set a different base url for static files, eg
for better caching or cookie-less serving on high performance websites.
Note there is no built-in access control (aside from listening on
127.0.0.1 by default). 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.
Command-line options and arguments may be used to set an initial filter
on the data. This is not shown in the web UI, but it will be applied in
addition to any search query entered there.
With journal and timeclock files (but not CSV files, currently) the web
app detects changes made by other means 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.
## OPTIONS
Note: if invoking hledger-web as a hledger subcommand, write `--` before
options as shown above.
`--serve`
: serve and log requests, don't browse or auto-exit
`--host=IPADDR`
: listen on this IP address (default: 127.0.0.1)
`--port=PORT`
: listen on this TCP port (default: 5000)
`--base-url=URL`
: set the base url (default: http://IPADDR:PORT). You would change
this when sharing over the network, or integrating within a larger
website.
`--file-url=URL`
: 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.
hledger input options:
`-f FILE --file=FILE`
: use a different input file. For stdin, use - (default:
`$LEDGER_FILE` or `$HOME/.hledger.journal`)
`--rules-file=RULESFILE`
: Conversion rules file to use when reading CSV (default: FILE.rules)
`--separator=CHAR`
: Field separator to expect when reading CSV (default: ',')
`--alias=OLD=NEW`
: rename accounts named OLD to NEW
`--anon`
: anonymize accounts and payees
`--pivot FIELDNAME`
: use some other field or tag for the account name
`-I --ignore-assertions`
: ignore any failing balance assertions
hledger reporting options:
`-b --begin=DATE`
: include postings/txns on or after this date
`-e --end=DATE`
: include postings/txns before this date
`-D --daily`
: multiperiod/multicolumn report by day
`-W --weekly`
: multiperiod/multicolumn report by week
`-M --monthly`
: multiperiod/multicolumn report by month
`-Q --quarterly`
: multiperiod/multicolumn report by quarter
`-Y --yearly`
: multiperiod/multicolumn report by year
`-p --period=PERIODEXP`
: set start date, end date, and/or reporting interval all at once
using [period expressions](manual.html#period-expressions) syntax
(overrides the flags above)
`--date2`
: match the secondary date instead (see command help for other
effects)
`-U --unmarked`
: include only unmarked postings/txns (can combine with -P or -C)
`-P --pending`
: include only pending postings/txns
`-C --cleared`
: include only cleared postings/txns
`-R --real`
: include only non-virtual postings
`-NUM --depth=NUM`
: hide/aggregate accounts or postings more than NUM levels deep
`-E --empty`
: show items with zero amount, normally hidden (and vice-versa in
hledger-ui/hledger-web)
`-B --cost`
: convert amounts to their cost at transaction time (using the
[transaction price](journal.html#transaction-prices), if any)
`-V --value`
: convert amounts to their market value on the report end date (using
the most recent applicable [market
price](journal.html#market-prices), if any)
`--auto`
: apply [automated posting
rules](journal.html#automated-posting-rules) to modify transactions.
`--forecast`
: apply [periodic transaction](journal.html#periodic-transactions)
rules to generate future transactions, to 6 months from now or
report end date.
When a reporting option appears more than once in the command line, the
last one takes precedence.
Some reporting options can also be written as [query
arguments](#queries).
hledger help options:
`-h --help`
: show general usage (or after COMMAND, command usage)
`--version`
: show version
`--debug[=N]`
: show debug output (levels 1-9, default: 1)
A @FILE argument will be expanded to the contents of FILE, which should
contain one command line option/argument per line. (To prevent this,
insert a `--` argument before.)
## ENVIRONMENT
**LEDGER\_FILE** The journal file path when not specified with `-f`.
Default: `~/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`).
## FILES
Reads data from one or more files in hledger journal, timeclock,
timedot, or CSV format specified with `-f`, or `$LEDGER_FILE`, or
`$HOME/.hledger.journal` (on windows, perhaps
`C:/Users/USER/.hledger.journal`).
## BUGS
The need to precede options with `--` when invoked from hledger is
awkward.
`-f-` doesn't work (hledger-web can't read from stdin).
Query arguments and some hledger options are ignored.
Does not work in text-mode browsers.
Does not work well on small screens.

2432
site/doc/1.11/hledger.md Normal file

File diff suppressed because it is too large Load Diff

BIN
site/doc/1.11/images/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

1307
site/doc/1.11/journal.md Normal file

File diff suppressed because it is too large Load Diff

4980
site/doc/1.11/manual.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,69 @@
# timeclock format
This doc is for version **1.10.99** (dev). []{.docversions}
\$toc\$
## NAME
Timeclock - the time logging format of timeclock.el, as read by hledger
## DESCRIPTION
hledger can read timeclock files. [As with
Ledger](http://ledger-cli.org/3.0/doc/ledger3.html#Time-Keeping), these
are (a subset of)
[timeclock.el](http://www.emacswiki.org/emacs/TimeClock)'s format,
containing clock-in and clock-out entries as in the example below. The
date is a [simple date](#simple-dates). 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).
``` {.timeclock}
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:
``` {.shell}
$ 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](https://raw.github.com/simonmichael/hledger/master/examples/sample.timeclock)
to download and some queries to try:
``` {.shell}
$ 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:
- use emacs and the built-in timeclock.el, or the extended
[timeclock-x.el](http://www.emacswiki.org/emacs/timeclock-x.el) and
perhaps the extras in
[ledgerutils.el](http://hub.darcs.net/simon/ledgertools/ledgerutils.el)
- at the command line, use these bash aliases:
`` shell alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG" ``
- or use the old `ti` and `to` scripts in the [ledger 2.x
repository](https://github.com/ledger/ledger/tree/maint/scripts).
These rely on a "timeclock" executable which I think is just the
ledger 2 executable renamed.

124
site/doc/1.11/timedot.md Normal file
View File

@ -0,0 +1,124 @@
# timedot format
This doc is for version **1.10.99** (dev). []{.docversions}
\$toc\$
## NAME
Timedot - hledger's human-friendly time logging format
## DESCRIPTION
Timedot is a plain text format for logging dated, categorised quantities
(of time, usually), 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", this format is read by hledger as commodityless
quantities, so it could be used to represent dated quantities other than
time. In the docs below we'll assume it's time.
## FILE FORMAT
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](/journal.html#simple-dates) (see
hledger\_journal(5)). Categories are hledger-style account names,
optionally indented. As in a hledger journal, there must be at least two
spaces between the category (account name) and the quantity.
Quantities can be written as:
- a sequence of dots (.) representing quarter hours. Spaces may
optionally be used for grouping and readability. Eg: .... ..
- an integral or decimal number, representing hours. Eg: 1.5
- an integral or decimal number immediately followed by a unit symbol
`s`, `m`, `h`, `d`, `w`, `mo`, or `y`, representing seconds,
minutes, hours, days weeks, months or years respectively. Eg: 90m.
The following equivalencies are assumed, currently: 1m = 60s, 1h =
60m, 1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d.
Blank lines and lines beginning with \#, ; or \* are ignored. An
example:
``` {.timedot}
# 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:
``` {.timedot}
2016/2/3
inc:client1 4
fos:hledger 3
biz:research 1
```
Reporting:
``` {.shell}
$ hledger -f t.timedot print date:2016/2/2
2016/02/02 *
(inc:client1) 2.00
2016/02/02 *
(biz:research) 0.25
```
``` {.shell}
$ 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](/journal.html#rewriting-accounts):
``` {.timedot}
2016/2/4
fos.hledger.timedot 4
fos.ledger ..
```
``` {.shell}
$ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4
4.50 fos
4.00 hledger:timedot
0.50 ledger
--------------------
4.50
```
Here is a
[sample.timedot](https://raw.github.com/simonmichael/hledger/master/examples/sample.timedot).
<!-- to download and some queries to try: -->
<!-- ```shell -->
<!-- $ hledger -f sample.timedot balance # current time balances -->
<!-- $ hledger -f sample.timedot register -p 2009/3 # sessions in march 2009 -->
<!-- $ hledger -f sample.timedot register -p weekly --depth 1 --empty # time summary by week -->
<!-- ``` -->

View File

@ -83,11 +83,11 @@ on GNU/linux, mac and freeBSD
Here's the quick, non-secure way to run it:
**`curl https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh | bash`**
**`curl -s https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh | bash`**
And here's the more responsible way:
**`curl -O https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh`**\
**`curl -sO https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh`**\
**`less hledger-install.sh`** *# do security review*\
**`bash hledger-install.sh`**
@ -117,13 +117,13 @@ Eg, if you use bash:
Now you should be able to run the hledger tools and see the expected versions. Eg:
```shell
$ hledger --version
hledger 1.10
hledger 1.11
$ hledger-ui --version
hledger-ui 1.10
hledger-ui 1.11
$ hledger web --version
hledger-web 1.10
hledger-web 1.11
$ hledger iadd --version
This is hledger-iadd version 1.3.5
This is hledger-iadd version 1.3.6
```
#### Need help ?
@ -149,7 +149,7 @@ If you prefer more control or if hledger-install failed, here's how to use stack
On Windows, the 64-bit version of stack is [preferred](https://github.com/simonmichael/hledger/issues/275#issuecomment-123834252).
2. **`stack install --resolver=lts-12 hledger-lib-1.10 hledger-1.10 hledger-ui-1.10.1 hledger-web-1.10 hledger-api-1.10`**\
2. **`stack install --resolver=lts-12 cassava-megaparsec-1.0.0 hledger-lib-1.11 hledger-1.11 hledger-ui-1.11 hledger-web-1.11 hledger-api-1.11`**\
This installs the main hledger packages (and dependencies) from [Stackage](https://www.stackage.org) and/or [Hackage](http://hackage.haskell.org).
You can save some time by omitting hledger-* packages you don't want.\
<span class=warnings>([windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444))</span>

View File

@ -224,21 +224,3 @@ a file format for human-friendly approximate time logging
</div> <!-- row -->
</div> <!-- container -->
<!-- TWITTER -->
<a name="twitter"></a>
<div style="margin-top:4em; text-align:center; ">
## [#hledger](https://twitter.com/search?q=%23hledger&src=typd&f=realtime), [#plaintextaccounting](https://twitter.com/search?q=%23plaintextaccounting&src=typd&f=realtime) on Twitter:
<!-- <a href="https://twitter.com/ledgertips">@LedgerTips</a> -->
<style>
.twitter-timeline {
height: 1500px !important;
/* width: 70% !important; */
}
</style>
<a class="twitter-timeline" data-chrome="noheader" data-dnt="true" href="https://twitter.com/search?q=%23hledger%20OR%20%23plaintextaccounting%20-RT%20-%23TheJoker" data-widget-id="707934052225945600">Tweets about #hledger OR #plaintextaccounting OR #ledgercli -RT -#TheJoker</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div>

View File

@ -12,6 +12,7 @@ function addDocVersions() {
var newpage = page=='manual' ? page : topic;
$('.docversions').html('Available versions: \
<a href="/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">dev</a> \
| <a href="/doc/1.11/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.11</a> \
| <a href="/doc/1.10/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.10</a> \
| <a href="/doc/1.9/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.9</a> \
| <a href="/doc/1.5/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.5</a> \

View File

@ -8,6 +8,7 @@ h4 { margin-top:2em; }
<ol>
<li><a href="#hledger-install">hledger-install</a>
<!-- <li><a href="#latest-minor-release">Latest (2018/4/30)</a> -->
<li><a href="#hledger-1.11">hledger 1.11 (2018/9/30)</a>
<li><a href="#hledger-1.10">hledger 1.10 (2018/6/30)</a>
<li><a href="#hledger-1.9">hledger 1.9 (2018/3/31)</a>
<li><a href="#hledger-1.5">hledger 1.5 (2017/12/31)</a>
@ -67,6 +68,166 @@ is updated frequently; here are the
-->
## 2018/9/30 hledger 1.11
***Customisable account display order,
support for other delimiter-separated formats (eg semicolon-separated),
new files and roi commands,
fixes
***
<!--
([announcement](https://groups.google.com/forum/#!msg/hledger/))
-->
<!-- [project](#project-wide-changes-for-1.11) -->
[hledger](#hledger-1.11-1)
<!-- | [hledger-ui](#hledger-ui-1.11) -->
<!-- | [hledger-web](#hledger-web-1.11) -->
<!-- | [hledger-api](#hledger-api-1.11) -->
| [hledger-lib](#hledger-lib-1.11)
| [credits](#credits-1.11)
<!-- ### project-wide changes for 1.11 -->
### hledger 1.11
* The default display order of accounts is now influenced by
the order of account directives. Accounts declared by account
directives are displayed first (top-most), in declaration order,
followed by undeclared accounts in alphabetical order. Numeric
account codes are no longer used, and are ignored and considered
deprecated.
So if your accounts are displaying in a weird order after upgrading,
and you want them alphabetical like before, just sort your account
directives alphabetically.
* Account sorting (by name, by declaration, by amount) is now more
robust and supported consistently by all commands (accounts,
balance, bs..) in all modes (tree & flat, tabular & non-tabular).
* close: new --opening/--closing flags to print only the opening or
closing transaction
* files: a new command to list included files
* prices: query arguments are now supported. Prices can be filtered by
date, and postings providing transaction prices can also be filtered.
* rewrite: help clarifies relation to print --auto (#745)
* roi: a new command to compute return on investment, based on hledger-irr
* test: has more verbose output, more informative failure messages,
and no longer tries to read the journal
* csv: We use a more robust CSV lib (cassava) and now support
non-comma separators, eg --separator ';' (experimental, this flag
will probably become a CSV rule) (#829)
* csv: interpolated field names in values are now properly case insensitive, so
this works:
fields ...,Transaction_Date,...
date %Transaction_Date
* journal: D (default commodity) directives no longer break multiplier
amounts in transaction modifiers (AKA automated postings) (#860)
* journal: "Automated Postings" have been renamed to "Transaction Modifiers".
* journal: transaction comments in transaction modifier rules are now parsed correctly. (#745)
* journal: when include files form a cycle, we give an error instead
of hanging.
* upper-case day/month names in period expressions no longer give an error (#847, #852)
### hledger-lib 1.11
* compilation now works when locale is unset (#849)
* all unit tests have been converted from HUnit+test-framework to easytest
* doctests now run quicker by default, by skipping reloading between tests.
This can be disabled by passing --slow to the doctests test suite
executable.
* doctests test suite executable now supports --verbose, which shows
progress output as tests are run if doctest 0.16.0+ is installed
(and hopefully is harmless otherwise).
* doctests now support file pattern arguments, provide more informative output.
Limiting to just the file(s) you're interested can make doctest start
much quicker. With one big caveat: you can limit the starting files,
but it always imports and tests all other local files those import.
* a bunch of custom Show instances have been replaced with defaults,
for easier troubleshooting. These were sometimes obscuring
important details, eg in test failure output. Our new policy is:
stick with default derived Show instances as far as possible, but
when necessary adjust them to valid haskell syntax so pretty-show
can pretty-print them (eg when they contain Day values, cf
https://github.com/haskell/time/issues/101). By convention, when
fields are shown in less than full detail, and/or in double-quoted
pseudo syntax, we show a double period (..) in the output.
* Amount has a new Show instance. Amount's show instance hid
important details by default, and showing more details required
increasing the debug level, which was inconvenient. Now it has a
single show instance which shows more information, is fairly
compact, and is pretty-printable.
ghci> usd 1
OLD:
Amount {acommodity="$", aquantity=1.00, ..}
NEW:
Amount {acommodity = "$", aquantity = 1.00, aprice = NoPrice, astyle = AmountStyle "L False 2 Just '.' Nothing..", amultiplier = False}
MixedAmount's show instance is unchanged, but showMixedAmountDebug
is affected by this change:
ghci> putStrLn $ showMixedAmountDebug $ Mixed [usd 1]
OLD:
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle {ascommodityside = L, ascommodityspaced = False, asprecision = 2, asdecimalpoint = Just '.', asdigitgroups = Nothing}}]
NEW:
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle "L False 2 Just '.' Nothing.."}]
* Same-line & next-line comments of transactions, postings, etc.
are now parsed a bit more precisely (followingcommentp).
Previously, parsing no comment gave the same result as an empty
comment (a single newline); now it gives an empty string.
Also, and perhaps as a consequence of the above, when there's no
same-line comment but there is a next-line comment, we'll insert an
empty first line, since otherwise next-line comments would get moved
up to the same line when rendered.
* Hledger.Utils.Test exports HasCallStack
* queryDateSpan, queryDateSpan' now intersect date AND'ed date spans
instead of unioning them, and docs are clearer.
* pushAccount -> pushDeclaredAccount
* jaccounts -> jdeclaredaccounts
* AutoTransaction.hs -> PeriodicTransaction.hs & TransactionModifier.hs
* Hledger.Utils.Debug helpers have been renamed/cleaned up
### credits 1.11
Release contributors:
Joseph Weston,
Dmitry Astapov,
Gaith Hallak,
Jakub Zárybnický,
Luca Molteni,
SpicyCat.
## 2018/6/30 hledger 1.10
***hledger-web edit/upload/download and permissions,

View File

@ -191,7 +191,7 @@ Balance Sheet 2017/01/01
>>>2
>>>=0
# 7. An empty section is does not disrupt the overall totals, #588
# 7. An empty section does not disrupt the overall totals, #588
hledger -f- balancesheet -YTA
<<<
2017/1/1