Merge branch 'master' into ExceptTLayer
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
.
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
@ -249,4 +249,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger 1.10.99 July 2018 hledger_csv(5)
|
||||
hledger 1.10.99 September 2018 hledger_csv(5)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
@ -77,4 +77,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger 1.10.99 July 2018 hledger_timeclock(5)
|
||||
hledger 1.10.99 September 2018 hledger_timeclock(5)
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
@ -124,4 +124,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
hledger 1.10.99 July 2018 hledger_timedot(5)
|
||||
hledger 1.10.99 September 2018 hledger_timedot(5)
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
274
site/doc/1.11/csv.md
Normal 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.
|
102
site/doc/1.11/hledger-api.md
Normal 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
@ -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.
|
253
site/doc/1.11/hledger-web.md
Normal 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
BIN
site/doc/1.11/images/.DS_Store
vendored
Normal file
BIN
site/doc/1.11/images/balance-q-inc.png
Normal file
After Width: | Height: | Size: 56 KiB |
4992
site/doc/1.11/images/coins.svg
Normal file
After Width: | Height: | Size: 318 KiB |
BIN
site/doc/1.11/images/coins2-248.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
site/doc/1.11/images/coins2.png
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
site/doc/1.11/images/data-model.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
site/doc/1.11/images/hledger-charts-2.png
Normal file
After Width: | Height: | Size: 219 KiB |
BIN
site/doc/1.11/images/hledger-lib-api.png
Normal file
After Width: | Height: | Size: 187 KiB |
BIN
site/doc/1.11/images/hledger-screen-1.png
Normal file
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 185 KiB |
BIN
site/doc/1.11/images/hledger-ui/hledger-ui-bcexample-acc.png
Normal file
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 48 KiB |
BIN
site/doc/1.11/images/hledger-ui/hledger-ui-sample-acc.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
site/doc/1.11/images/hledger-ui/hledger-ui-sample-acc2.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
site/doc/1.11/images/hledger-ui/hledger-ui-sample-reg.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
site/doc/1.11/images/hledger-ui/hledger-ui-sample-txn.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
site/doc/1.11/images/hledger-web-journal.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
site/doc/1.11/images/hledger-web/.DS_Store
vendored
Normal file
BIN
site/doc/1.11/images/hledger-web/normal/add.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
site/doc/1.11/images/hledger-web/normal/help.png
Normal file
After Width: | Height: | Size: 204 KiB |
BIN
site/doc/1.11/images/hledger-web/normal/help2.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
site/doc/1.11/images/hledger-web/normal/journal-sidebar.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
site/doc/1.11/images/hledger-web/normal/journal.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
site/doc/1.11/images/hledger-web/normal/journal2.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
site/doc/1.11/images/hledger-web/normal/register.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
site/doc/1.11/images/hledger-web/small/add.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
site/doc/1.11/images/hledger-web/small/help.png
Normal file
After Width: | Height: | Size: 128 KiB |
BIN
site/doc/1.11/images/hledger-web/small/help2.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
site/doc/1.11/images/hledger-web/small/journal-sidebar.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
site/doc/1.11/images/hledger-web/small/journal-sidebar2.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
site/doc/1.11/images/hledger-web/small/journal.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
site/doc/1.11/images/hledger-web/small/journal2.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
site/doc/1.11/images/hledger-web/small/register.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
site/doc/1.11/images/hledger-web/small/register2.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
site/doc/1.11/images/linux.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
site/doc/1.11/images/mac.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
site/doc/1.11/images/manual.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
site/doc/1.11/images/sshot.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
site/doc/1.11/images/watchhours.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
site/doc/1.11/images/windows.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
1307
site/doc/1.11/journal.md
Normal file
4980
site/doc/1.11/manual.md
Normal file
69
site/doc/1.11/timeclock.md
Normal 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
@ -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 -->
|
||||
<!-- ``` -->
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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> \
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|