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_define({{_webcombined_}}, m4_ifdef({{WEB && COMBINED}},{{$1}}) )m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
m4_define({{_author_}}, {{}})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_define({{_version_}}, {{1.10.99}})m4_dnl
|
||||||
m4_dnl
|
m4_dnl
|
||||||
m4_dnl Links to dev and recent release versions of a manual.
|
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 Too painful for static generation, insert from site.js instead
|
||||||
m4_dnl Available versions:
|
m4_dnl Available versions:
|
||||||
m4_dnl <a href="/$1.html">dev</a>
|
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.10/$1.html">1.10</a>
|
||||||
m4_dnl | <a href="/doc/1.9/$1.html">1.9</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>
|
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.
|
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)
|
# 1.10 (2018/6/30)
|
||||||
|
|
||||||
* use hledger-lib 1.10
|
* 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
|
-- see: https://github.com/sol/hpack
|
||||||
--
|
--
|
||||||
-- hash: 07d6eec88f8c0ba15f32b5bf4c9f74e54364b6da30852617699b496fbf3bf63a
|
-- hash: 7f5a11be3e9db0d4fcebb5b663ee988461de6d815042a7785f9076e083dde205
|
||||||
|
|
||||||
name: hledger-api
|
name: hledger-api
|
||||||
version: 1.10.99
|
version: 1.11
|
||||||
synopsis: Web API server for the hledger accounting tool
|
synopsis: Web API server for the hledger accounting tool
|
||||||
description: This is a simple web API server for hledger data.
|
description: This is a simple web API server for hledger data.
|
||||||
It comes with a series of simple client-side web app examples.
|
It comes with a series of simple client-side web app examples.
|
||||||
@ -45,7 +45,7 @@ executable hledger-api
|
|||||||
other-modules:
|
other-modules:
|
||||||
Paths_hledger_api
|
Paths_hledger_api
|
||||||
ghc-options: -threaded
|
ghc-options: -threaded
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
build-depends:
|
build-depends:
|
||||||
Decimal
|
Decimal
|
||||||
, aeson
|
, aeson
|
||||||
@ -55,8 +55,8 @@ executable hledger-api
|
|||||||
, data-default >=0.5
|
, data-default >=0.5
|
||||||
, docopt
|
, docopt
|
||||||
, either
|
, either
|
||||||
, hledger >=1.10.99 && <1.11
|
, hledger >=1.11 && <1.12
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, microlens >=0.4
|
, microlens >=0.4
|
||||||
, microlens-platform >=0.2.3.1
|
, microlens-platform >=0.2.3.1
|
||||||
, safe
|
, safe
|
||||||
|
|||||||
@ -37,12 +37,12 @@ import Text.Printf
|
|||||||
import Hledger.Query
|
import Hledger.Query
|
||||||
import Hledger.Cli hiding (Reader, version)
|
import Hledger.Cli hiding (Reader, version)
|
||||||
|
|
||||||
hledgerApiVersion="1.10.99"
|
hledgerApiVersion="1.11"
|
||||||
|
|
||||||
-- https://github.com/docopt/docopt.hs#readme
|
-- https://github.com/docopt/docopt.hs#readme
|
||||||
doc :: Docopt
|
doc :: Docopt
|
||||||
doc = [docopt|
|
doc = [docopt|
|
||||||
hledger-api 1.10.99
|
hledger-api 1.11
|
||||||
|
|
||||||
Serves hledger data and reports as a JSON web API.
|
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
|
name: hledger-api
|
||||||
version: '1.10.99'
|
version: '1.11'
|
||||||
synopsis: Web API server for the hledger accounting tool
|
synopsis: Web API server for the hledger accounting tool
|
||||||
description: |
|
description: |
|
||||||
This is a simple web API server for hledger data.
|
This is a simple web API server for hledger data.
|
||||||
@ -32,8 +32,8 @@ extra-source-files:
|
|||||||
#data-files:
|
#data-files:
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- hledger-lib >=1.10.99 && <1.11
|
- hledger-lib >=1.11 && <1.12
|
||||||
- hledger >=1.10.99 && <1.11
|
- hledger >=1.11 && <1.12
|
||||||
- base >=4.8 && <4.12
|
- base >=4.8 && <4.12
|
||||||
- aeson
|
- aeson
|
||||||
- bytestring
|
- bytestring
|
||||||
@ -58,4 +58,4 @@ executables:
|
|||||||
hledger-api:
|
hledger-api:
|
||||||
main: hledger-api.hs
|
main: hledger-api.hs
|
||||||
ghc-options: -threaded
|
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/) ...
|
#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)
|
# /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
|
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=lts-12"
|
||||||
#RESOLVER="--resolver=nightly-2018-07-09"
|
#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
|
# things to be installed
|
||||||
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
|
|
||||||
|
|
||||||
HLEDGER_MAIN_TOOLS="\
|
HLEDGER_MAIN_TOOLS="\
|
||||||
hledger \
|
hledger \
|
||||||
@ -80,11 +74,30 @@ HLEDGER_OTHER_TOOLS="\
|
|||||||
hledger-diff \
|
hledger-diff \
|
||||||
hledger-iadd \
|
hledger-iadd \
|
||||||
hledger-interest \
|
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
|
# 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"
|
HOME_LOCAL_BIN="$HOME/.local/bin"
|
||||||
USR_LOCAL_BIN="/usr/local/bin"
|
USR_LOCAL_BIN="/usr/local/bin"
|
||||||
@ -645,6 +658,12 @@ has_stack() {
|
|||||||
has_cmd 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
|
# Check whether 'wget' command exists
|
||||||
has_wget() {
|
has_wget() {
|
||||||
has_cmd 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 whether Stack is already installed, and print an error if it is.
|
||||||
check_stack_installed() {
|
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:
|
die "Stack $(stack_version) already appears to be installed at:
|
||||||
$(stack_location)
|
$(stack_location)
|
||||||
Use 'stack upgrade' or your OS's package manager to upgrade,
|
Use 'stack upgrade' or your OS's package manager to upgrade,
|
||||||
@ -749,9 +768,11 @@ trap cleanup_temp_dir EXIT
|
|||||||
|
|
||||||
# hledger routines
|
# 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() {
|
ensure_stack() {
|
||||||
if ! has_stack || [[ "$FORCE_INSTALL_STACK" == "true" ]] ; then
|
if ! has_good_stack || [[ "$FORCE_INSTALL_STACK" == "true" ]] ; then
|
||||||
echo "Installing stack"
|
echo "Installing stack"
|
||||||
do_os
|
do_os
|
||||||
fi
|
fi
|
||||||
@ -786,13 +807,13 @@ print_cmd_version() {
|
|||||||
if [[ $(cmd_location "$1") ]]; then
|
if [[ $(cmd_location "$1") ]]; then
|
||||||
echo "$1" $(cmd_version "$1") is installed at $(cmd_location "$1")
|
echo "$1" $(cmd_version "$1") is installed at $(cmd_location "$1")
|
||||||
else
|
else
|
||||||
echo "$1 not found"
|
echo "$1 is not found"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show the installation status of the $HLEDGER_MAIN_TOOLS and $HLEDGER_OTHER_TOOLS.
|
# Show the current installation status of the hledger packages and install tools.
|
||||||
print_hledger_versions() {
|
print_installed_versions() {
|
||||||
for cmd in $HLEDGER_MAIN_TOOLS $HLEDGER_OTHER_TOOLS $HLEDGER_INSTALL_TOOL ; do print_cmd_version "$cmd"; done
|
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.
|
# 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
|
# 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.
|
# install but also all dependencies which are not in the specified stackage $RESOLVER.
|
||||||
try_install() {
|
try_install() {
|
||||||
(cd # avoid any project-specific stack/cabal config, install at user level
|
(cd # ensure we install at user level, not in some project's stack/cabal setup
|
||||||
(! has_cmd stack && has_cmd cabal && echo "using $(cabal --version)" && try_info cabal install "$@" --verbose="$CABAL_VERBOSITY" ) ||
|
# 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 && (
|
(ensure_stack && (
|
||||||
#(try_info stack install --install-ghc "$@" --verbosity=$STACK_VERBOSITY ) || # existing resolver
|
#(try_info stack install --install-ghc "$@" --verbosity=$STACK_VERBOSITY ) || # existing resolver
|
||||||
(try_info stack install --install-ghc $RESOLVER "$@" --verbosity="$STACK_VERBOSITY" ) # specific 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
|
quietly_run lsb_release -a
|
||||||
|
|
||||||
# show current installed hledger packages
|
# show current installed hledger packages
|
||||||
echo "Install status:"
|
echo "Install status before:"
|
||||||
print_hledger_versions
|
print_installed_versions
|
||||||
|
|
||||||
if [[ $STATUSFLAG ]] ; then
|
if [[ $STATUSFLAG ]] ; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if we'll be using cabal, run cabal update once at the start
|
# 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.
|
# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401.
|
||||||
# cmpver A B's exit status *and* output is
|
# 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
|
if [[ $(cmpver "$(cmd_version hledger 2>/dev/null)" $HLEDGER_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger
|
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
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cmpver "$(cmd_version hledger-ui 2>/dev/null)" $HLEDGER_UI_VERSION) = 2 ]]; then
|
if [[ $(cmpver "$(cmd_version hledger-ui 2>/dev/null)" $HLEDGER_UI_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger-ui
|
echo Installing hledger-ui
|
||||||
try_install hledger-ui-$HLEDGER_UI_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION \
|
try_install hledger-ui-$HLEDGER_UI_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS \
|
||||||
fsnotify-0.3.0.1
|
# brick-X.Y # when hledger-iadd requires a special brick, use the same here to reduce rebuilding
|
||||||
# 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
|
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cmpver "$(cmd_version hledger-web 2>/dev/null)" $HLEDGER_WEB_VERSION) = 2 ]]; then
|
if [[ $(cmpver "$(cmd_version hledger-web 2>/dev/null)" $HLEDGER_WEB_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger-web
|
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
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cmpver "$(cmd_version hledger-api 2>/dev/null)" $HLEDGER_API_VERSION) = 2 ]]; then
|
if [[ $(cmpver "$(cmd_version hledger-api 2>/dev/null)" $HLEDGER_API_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger-api
|
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
|
echo
|
||||||
fi
|
fi
|
||||||
|
exit
|
||||||
# Third-party addons. We allow these to use an older version of
|
# Third-party addons. We sometimes build these with an older version
|
||||||
# hledger-lib, in case their bounds have not been updated yet.
|
# 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
|
if [[ $(cmpver "$(cmd_version hledger-diff 2>/dev/null)" $HLEDGER_DIFF_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger-diff
|
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
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cmpver "$(cmd_version hledger-iadd 2>/dev/null)" $HLEDGER_IADD_VERSION) = 2 ]]; then
|
if [[ $(cmpver "$(cmd_version hledger-iadd 2>/dev/null)" $HLEDGER_IADD_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger-iadd
|
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
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cmpver "$(cmd_version hledger-interest 2>/dev/null)" $HLEDGER_INTEREST_VERSION) = 2 ]]; then
|
if [[ $(cmpver "$(cmd_version hledger-interest 2>/dev/null)" $HLEDGER_INTEREST_VERSION) = 2 ]]; then
|
||||||
echo Installing hledger-interest
|
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
|
echo
|
||||||
fi
|
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 ----------
|
echo ----------
|
||||||
|
|
||||||
# show new installation status
|
# show new installation status
|
||||||
print_hledger_versions
|
echo "Install status after:"
|
||||||
|
print_installed_versions
|
||||||
|
|
||||||
# warn if $HOME/.local/bin isn't in $PATH
|
# warn if $HOME/.local/bin isn't in $PATH
|
||||||
check_home_local_bin_on_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.
|
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)
|
# 1.10 (2018/6/30)
|
||||||
|
|
||||||
* build cleanly with all supported GHC versions again (7.10 to 8.4)
|
* build cleanly with all supported GHC versions again (7.10 to 8.4)
|
||||||
|
|||||||
@ -2,10 +2,10 @@
|
|||||||
--
|
--
|
||||||
-- see: https://github.com/sol/hpack
|
-- see: https://github.com/sol/hpack
|
||||||
--
|
--
|
||||||
-- hash: 54632c4329f85aa921fb91abbed9c0871465e0cfb4cdfa05a390447c6d796b83
|
-- hash: f3cc307bb564ecec4c16143a1d254c4cbbbee1483eb7860c711e3c4c5ed46431
|
||||||
|
|
||||||
name: hledger-lib
|
name: hledger-lib
|
||||||
version: 1.10.99
|
version: 1.11
|
||||||
synopsis: Core data types, parsers and functionality for the hledger accounting tools
|
synopsis: Core data types, parsers and functionality for the hledger accounting tools
|
||||||
description: This is a reusable library containing hledger's core functionality.
|
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
|
.\"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
|
.PD
|
||||||
In future it will also help detect misspelled accounts.
|
In future it will also help detect misspelled accounts.
|
||||||
.PP
|
.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,
|
An account directive can also have indented subdirectives following it,
|
||||||
which are currently ignored.
|
which are currently ignored.
|
||||||
Here is the full syntax:
|
Here is the full syntax:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
;\ account\ ACCTNAME\ \ [OPTIONALCODE]
|
;\ account\ ACCTNAME
|
||||||
;\ \ \ [OPTIONALSUBDIRECTIVES]
|
;\ \ \ [OPTIONALSUBDIRECTIVES]
|
||||||
|
|
||||||
account\ assets:bank:checking\ \ \ 1110
|
account\ assets:bank:checking
|
||||||
\ \ a\ comment
|
\ \ a\ comment
|
||||||
\ \ some\-tag:12345
|
\ \ some\-tag:12345
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.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
|
.SS Rewriting accounts
|
||||||
.PP
|
.PP
|
||||||
You can define account alias rules which rewrite your account names, or
|
You can define account alias rules which rewrite your account names, or
|
||||||
|
|||||||
@ -853,6 +853,7 @@ times though.
|
|||||||
* Default commodity::
|
* Default commodity::
|
||||||
* Market prices::
|
* Market prices::
|
||||||
* Declaring accounts::
|
* Declaring accounts::
|
||||||
|
* Account display order::
|
||||||
* Rewriting accounts::
|
* Rewriting accounts::
|
||||||
* Default parent account::
|
* Default parent account::
|
||||||
|
|
||||||
@ -1002,7 +1003,7 @@ P 2010/1/1 € $1.40
|
|||||||
another commodity using these prices.
|
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
|
1.14.7 Declaring accounts
|
||||||
-------------------------
|
-------------------------
|
||||||
@ -1016,46 +1017,71 @@ account assets:bank:checking
|
|||||||
hledger add, hledger-iadd, hledger-web, and ledger-mode.
|
hledger add, hledger-iadd, hledger-web, and ledger-mode.
|
||||||
In future it will also help detect misspelled accounts.
|
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
|
An account directive can also have indented subdirectives following
|
||||||
it, which are currently ignored. Here is the full syntax:
|
it, which are currently ignored. Here is the full syntax:
|
||||||
|
|
||||||
; account ACCTNAME [OPTIONALCODE]
|
; account ACCTNAME
|
||||||
; [OPTIONALSUBDIRECTIVES]
|
; [OPTIONALSUBDIRECTIVES]
|
||||||
|
|
||||||
account assets:bank:checking 1110
|
account assets:bank:checking
|
||||||
a comment
|
a comment
|
||||||
some-tag:12345
|
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
|
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
|
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.
|
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
|
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,
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
within a section of the journal. Use the 'apply account' and 'end apply
|
||||||
@ -1417,41 +1443,43 @@ Node: Tags26403
|
|||||||
Ref: #tags26521
|
Ref: #tags26521
|
||||||
Node: Directives27923
|
Node: Directives27923
|
||||||
Ref: #directives28066
|
Ref: #directives28066
|
||||||
Node: Comment blocks33922
|
Node: Comment blocks33948
|
||||||
Ref: #comment-blocks34067
|
Ref: #comment-blocks34093
|
||||||
Node: Including other files34243
|
Node: Including other files34269
|
||||||
Ref: #including-other-files34423
|
Ref: #including-other-files34449
|
||||||
Node: Default year34831
|
Node: Default year34857
|
||||||
Ref: #default-year35000
|
Ref: #default-year35026
|
||||||
Node: Declaring commodities35423
|
Node: Declaring commodities35449
|
||||||
Ref: #declaring-commodities35606
|
Ref: #declaring-commodities35632
|
||||||
Node: Default commodity36833
|
Node: Default commodity36859
|
||||||
Ref: #default-commodity37009
|
Ref: #default-commodity37035
|
||||||
Node: Market prices37645
|
Node: Market prices37671
|
||||||
Ref: #market-prices37810
|
Ref: #market-prices37836
|
||||||
Node: Declaring accounts38651
|
Node: Declaring accounts38677
|
||||||
Ref: #declaring-accounts38827
|
Ref: #declaring-accounts38856
|
||||||
Node: Rewriting accounts40498
|
Node: Account display order39406
|
||||||
Ref: #rewriting-accounts40683
|
Ref: #account-display-order39596
|
||||||
Node: Basic aliases41417
|
Node: Rewriting accounts40617
|
||||||
Ref: #basic-aliases41563
|
Ref: #rewriting-accounts40805
|
||||||
Node: Regex aliases42267
|
Node: Basic aliases41539
|
||||||
Ref: #regex-aliases42438
|
Ref: #basic-aliases41685
|
||||||
Node: Multiple aliases43156
|
Node: Regex aliases42389
|
||||||
Ref: #multiple-aliases43331
|
Ref: #regex-aliases42560
|
||||||
Node: end aliases43829
|
Node: Multiple aliases43278
|
||||||
Ref: #end-aliases43976
|
Ref: #multiple-aliases43453
|
||||||
Node: Default parent account44077
|
Node: end aliases43951
|
||||||
Ref: #default-parent-account44243
|
Ref: #end-aliases44098
|
||||||
Node: Periodic transactions45127
|
Node: Default parent account44199
|
||||||
Ref: #periodic-transactions45309
|
Ref: #default-parent-account44367
|
||||||
Node: Forecasting with periodic transactions46520
|
Node: Periodic transactions45251
|
||||||
Ref: #forecasting-with-periodic-transactions46763
|
Ref: #periodic-transactions45433
|
||||||
Node: Budgeting with periodic transactions48450
|
Node: Forecasting with periodic transactions46644
|
||||||
Ref: #budgeting-with-periodic-transactions48689
|
Ref: #forecasting-with-periodic-transactions46887
|
||||||
Node: Transaction Modifiers49148
|
Node: Budgeting with periodic transactions48574
|
||||||
Ref: #transaction-modifiers49311
|
Ref: #budgeting-with-periodic-transactions48813
|
||||||
Node: EDITOR SUPPORT50567
|
Node: Transaction Modifiers49272
|
||||||
Ref: #editor-support50685
|
Ref: #transaction-modifiers49435
|
||||||
|
Node: EDITOR SUPPORT50691
|
||||||
|
Ref: #editor-support50809
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -819,45 +819,62 @@ FILE FORMAT
|
|||||||
hledger add, hledger-iadd, hledger-web, and ledger-mode.
|
hledger add, hledger-iadd, hledger-web, and ledger-mode.
|
||||||
In future it will also help detect misspelled accounts.
|
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,
|
An account directive can also have indented subdirectives following it,
|
||||||
which are currently ignored. Here is the full syntax:
|
which are currently ignored. Here is the full syntax:
|
||||||
|
|
||||||
; account ACCTNAME [OPTIONALCODE]
|
; account ACCTNAME
|
||||||
; [OPTIONALSUBDIRECTIVES]
|
; [OPTIONALSUBDIRECTIVES]
|
||||||
|
|
||||||
account assets:bank:checking 1110
|
account assets:bank:checking
|
||||||
a comment
|
a comment
|
||||||
some-tag:12345
|
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
|
Rewriting accounts
|
||||||
You can define account alias rules which rewrite your account names, or
|
You can define account alias rules which rewrite your account names, or
|
||||||
parts of them, before generating reports. This can be useful for:
|
parts of them, before generating reports. This can be useful for:
|
||||||
@ -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
|
name: hledger-lib
|
||||||
version: '1.10.99'
|
version: '1.11'
|
||||||
synopsis: Core data types, parsers and functionality for the hledger accounting tools
|
synopsis: Core data types, parsers and functionality for the hledger accounting tools
|
||||||
description: |
|
description: |
|
||||||
This is a reusable library containing hledger's core functionality.
|
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.
|
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)
|
# 1.10.1 (2018/7/3)
|
||||||
|
|
||||||
* restore support for fsnotify 0.2.1.2, as well as 0.3.x (#833)
|
* 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
|
-- see: https://github.com/sol/hpack
|
||||||
--
|
--
|
||||||
-- hash: 88116009cafa64bb3351a332b88f9848d895f7bc4e614a8647f9c26c6405ba35
|
-- hash: d2925ba85674c61c233d118134f8b3cd090ca0900953652b4253755bb8840c9c
|
||||||
|
|
||||||
name: hledger-ui
|
name: hledger-ui
|
||||||
version: 1.10.99
|
version: 1.11
|
||||||
synopsis: Curses-style user interface for the hledger accounting tool
|
synopsis: Curses-style user interface for the hledger accounting tool
|
||||||
description: This is hledger's curses-style interface.
|
description: This is hledger's curses-style interface.
|
||||||
It is simpler and more convenient for browsing data than the command-line 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:
|
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
|
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:
|
build-depends:
|
||||||
ansi-terminal >=0.6.2.3
|
ansi-terminal >=0.6.2.3
|
||||||
, async
|
, async
|
||||||
@ -75,8 +75,8 @@ executable hledger-ui
|
|||||||
, directory
|
, directory
|
||||||
, filepath
|
, filepath
|
||||||
, fsnotify >=0.2.1.2 && <0.4
|
, fsnotify >=0.2.1.2 && <0.4
|
||||||
, hledger >=1.10.99 && <1.11
|
, hledger >=1.11 && <1.12
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, megaparsec >=6.4.1
|
, megaparsec >=6.4.1
|
||||||
, microlens >=0.4
|
, microlens >=0.4
|
||||||
, microlens-platform >=0.2.3.1
|
, 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
|
name : hledger-ui
|
||||||
version : '1.10.99'
|
version : '1.11'
|
||||||
synopsis : Curses-style user interface for the hledger accounting tool
|
synopsis : Curses-style user interface for the hledger accounting tool
|
||||||
description : |
|
description : |
|
||||||
This is hledger's curses-style interface.
|
This is hledger's curses-style interface.
|
||||||
@ -37,11 +37,11 @@ flags:
|
|||||||
manual: false
|
manual: false
|
||||||
default: true
|
default: true
|
||||||
|
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- hledger >=1.10.99 && <1.11
|
- hledger >=1.11 && <1.12
|
||||||
- hledger-lib >=1.10.99 && <1.11
|
- hledger-lib >=1.11 && <1.12
|
||||||
- ansi-terminal >=0.6.2.3
|
- ansi-terminal >=0.6.2.3
|
||||||
- async
|
- async
|
||||||
- base >=4.8 && <4.12
|
- base >=4.8 && <4.12
|
||||||
|
|||||||
@ -1,6 +1,11 @@
|
|||||||
User-visible changes in hledger-web. See also hledger, hledger-lib.
|
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)
|
# 1.10 (2018/6/30)
|
||||||
|
|
||||||
* multiple -f options, and --auto, work again
|
* 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
|
-- see: https://github.com/sol/hpack
|
||||||
--
|
--
|
||||||
-- hash: b77366b5a138b9d5a3b4c4541bfb875642f06b621bd690712d022f53ab1afbf6
|
-- hash: a990f6fed36d14942e007240e0b37a9ff1147902b74cadc426403828ce3950a6
|
||||||
|
|
||||||
name: hledger-web
|
name: hledger-web
|
||||||
version: 1.10.99
|
version: 1.11
|
||||||
synopsis: Web interface for the hledger accounting tool
|
synopsis: Web interface for the hledger accounting tool
|
||||||
description: This is hledger's web interface.
|
description: This is hledger's web interface.
|
||||||
It provides a more user-friendly and collaborative UI than the
|
It provides a more user-friendly and collaborative UI than the
|
||||||
@ -149,7 +149,7 @@ library
|
|||||||
other-modules:
|
other-modules:
|
||||||
Paths_hledger_web
|
Paths_hledger_web
|
||||||
ghc-options: -Wall -fwarn-tabs
|
ghc-options: -Wall -fwarn-tabs
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
build-depends:
|
build-depends:
|
||||||
base >=4.8 && <4.12
|
base >=4.8 && <4.12
|
||||||
, blaze-html
|
, blaze-html
|
||||||
@ -164,8 +164,8 @@ library
|
|||||||
, directory
|
, directory
|
||||||
, filepath
|
, filepath
|
||||||
, hjsmin
|
, hjsmin
|
||||||
, hledger >=1.10.99 && <1.11
|
, hledger >=1.11 && <1.12
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, http-client
|
, http-client
|
||||||
, http-conduit
|
, http-conduit
|
||||||
, json
|
, json
|
||||||
@ -201,7 +201,7 @@ executable hledger-web
|
|||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
app
|
app
|
||||||
ghc-options: -Wall -fwarn-tabs
|
ghc-options: -Wall -fwarn-tabs
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
build-depends:
|
build-depends:
|
||||||
base
|
base
|
||||||
, hledger-web
|
, 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
|
name: hledger-web
|
||||||
version: '1.10.99'
|
version: '1.11'
|
||||||
synopsis: Web interface for the hledger accounting tool
|
synopsis: Web interface for the hledger accounting tool
|
||||||
description: |
|
description: |
|
||||||
This is hledger's web interface.
|
This is hledger's web interface.
|
||||||
@ -77,7 +77,7 @@ when:
|
|||||||
|
|
||||||
library:
|
library:
|
||||||
source-dirs: .
|
source-dirs: .
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
- Hledger.Web
|
- Hledger.Web
|
||||||
- Hledger.Web.Application
|
- Hledger.Web.Application
|
||||||
@ -96,8 +96,8 @@ library:
|
|||||||
- Hledger.Web.Widget.AddForm
|
- Hledger.Web.Widget.AddForm
|
||||||
- Hledger.Web.Widget.Common
|
- Hledger.Web.Widget.Common
|
||||||
dependencies:
|
dependencies:
|
||||||
- hledger-lib >=1.10.99 && <1.11
|
- hledger-lib >=1.11 && <1.12
|
||||||
- hledger >=1.10.99 && <1.11
|
- hledger >=1.11 && <1.12
|
||||||
- base >=4.8 && <4.12
|
- base >=4.8 && <4.12
|
||||||
- blaze-html
|
- blaze-html
|
||||||
- blaze-markup
|
- blaze-markup
|
||||||
@ -143,7 +143,7 @@ executables:
|
|||||||
hledger-web:
|
hledger-web:
|
||||||
source-dirs: app
|
source-dirs: app
|
||||||
main: main.hs
|
main: main.hs
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
dependencies:
|
dependencies:
|
||||||
- base
|
- base
|
||||||
- hledger-web
|
- hledger-web
|
||||||
@ -161,7 +161,7 @@ executables:
|
|||||||
# test:
|
# test:
|
||||||
# source-dirs: tests
|
# source-dirs: tests
|
||||||
# main: main.hs
|
# main: main.hs
|
||||||
# cpp-options: -DVERSION="1.10.99"
|
# cpp-options: -DVERSION="1.11"
|
||||||
# dependencies:
|
# dependencies:
|
||||||
# - base
|
# - base
|
||||||
# - hledger-web
|
# - hledger-web
|
||||||
|
|||||||
@ -1,6 +1,61 @@
|
|||||||
User-visible changes in the hledger command line tool.
|
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)
|
# 1.10 (2018/6/30)
|
||||||
|
|
||||||
* journal: many parse error messages have become more informative, and
|
* journal: many parse error messages have become more informative, and
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
.\"t
|
.\"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
|
This was formerly called \[lq]equity\[rq], as in Ledger, and that alias
|
||||||
is also accepted.
|
is also accepted.
|
||||||
See close \[en]help for more.
|
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
|
.SS help
|
||||||
.PP
|
.PP
|
||||||
Show any of the hledger manuals.
|
Show any of the hledger manuals.
|
||||||
@ -2769,6 +2774,11 @@ Helps ledger\-autosync detect already\-seen transactions when importing.
|
|||||||
.SS rewrite
|
.SS rewrite
|
||||||
.PP
|
.PP
|
||||||
Print all transactions, adding custom postings to the matched ones.
|
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
|
.SS stats
|
||||||
.PP
|
.PP
|
||||||
Show some journal statistics.
|
Show some journal statistics.
|
||||||
|
|||||||
@ -2,10 +2,10 @@
|
|||||||
--
|
--
|
||||||
-- see: https://github.com/sol/hpack
|
-- see: https://github.com/sol/hpack
|
||||||
--
|
--
|
||||||
-- hash: eeed47cc18e00b190b0dd220f044f4f63c60442fa26ee301c44454b5f66e09ca
|
-- hash: a53ed723ef2c43c6425e4bf2d40ae7a37b9816dcdbd49795a7a7972b4b4ca203
|
||||||
|
|
||||||
name: hledger
|
name: hledger
|
||||||
version: 1.10.99
|
version: 1.11
|
||||||
synopsis: Command-line interface for the hledger accounting tool
|
synopsis: Command-line interface for the hledger accounting tool
|
||||||
description: This is hledger's command-line interface.
|
description: This is hledger's command-line interface.
|
||||||
Its basic function is to read a plain text file describing
|
Its basic function is to read a plain text file describing
|
||||||
@ -111,7 +111,7 @@ library
|
|||||||
other-modules:
|
other-modules:
|
||||||
Paths_hledger
|
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
|
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:
|
build-depends:
|
||||||
Decimal
|
Decimal
|
||||||
, Diff
|
, Diff
|
||||||
@ -129,7 +129,7 @@ library
|
|||||||
, hashable >=1.2.4
|
, hashable >=1.2.4
|
||||||
, haskeline >=0.6
|
, haskeline >=0.6
|
||||||
, here
|
, here
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, lucid
|
, lucid
|
||||||
, megaparsec >=6.4.1
|
, megaparsec >=6.4.1
|
||||||
, mtl
|
, mtl
|
||||||
@ -164,7 +164,7 @@ executable hledger
|
|||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
app
|
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
|
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:
|
build-depends:
|
||||||
Decimal
|
Decimal
|
||||||
, ansi-terminal >=0.6.2.3
|
, ansi-terminal >=0.6.2.3
|
||||||
@ -181,7 +181,7 @@ executable hledger
|
|||||||
, haskeline >=0.6
|
, haskeline >=0.6
|
||||||
, here
|
, here
|
||||||
, hledger
|
, hledger
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, megaparsec >=6.4.1
|
, megaparsec >=6.4.1
|
||||||
, mtl
|
, mtl
|
||||||
, mtl-compat
|
, mtl-compat
|
||||||
@ -218,7 +218,7 @@ test-suite test
|
|||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
test
|
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
|
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:
|
build-depends:
|
||||||
Decimal
|
Decimal
|
||||||
, ansi-terminal >=0.6.2.3
|
, ansi-terminal >=0.6.2.3
|
||||||
@ -235,7 +235,7 @@ test-suite test
|
|||||||
, haskeline >=0.6
|
, haskeline >=0.6
|
||||||
, here
|
, here
|
||||||
, hledger
|
, hledger
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, megaparsec >=6.4.1
|
, megaparsec >=6.4.1
|
||||||
, mtl
|
, mtl
|
||||||
, mtl-compat
|
, mtl-compat
|
||||||
@ -289,7 +289,7 @@ benchmark bench
|
|||||||
, haskeline >=0.6
|
, haskeline >=0.6
|
||||||
, here
|
, here
|
||||||
, hledger
|
, hledger
|
||||||
, hledger-lib >=1.10.99 && <1.11
|
, hledger-lib >=1.11 && <1.12
|
||||||
, html
|
, html
|
||||||
, megaparsec >=6.4.1
|
, megaparsec >=6.4.1
|
||||||
, mtl
|
, mtl
|
||||||
|
|||||||
@ -912,6 +912,7 @@ detailed command help.
|
|||||||
* check-dates::
|
* check-dates::
|
||||||
* check-dupes::
|
* check-dupes::
|
||||||
* close::
|
* close::
|
||||||
|
* files::
|
||||||
* help::
|
* help::
|
||||||
* import::
|
* import::
|
||||||
* incomestatement::
|
* incomestatement::
|
||||||
@ -921,6 +922,7 @@ detailed command help.
|
|||||||
* register::
|
* register::
|
||||||
* register-match::
|
* register-match::
|
||||||
* rewrite::
|
* rewrite::
|
||||||
|
* roi::
|
||||||
* stats::
|
* stats::
|
||||||
* tags::
|
* tags::
|
||||||
* test::
|
* test::
|
||||||
@ -1757,7 +1759,7 @@ Report account names having the same leaf but different prefixes. An
|
|||||||
example: http://stefanorodighiero.net/software/hledger-dupes.html
|
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
|
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.
|
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.
|
Show any of the hledger manuals.
|
||||||
@ -1808,7 +1819,7 @@ DESCRIPTION
|
|||||||
|
|
||||||
File: hledger.info, Node: import, Next: incomestatement, Prev: help, Up: COMMANDS
|
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
|
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
|
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
|
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
|
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
|
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
|
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.
|
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
|
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.
|
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
|
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.
|
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
|
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.
|
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
|
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,
|
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.
|
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.
|
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.
|
Show some journal statistics.
|
||||||
@ -2243,7 +2263,7 @@ selection.
|
|||||||
|
|
||||||
File: hledger.info, Node: tags, Next: test, Prev: stats, Up: COMMANDS
|
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,
|
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
|
File: hledger.info, Node: test, Prev: tags, Up: COMMANDS
|
||||||
|
|
||||||
4.22 test
|
4.24 test
|
||||||
=========
|
=========
|
||||||
|
|
||||||
Run built-in unit tests.
|
Run built-in unit tests.
|
||||||
@ -2491,94 +2511,98 @@ Node: QUERIES26089
|
|||||||
Ref: #queries26191
|
Ref: #queries26191
|
||||||
Node: COMMANDS30153
|
Node: COMMANDS30153
|
||||||
Ref: #commands30265
|
Ref: #commands30265
|
||||||
Node: accounts31247
|
Node: accounts31265
|
||||||
Ref: #accounts31345
|
Ref: #accounts31363
|
||||||
Node: activity32591
|
Node: activity32609
|
||||||
Ref: #activity32701
|
Ref: #activity32719
|
||||||
Node: add33061
|
Node: add33079
|
||||||
Ref: #add33160
|
Ref: #add33178
|
||||||
Node: balance35821
|
Node: balance35839
|
||||||
Ref: #balance35932
|
Ref: #balance35950
|
||||||
Node: Classic balance report39015
|
Node: Classic balance report39033
|
||||||
Ref: #classic-balance-report39188
|
Ref: #classic-balance-report39206
|
||||||
Node: Customising the classic balance report40557
|
Node: Customising the classic balance report40575
|
||||||
Ref: #customising-the-classic-balance-report40785
|
Ref: #customising-the-classic-balance-report40803
|
||||||
Node: Colour support42859
|
Node: Colour support42877
|
||||||
Ref: #colour-support43026
|
Ref: #colour-support43044
|
||||||
Node: Flat mode43199
|
Node: Flat mode43217
|
||||||
Ref: #flat-mode43347
|
Ref: #flat-mode43365
|
||||||
Node: Depth limited balance reports43760
|
Node: Depth limited balance reports43778
|
||||||
Ref: #depth-limited-balance-reports43960
|
Ref: #depth-limited-balance-reports43978
|
||||||
Node: Multicolumn balance report44416
|
Node: Multicolumn balance report44434
|
||||||
Ref: #multicolumn-balance-report44614
|
Ref: #multicolumn-balance-report44632
|
||||||
Node: Budget report49794
|
Node: Budget report49812
|
||||||
Ref: #budget-report49937
|
Ref: #budget-report49955
|
||||||
Ref: #output-format-152971
|
Ref: #output-format-152989
|
||||||
Node: balancesheet53049
|
Node: balancesheet53067
|
||||||
Ref: #balancesheet53185
|
Ref: #balancesheet53203
|
||||||
Node: balancesheetequity55496
|
Node: balancesheetequity55514
|
||||||
Ref: #balancesheetequity55645
|
Ref: #balancesheetequity55663
|
||||||
Node: cashflow56182
|
Node: cashflow56200
|
||||||
Ref: #cashflow56310
|
Ref: #cashflow56328
|
||||||
Node: check-dates58433
|
Node: check-dates58451
|
||||||
Ref: #check-dates58560
|
Ref: #check-dates58578
|
||||||
Node: check-dupes58677
|
Node: check-dupes58695
|
||||||
Ref: #check-dupes58801
|
Ref: #check-dupes58819
|
||||||
Node: close58938
|
Node: close58956
|
||||||
Ref: #close59045
|
Ref: #close59064
|
||||||
Node: help59375
|
Node: files59394
|
||||||
Ref: #help59475
|
Ref: #files59495
|
||||||
Node: import60549
|
Node: help59636
|
||||||
Ref: #import60663
|
Ref: #help59736
|
||||||
Node: incomestatement61393
|
Node: import60810
|
||||||
Ref: #incomestatement61527
|
Ref: #import60924
|
||||||
Node: prices63931
|
Node: incomestatement61654
|
||||||
Ref: #prices64046
|
Ref: #incomestatement61788
|
||||||
Node: print64318
|
Node: prices64192
|
||||||
Ref: #print64428
|
Ref: #prices64307
|
||||||
Node: print-unique69322
|
Node: print64579
|
||||||
Ref: #print-unique69448
|
Ref: #print64689
|
||||||
Node: register69516
|
Node: print-unique69583
|
||||||
Ref: #register69643
|
Ref: #print-unique69709
|
||||||
Node: Custom register output74144
|
Node: register69777
|
||||||
Ref: #custom-register-output74273
|
Ref: #register69904
|
||||||
Node: register-match75503
|
Node: Custom register output74405
|
||||||
Ref: #register-match75637
|
Ref: #custom-register-output74534
|
||||||
Node: rewrite75820
|
Node: register-match75764
|
||||||
Ref: #rewrite75937
|
Ref: #register-match75898
|
||||||
Node: stats76006
|
Node: rewrite76081
|
||||||
Ref: #stats76109
|
Ref: #rewrite76196
|
||||||
Node: tags76979
|
Node: roi76265
|
||||||
Ref: #tags77077
|
Ref: #roi76363
|
||||||
Node: test77313
|
Node: stats76479
|
||||||
Ref: #test77397
|
Ref: #stats76578
|
||||||
Node: ADD-ON COMMANDS78105
|
Node: tags77448
|
||||||
Ref: #add-on-commands78215
|
Ref: #tags77546
|
||||||
Node: Official add-ons79502
|
Node: test77782
|
||||||
Ref: #official-add-ons79642
|
Ref: #test77866
|
||||||
Node: api79729
|
Node: ADD-ON COMMANDS78574
|
||||||
Ref: #api79818
|
Ref: #add-on-commands78684
|
||||||
Node: ui79870
|
Node: Official add-ons79971
|
||||||
Ref: #ui79969
|
Ref: #official-add-ons80111
|
||||||
Node: web80027
|
Node: api80198
|
||||||
Ref: #web80116
|
Ref: #api80287
|
||||||
Node: Third party add-ons80162
|
Node: ui80339
|
||||||
Ref: #third-party-add-ons80337
|
Ref: #ui80438
|
||||||
Node: diff80472
|
Node: web80496
|
||||||
Ref: #diff80569
|
Ref: #web80585
|
||||||
Node: iadd80668
|
Node: Third party add-ons80631
|
||||||
Ref: #iadd80782
|
Ref: #third-party-add-ons80806
|
||||||
Node: interest80865
|
Node: diff80941
|
||||||
Ref: #interest80986
|
Ref: #diff81038
|
||||||
Node: irr81081
|
Node: iadd81137
|
||||||
Ref: #irr81179
|
Ref: #iadd81251
|
||||||
Node: Experimental add-ons81257
|
Node: interest81334
|
||||||
Ref: #experimental-add-ons81409
|
Ref: #interest81455
|
||||||
Node: autosync81689
|
Node: irr81550
|
||||||
Ref: #autosync81800
|
Ref: #irr81648
|
||||||
Node: chart82039
|
Node: Experimental add-ons81726
|
||||||
Ref: #chart82158
|
Ref: #experimental-add-ons81878
|
||||||
Node: check82229
|
Node: autosync82158
|
||||||
Ref: #check82331
|
Ref: #autosync82269
|
||||||
|
Node: chart82508
|
||||||
|
Ref: #chart82627
|
||||||
|
Node: check82698
|
||||||
|
Ref: #check82800
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -1596,6 +1596,10 @@ COMMANDS
|
|||||||
a period. This was formerly called "equity", as in Ledger, and that
|
a period. This was formerly called "equity", as in Ledger, and that
|
||||||
alias is also accepted. See close -help for more.
|
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
|
help
|
||||||
Show any of the hledger manuals.
|
Show any of the hledger manuals.
|
||||||
|
|
||||||
@ -1978,6 +1982,10 @@ COMMANDS
|
|||||||
rewrite
|
rewrite
|
||||||
Print all transactions, adding custom postings to the matched ones.
|
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
|
stats
|
||||||
Show some journal statistics.
|
Show some journal statistics.
|
||||||
|
|
||||||
@ -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
|
name: hledger
|
||||||
version: '1.10.99'
|
version: '1.11'
|
||||||
synopsis: Command-line interface for the hledger accounting tool
|
synopsis: Command-line interface for the hledger accounting tool
|
||||||
description: |
|
description: |
|
||||||
This is hledger's command-line interface.
|
This is hledger's command-line interface.
|
||||||
@ -78,7 +78,7 @@ ghc-options:
|
|||||||
- -optP-Wno-nonportable-include-path
|
- -optP-Wno-nonportable-include-path
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- hledger-lib >=1.10.99 && <1.11
|
- hledger-lib >=1.11 && <1.12
|
||||||
- ansi-terminal >=0.6.2.3
|
- ansi-terminal >=0.6.2.3
|
||||||
- base >=4.8 && <4.12
|
- base >=4.8 && <4.12
|
||||||
- base-compat-batteries >=0.10.1 && <0.11
|
- base-compat-batteries >=0.10.1 && <0.11
|
||||||
@ -121,7 +121,7 @@ when:
|
|||||||
- terminfo
|
- terminfo
|
||||||
|
|
||||||
library:
|
library:
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
- Hledger.Cli
|
- Hledger.Cli
|
||||||
- Hledger.Cli.Main
|
- Hledger.Cli.Main
|
||||||
@ -163,7 +163,7 @@ executables:
|
|||||||
hledger:
|
hledger:
|
||||||
source-dirs: app
|
source-dirs: app
|
||||||
main: hledger-cli.hs
|
main: hledger-cli.hs
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
when:
|
when:
|
||||||
- condition: flag(threaded)
|
- condition: flag(threaded)
|
||||||
ghc-options: -threaded
|
ghc-options: -threaded
|
||||||
@ -174,7 +174,7 @@ tests:
|
|||||||
test:
|
test:
|
||||||
source-dirs: test
|
source-dirs: test
|
||||||
main: test.hs
|
main: test.hs
|
||||||
cpp-options: -DVERSION="1.10.99"
|
cpp-options: -DVERSION="1.11"
|
||||||
dependencies:
|
dependencies:
|
||||||
- hledger
|
- hledger
|
||||||
- test-framework
|
- 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:
|
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:
|
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*\
|
**`less hledger-install.sh`** *# do security review*\
|
||||||
**`bash hledger-install.sh`**
|
**`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:
|
Now you should be able to run the hledger tools and see the expected versions. Eg:
|
||||||
```shell
|
```shell
|
||||||
$ hledger --version
|
$ hledger --version
|
||||||
hledger 1.10
|
hledger 1.11
|
||||||
$ hledger-ui --version
|
$ hledger-ui --version
|
||||||
hledger-ui 1.10
|
hledger-ui 1.11
|
||||||
$ hledger web --version
|
$ hledger web --version
|
||||||
hledger-web 1.10
|
hledger-web 1.11
|
||||||
$ hledger iadd --version
|
$ hledger iadd --version
|
||||||
This is hledger-iadd version 1.3.5
|
This is hledger-iadd version 1.3.6
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Need help ?
|
#### 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).
|
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).
|
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.\
|
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>
|
<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> <!-- row -->
|
||||||
</div> <!-- container -->
|
</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;
|
var newpage = page=='manual' ? page : topic;
|
||||||
$('.docversions').html('Available versions: \
|
$('.docversions').html('Available versions: \
|
||||||
<a href="/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">dev</a> \
|
<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.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.9/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.9</a> \
|
||||||
| <a href="/doc/1.5/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.5</a> \
|
| <a href="/doc/1.5/'+newpage+'.html'+(page=='manual' ? newhash : '')+'">1.5</a> \
|
||||||
|
|||||||
@ -8,6 +8,7 @@ h4 { margin-top:2em; }
|
|||||||
<ol>
|
<ol>
|
||||||
<li><a href="#hledger-install">hledger-install</a>
|
<li><a href="#hledger-install">hledger-install</a>
|
||||||
<!-- <li><a href="#latest-minor-release">Latest (2018/4/30)</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.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.9">hledger 1.9 (2018/3/31)</a>
|
||||||
<li><a href="#hledger-1.5">hledger 1.5 (2017/12/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
|
## 2018/6/30 hledger 1.10
|
||||||
|
|
||||||
***hledger-web edit/upload/download and permissions,
|
***hledger-web edit/upload/download and permissions,
|
||||||
|
|||||||
@ -191,7 +191,7 @@ Balance Sheet 2017/01/01
|
|||||||
>>>2
|
>>>2
|
||||||
>>>=0
|
>>>=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
|
hledger -f- balancesheet -YTA
|
||||||
<<<
|
<<<
|
||||||
2017/1/1
|
2017/1/1
|
||||||
|
|||||||