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: | ||||||
| @ -873,14 +890,14 @@ FILE FORMAT | |||||||
|        o customising reports |        o customising reports | ||||||
| 
 | 
 | ||||||
|        Account aliases also rewrite account names in account directives.  They |        Account aliases also rewrite account names in account directives.  They | ||||||
|        do   not  affect  account  names  being  entered  via  hledger  add  or |        do  not  affect  account  names  being  entered  via  hledger  add   or | ||||||
|        hledger-web. |        hledger-web. | ||||||
| 
 | 
 | ||||||
|        See also Cookbook: Rewrite account names. |        See also Cookbook: Rewrite account names. | ||||||
| 
 | 
 | ||||||
|    Basic aliases |    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. | ||||||
|        This  affects all subsequent journal entries in the current file or its |        This affects all subsequent journal entries in the current file or  its | ||||||
|        included files.  The spaces around the = are optional: |        included files.  The spaces around the = are optional: | ||||||
| 
 | 
 | ||||||
|               alias OLD = NEW |               alias OLD = NEW | ||||||
| @ -888,54 +905,54 @@ FILE FORMAT | |||||||
|        Or, you can use the --alias 'OLD=NEW' option on the command line.  This |        Or, you can use the --alias 'OLD=NEW' option on the command line.  This | ||||||
|        affects all entries.  It's useful for trying out aliases interactively. |        affects all entries.  It's useful for trying out aliases interactively. | ||||||
| 
 | 
 | ||||||
|        OLD and NEW are  case  sensitive  full  account  names.   hledger  will |        OLD  and  NEW  are  case  sensitive  full  account names.  hledger will | ||||||
|        replace  any occurrence of the old account name with the new one.  Sub- |        replace any occurrence of the old account name with the new one.   Sub- | ||||||
|        accounts are also affected.  Eg: |        accounts are also affected.  Eg: | ||||||
| 
 | 
 | ||||||
|               alias checking = assets:bank:wells fargo:checking |               alias checking = assets:bank:wells fargo:checking | ||||||
|               # rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" |               # rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a" | ||||||
| 
 | 
 | ||||||
|    Regex aliases |    Regex aliases | ||||||
|        There is also a more powerful variant that uses a  regular  expression, |        There  is  also a more powerful variant that uses a regular expression, | ||||||
|        indicated by the forward slashes: |        indicated by the forward slashes: | ||||||
| 
 | 
 | ||||||
|               alias /REGEX/ = REPLACEMENT |               alias /REGEX/ = REPLACEMENT | ||||||
| 
 | 
 | ||||||
|        or --alias '/REGEX/=REPLACEMENT'. |        or --alias '/REGEX/=REPLACEMENT'. | ||||||
| 
 | 
 | ||||||
|        REGEX  is  a  case-insensitive regular expression.  Anywhere it matches |        REGEX is a case-insensitive regular expression.   Anywhere  it  matches | ||||||
|        inside an account name, the matched part will be replaced  by  REPLACE- |        inside  an  account name, the matched part will be replaced by REPLACE- | ||||||
|        MENT.   If REGEX contains parenthesised match groups, these can be ref- |        MENT.  If REGEX contains parenthesised match groups, these can be  ref- | ||||||
|        erenced by the usual numeric backreferences in REPLACEMENT.  Eg: |        erenced by the usual numeric backreferences in REPLACEMENT.  Eg: | ||||||
| 
 | 
 | ||||||
|               alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3 |               alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3 | ||||||
|               # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking" |               # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking" | ||||||
| 
 | 
 | ||||||
|        Also note that REPLACEMENT continues to the end of line (or on  command |        Also  note that REPLACEMENT continues to the end of line (or on command | ||||||
|        line,  to  end  of  option argument), so it can contain trailing white- |        line, to end of option argument), so it  can  contain  trailing  white- | ||||||
|        space. |        space. | ||||||
| 
 | 
 | ||||||
|    Multiple aliases |    Multiple aliases | ||||||
|        You can define as many aliases as you like  using  directives  or  com- |        You  can  define  as  many aliases as you like using directives or com- | ||||||
|        mand-line  options.  Aliases are recursive - each alias sees the result |        mand-line options.  Aliases are recursive - each alias sees the  result | ||||||
|        of applying previous ones.   (This  is  different  from  Ledger,  where |        of  applying  previous  ones.   (This  is  different from Ledger, where | ||||||
|        aliases are non-recursive by default).  Aliases are applied in the fol- |        aliases are non-recursive by default).  Aliases are applied in the fol- | ||||||
|        lowing order: |        lowing order: | ||||||
| 
 | 
 | ||||||
|        1. alias directives, most recently seen first (recent  directives  take |        1. alias  directives,  most recently seen first (recent directives take | ||||||
|           precedence over earlier ones; directives not yet seen are ignored) |           precedence over earlier ones; directives not yet seen are ignored) | ||||||
| 
 | 
 | ||||||
|        2. alias options, in the order they appear on the command line |        2. alias options, in the order they appear on the command line | ||||||
| 
 | 
 | ||||||
|    end aliases |    end aliases | ||||||
|        You   can  clear  (forget)  all  currently  defined  aliases  with  the |        You  can  clear  (forget)  all  currently  defined  aliases  with   the | ||||||
|        end aliases directive: |        end aliases directive: | ||||||
| 
 | 
 | ||||||
|               end aliases |               end aliases | ||||||
| 
 | 
 | ||||||
|    Default parent account |    Default parent account | ||||||
|        You can specify a  parent  account  which  will  be  prepended  to  all |        You  can  specify  a  parent  account  which  will  be prepended to all | ||||||
|        accounts  within  a  section of the journal.  Use the apply account and |        accounts within a section of the journal.  Use  the  apply account  and | ||||||
|        end apply account directives like so: |        end apply account directives like so: | ||||||
| 
 | 
 | ||||||
|               apply account home |               apply account home | ||||||
| @ -952,7 +969,7 @@ FILE FORMAT | |||||||
|                   home:food           $10 |                   home:food           $10 | ||||||
|                   home:cash          $-10 |                   home:cash          $-10 | ||||||
| 
 | 
 | ||||||
|        If end apply account is omitted, the effect lasts to  the  end  of  the |        If  end apply account  is  omitted,  the effect lasts to the end of the | ||||||
|        file.  Included files are also affected, eg: |        file.  Included files are also affected, eg: | ||||||
| 
 | 
 | ||||||
|               apply account business |               apply account business | ||||||
| @ -961,18 +978,18 @@ FILE FORMAT | |||||||
|               apply account personal |               apply account personal | ||||||
|               include personal.journal |               include personal.journal | ||||||
| 
 | 
 | ||||||
|        Prior  to  hledger 1.0, legacy account and end spellings were also sup- |        Prior to hledger 1.0, legacy account and end spellings were  also  sup- | ||||||
|        ported. |        ported. | ||||||
| 
 | 
 | ||||||
|        A default parent account also affects account directives.  It does  not |        A  default parent account also affects account directives.  It does not | ||||||
|        affect  account names being entered via hledger add or hledger-web.  If |        affect account names being entered via hledger add or hledger-web.   If | ||||||
|        account aliases are present, they are applied after the default  parent |        account  aliases are present, they are applied after the default parent | ||||||
|        account. |        account. | ||||||
| 
 | 
 | ||||||
|    Periodic transactions |    Periodic transactions | ||||||
|        Periodic  transaction  rules  describe  transactions  that recur.  They |        Periodic transaction rules  describe  transactions  that  recur.   They | ||||||
|        allow you to generate future transactions for forecasting, without hav- |        allow you to generate future transactions for forecasting, without hav- | ||||||
|        ing  to  write  them  out  explicitly in the journal (with --forecast). |        ing to write them out explicitly  in  the  journal  (with  --forecast). | ||||||
|        Secondly, they also can be used to define budget goals (with --budget). |        Secondly, they also can be used to define budget goals (with --budget). | ||||||
| 
 | 
 | ||||||
|        A periodic transaction rule looks like a normal journal entry, with the |        A periodic transaction rule looks like a normal journal entry, with the | ||||||
| @ -983,8 +1000,8 @@ FILE FORMAT | |||||||
|                   expenses:rent          $2000 |                   expenses:rent          $2000 | ||||||
|                   assets:bank:checking |                   assets:bank:checking | ||||||
| 
 | 
 | ||||||
|        There  is  an additional constraint on the period expression: the start |        There is an additional constraint on the period expression:  the  start | ||||||
|        date  must  fall  on  a  natural  boundary   of   the   interval.    Eg |        date   must   fall   on   a  natural  boundary  of  the  interval.   Eg | ||||||
|        monthly from 2018/1/1 is valid, but monthly from 2018/1/15 is not. |        monthly from 2018/1/1 is valid, but monthly from 2018/1/15 is not. | ||||||
| 
 | 
 | ||||||
|        If you write a transaction description or same-line comment, it must be |        If you write a transaction description or same-line comment, it must be | ||||||
| @ -998,77 +1015,77 @@ FILE FORMAT | |||||||
|                   income:acme inc |                   income:acme inc | ||||||
| 
 | 
 | ||||||
|    Forecasting with periodic transactions |    Forecasting with periodic transactions | ||||||
|        With the --forecast flag,  each  periodic  transaction  rule  generates |        With  the  --forecast  flag,  each  periodic transaction rule generates | ||||||
|        future transactions recurring at the specified interval.  These are not |        future transactions recurring at the specified interval.  These are not | ||||||
|        saved in the journal, but appear in all reports.  They will  look  like |        saved  in  the journal, but appear in all reports.  They will look like | ||||||
|        normal  transactions, but with an extra tag named recur, whose value is |        normal transactions, but with an extra tag named recur, whose value  is | ||||||
|        the generating period expression. |        the generating period expression. | ||||||
| 
 | 
 | ||||||
|        Forecast transactions start on the first occurrence,  and  end  on  the |        Forecast  transactions  start  on  the first occurrence, and end on the | ||||||
|        last  occurrence,  of  their  interval within the forecast period.  The |        last occurrence, of their interval within  the  forecast  period.   The | ||||||
|        forecast period: |        forecast period: | ||||||
| 
 | 
 | ||||||
|        o begins on the later of |        o begins on the later of | ||||||
| 
 | 
 | ||||||
|          o the report start date if specified with -b/-p/date: |          o the report start date if specified with -b/-p/date: | ||||||
| 
 | 
 | ||||||
|          o the day after the latest normal (non-periodic) transaction  in  the |          o the  day  after the latest normal (non-periodic) transaction in the | ||||||
|            journal, or today if there are no normal transactions. |            journal, or today if there are no normal transactions. | ||||||
| 
 | 
 | ||||||
|        o ends  on  the  report  end date if specified with -e/-p/date:, or 180 |        o ends on the report end date if specified  with  -e/-p/date:,  or  180 | ||||||
|          days from today. |          days from today. | ||||||
| 
 | 
 | ||||||
|        where "today" means the current date at report time.   The  "later  of" |        where  "today"  means  the current date at report time.  The "later of" | ||||||
|        rule  ensures that forecast transactions do not overlap normal transac- |        rule ensures that forecast transactions do not overlap normal  transac- | ||||||
|        tions in time; they will begin only after normal transactions end. |        tions in time; they will begin only after normal transactions end. | ||||||
| 
 | 
 | ||||||
|        Forecasting can be useful for estimating balances into the future,  and |        Forecasting  can be useful for estimating balances into the future, and | ||||||
|        experimenting  with  different  scenarios.   Note  the start date logic |        experimenting with different scenarios.   Note  the  start  date  logic | ||||||
|        means that forecasted transactions are automatically replaced by normal |        means that forecasted transactions are automatically replaced by normal | ||||||
|        transactions as you add those. |        transactions as you add those. | ||||||
| 
 | 
 | ||||||
|        Forecasting can also help with data entry: describe most of your trans- |        Forecasting can also help with data entry: describe most of your trans- | ||||||
|        actions with periodic rules, and every so  often  copy  the  output  of |        actions  with  periodic  rules,  and  every so often copy the output of | ||||||
|        print --forecast to the journal. |        print --forecast to the journal. | ||||||
| 
 | 
 | ||||||
|        You can generate one-time transactions too: just write a period expres- |        You can generate one-time transactions too: just write a period expres- | ||||||
|        sion specifying a date with no report interval.  (You could also  write |        sion  specifying a date with no report interval.  (You could also write | ||||||
|        a  normal  transaction  with  a future date, but remember this disables |        a normal transaction with a future date,  but  remember  this  disables | ||||||
|        forecast transactions on previous dates.) |        forecast transactions on previous dates.) | ||||||
| 
 | 
 | ||||||
|    Budgeting with periodic transactions |    Budgeting with periodic transactions | ||||||
|        With the --budget flag, currently supported  by  the  balance  command, |        With  the  --budget  flag,  currently supported by the balance command, | ||||||
|        each  periodic transaction rule declares recurring budget goals for the |        each periodic transaction rule declares recurring budget goals for  the | ||||||
|        specified accounts.  Eg the first example  above  declares  a  goal  of |        specified  accounts.   Eg  the  first  example above declares a goal of | ||||||
|        spending  $2000  on  rent  (and  also,  a goal of depositing $2000 into |        spending $2000 on rent (and also,  a  goal  of  depositing  $2000  into | ||||||
|        checking) every month.  Goals and actual performance can then  be  com- |        checking)  every  month.  Goals and actual performance can then be com- | ||||||
|        pared in budget reports. |        pared in budget reports. | ||||||
| 
 | 
 | ||||||
|        For  more  details, see: balance: Budget report and Cookbook: Budgeting |        For more details, see: balance: Budget report and  Cookbook:  Budgeting | ||||||
|        and Forecasting. |        and Forecasting. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|    Transaction Modifiers |    Transaction Modifiers | ||||||
|        Transaction modifier rules describe  changes  that  should  be  applied |        Transaction  modifier  rules  describe  changes  that should be applied | ||||||
|        automatically  to  certain  transactions.  Currently, this means adding |        automatically to certain transactions.  Currently,  this  means  adding | ||||||
|        extra postings (also known as "automated postings").  Transaction modi- |        extra postings (also known as "automated postings").  Transaction modi- | ||||||
|        fiers are enabled by the --auto flag. |        fiers are enabled by the --auto flag. | ||||||
| 
 | 
 | ||||||
|        A  transaction  modifier  rule looks a bit like a normal journal entry, |        A transaction modifier rule looks a bit like a  normal  journal  entry, | ||||||
|        except the first line  is  an  equal  sign  (=)  followed  by  a  query |        except  the  first  line  is  an  equal  sign  (=)  followed by a query | ||||||
|        (mnemonic: = suggests matching something.): |        (mnemonic: = suggests matching something.): | ||||||
| 
 | 
 | ||||||
|               = expenses:gifts |               = expenses:gifts | ||||||
|                   budget:gifts  *-1 |                   budget:gifts  *-1 | ||||||
|                   assets:budget  *1 |                   assets:budget  *1 | ||||||
| 
 | 
 | ||||||
|        The  posting  amounts can be of the form *N, which means "the amount of |        The posting amounts can be of the form *N, which means "the  amount  of | ||||||
|        the matched transaction's first posting, multiplied by  N".   They  can |        the  matched  transaction's  first posting, multiplied by N".  They can | ||||||
|        also be ordinary fixed amounts.  Fixed amounts with no commodity symbol |        also be ordinary fixed amounts.  Fixed amounts with no commodity symbol | ||||||
|        will be given the same commodity as  the  matched  transaction's  first |        will  be  given  the  same commodity as the matched transaction's first | ||||||
|        posting. |        posting. | ||||||
| 
 | 
 | ||||||
|        This  example adds a corresponding (unbalanced) budget posting to every |        This example adds a corresponding (unbalanced) budget posting to  every | ||||||
|        transaction involving the expenses:gifts account: |        transaction involving the expenses:gifts account: | ||||||
| 
 | 
 | ||||||
|               = expenses:gifts |               = expenses:gifts | ||||||
| @ -1084,16 +1101,16 @@ FILE FORMAT | |||||||
|                   (budget:gifts)            $-20 |                   (budget:gifts)            $-20 | ||||||
|                   assets |                   assets | ||||||
| 
 | 
 | ||||||
|        Like postings recorded  by  hand,  automated  postings  participate  in |        Like  postings  recorded  by  hand,  automated  postings participate in | ||||||
|        transaction balancing, missing amount inference and balance assertions. |        transaction balancing, missing amount inference and balance assertions. | ||||||
| 
 | 
 | ||||||
| EDITOR SUPPORT | EDITOR SUPPORT | ||||||
|        Add-on modes exist for various text editors, to make working with jour- |        Add-on modes exist for various text editors, to make working with jour- | ||||||
|        nal  files  easier.   They add colour, navigation aids and helpful com- |        nal files easier.  They add colour, navigation aids  and  helpful  com- | ||||||
|        mands.  For hledger users who  edit  the  journal  file  directly  (the |        mands.   For  hledger  users  who  edit  the journal file directly (the | ||||||
|        majority), using one of these modes is quite recommended. |        majority), using one of these modes is quite recommended. | ||||||
| 
 | 
 | ||||||
|        These  were  written  with  Ledger  in mind, but also work with hledger |        These were written with Ledger in mind,  but  also  work  with  hledger | ||||||
|        files: |        files: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -1112,7 +1129,7 @@ EDITOR SUPPORT | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| REPORTING BUGS | REPORTING BUGS | ||||||
|        Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel |        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel | ||||||
|        or hledger mail list) |        or hledger mail list) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -1126,7 +1143,7 @@ COPYRIGHT | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| SEE ALSO | SEE ALSO | ||||||
|        hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1), |        hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1), | ||||||
|        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- |        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- | ||||||
|        dot(5), ledger(1) |        dot(5), ledger(1) | ||||||
| 
 | 
 | ||||||
| @ -1134,4 +1151,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.10.99                    July 2018                hledger_journal(5) | hledger 1.10.99                 September 2018              hledger_journal(5) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_timeclock" "5" "July 2018" "hledger 1.10.99" "hledger User Manuals" | .TH "hledger_timeclock" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -77,4 +77,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.10.99                    July 2018              hledger_timeclock(5) | hledger 1.10.99                 September 2018            hledger_timeclock(5) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_timedot" "5" "July 2018" "hledger 1.10.99" "hledger User Manuals" | .TH "hledger_timedot" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -124,4 +124,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.10.99                    July 2018                hledger_timedot(5) | hledger 1.10.99                 September 2018              hledger_timedot(5) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| name: hledger-lib | 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,11 +1982,15 @@ 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. | ||||||
| 
 | 
 | ||||||
|        -o FILE --output-file=FILE |        -o FILE --output-file=FILE | ||||||
|               write  output  to  FILE.   A  file extension matching one of the |               write output to FILE.  A file  extension  matching  one  of  the | ||||||
|               above formats selects that format. |               above formats selects that format. | ||||||
| 
 | 
 | ||||||
|               $ hledger stats |               $ hledger stats | ||||||
| @ -1997,61 +2005,61 @@ COMMANDS | |||||||
|               Accounts                 : 8 (depth 3) |               Accounts                 : 8 (depth 3) | ||||||
|               Commodities              : 1 ($) |               Commodities              : 1 ($) | ||||||
| 
 | 
 | ||||||
|        The stats command displays summary information for the  whole  journal, |        The  stats  command displays summary information for the whole journal, | ||||||
|        or  a matched part of it.  With a reporting interval, it shows a report |        or a matched part of it.  With a reporting interval, it shows a  report | ||||||
|        for each report period. |        for each report period. | ||||||
| 
 | 
 | ||||||
|        This command also supports output destination and output format  selec- |        This  command also supports output destination and output format selec- | ||||||
|        tion. |        tion. | ||||||
| 
 | 
 | ||||||
|    tags |    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, | ||||||
|        only tag names matching the regular expression (case  insensitive)  are |        only  tag  names matching the regular expression (case insensitive) are | ||||||
|        shown.  With additional QUERY arguments, only transactions matching the |        shown.  With additional QUERY arguments, only transactions matching the | ||||||
|        query are considered. |        query are considered. | ||||||
| 
 | 
 | ||||||
|    test |    test | ||||||
|        Run built-in unit tests. |        Run built-in unit tests. | ||||||
| 
 | 
 | ||||||
|        Prints test names and their results on stdout.  If any  test  fails  or |        Prints  test  names  and their results on stdout.  If any test fails or | ||||||
|        gives an error, the exit code will be non-zero. |        gives an error, the exit code will be non-zero. | ||||||
| 
 | 
 | ||||||
|        Test  names include a group prefix.  If a (exact, case sensitive) group |        Test names include a group prefix.  If a (exact, case sensitive)  group | ||||||
|        prefix, or a full test name is provided as  the  first  argument,  only |        prefix,  or  a  full  test name is provided as the first argument, only | ||||||
|        that group or test is run. |        that group or test is run. | ||||||
| 
 | 
 | ||||||
|        If  a  numeric  second argument is provided, it will set the randomness |        If a numeric second argument is provided, it will  set  the  randomness | ||||||
|        seed, for repeatable results from  tests  using  randomness  (currently |        seed,  for  repeatable  results  from tests using randomness (currently | ||||||
|        none of them). |        none of them). | ||||||
| 
 | 
 | ||||||
|        This  is  mainly  used  by developers, but it's nice to be able to san- |        This is mainly used by developers, but it's nice to  be  able  to  san- | ||||||
|        ity-check your installed hledger executable at any time.  All tests are |        ity-check your installed hledger executable at any time.  All tests are | ||||||
|        expected to pass - if you ever see otherwise, something has gone wrong, |        expected to pass - if you ever see otherwise, something has gone wrong, | ||||||
|        please report a bug! |        please report a bug! | ||||||
| 
 | 
 | ||||||
| ADD-ON COMMANDS | ADD-ON COMMANDS | ||||||
|        hledger also searches for external add-on commands,  and  will  include |        hledger  also  searches  for external add-on commands, and will include | ||||||
|        these in the commands list.  These are programs or scripts in your PATH |        these in the commands list.  These are programs or scripts in your PATH | ||||||
|        whose name starts with hledger- and ends with a recognised file  exten- |        whose  name starts with hledger- and ends with a recognised file exten- | ||||||
|        sion (currently: no extension, bat,com,exe, hs,lhs,pl,py,rb,rkt,sh). |        sion (currently: no extension, bat,com,exe, hs,lhs,pl,py,rb,rkt,sh). | ||||||
| 
 | 
 | ||||||
|        Add-ons  can  be  invoked like any hledger command, but there are a few |        Add-ons can be invoked like any hledger command, but there  are  a  few | ||||||
|        things to be aware of.  Eg if the hledger-web add-on is installed, |        things to be aware of.  Eg if the hledger-web add-on is installed, | ||||||
| 
 | 
 | ||||||
|        o hledger -h web  shows  hledger's  help,  while  hledger web -h  shows |        o hledger -h web  shows  hledger's  help,  while  hledger web -h  shows | ||||||
|          hledger-web's help. |          hledger-web's help. | ||||||
| 
 | 
 | ||||||
|        o Flags  specific  to  the add-on must have a preceding -- to hide them |        o Flags specific to the add-on must have a preceding --  to  hide  them | ||||||
|          from hledger.  So hledger web --serve --port 9000 will  be  rejected; |          from  hledger.   So hledger web --serve --port 9000 will be rejected; | ||||||
|          you must use hledger web -- --serve --port 9000. |          you must use hledger web -- --serve --port 9000. | ||||||
| 
 | 
 | ||||||
|        o You    can    always    run    add-ons    directly    if   preferred: |        o You   can    always    run    add-ons    directly    if    preferred: | ||||||
|          hledger-web --serve --port 9000. |          hledger-web --serve --port 9000. | ||||||
| 
 | 
 | ||||||
|        Add-ons are a relatively easy way to add local features  or  experiment |        Add-ons  are  a relatively easy way to add local features or experiment | ||||||
|        with  new  ideas.   They  can  be  written in any language, but haskell |        with new ideas.  They can be  written  in  any  language,  but  haskell | ||||||
|        scripts have a big advantage:  they  can  use  the  same  hledger  (and |        scripts  have  a  big  advantage:  they  can  use the same hledger (and | ||||||
|        haskell)  library functions that built-in commands do, for command-line |        haskell) library functions that built-in commands do, for  command-line | ||||||
|        options, journal parsing, reporting, etc. |        options, journal parsing, reporting, etc. | ||||||
| 
 | 
 | ||||||
|        Here are some hledger add-ons available: |        Here are some hledger add-ons available: | ||||||
| @ -2069,7 +2077,7 @@ ADD-ON COMMANDS | |||||||
|        hledger-web provides a simple web interface. |        hledger-web provides a simple web interface. | ||||||
| 
 | 
 | ||||||
|    Third party add-ons |    Third party add-ons | ||||||
|        These are maintained separately, and usually updated  shortly  after  a |        These  are  maintained  separately, and usually updated shortly after a | ||||||
|        hledger release. |        hledger release. | ||||||
| 
 | 
 | ||||||
|    diff |    diff | ||||||
| @ -2077,7 +2085,7 @@ ADD-ON COMMANDS | |||||||
|        journal file and another. |        journal file and another. | ||||||
| 
 | 
 | ||||||
|    iadd |    iadd | ||||||
|        hledger-iadd is a curses-style, more interactive  replacement  for  the |        hledger-iadd  is  a  curses-style, more interactive replacement for the | ||||||
|        add command. |        add command. | ||||||
| 
 | 
 | ||||||
|    interest |    interest | ||||||
| @ -2085,19 +2093,19 @@ ADD-ON COMMANDS | |||||||
|        ing to various schemes. |        ing to various schemes. | ||||||
| 
 | 
 | ||||||
|    irr |    irr | ||||||
|        hledger-irr calculates the internal rate of  return  of  an  investment |        hledger-irr  calculates  the  internal  rate of return of an investment | ||||||
|        account. |        account. | ||||||
| 
 | 
 | ||||||
|    Experimental add-ons |    Experimental add-ons | ||||||
|        These  are  available  in source form in the hledger repo's bin/ direc- |        These are available in source form in the hledger  repo's  bin/  direc- | ||||||
|        tory; installing them is pretty easy.  They may be less mature and doc- |        tory; installing them is pretty easy.  They may be less mature and doc- | ||||||
|        umented  than  built-in commands.  Reading and tweaking these is a good |        umented than built-in commands.  Reading and tweaking these is  a  good | ||||||
|        way to start making your own! |        way to start making your own! | ||||||
| 
 | 
 | ||||||
|    autosync |    autosync | ||||||
|        hledger-autosync is a symbolic link for easily running ledger-autosync, |        hledger-autosync is a symbolic link for easily running ledger-autosync, | ||||||
|        if  installed.   ledger-autosync  does  deduplicating conversion of OFX |        if installed.  ledger-autosync does  deduplicating  conversion  of  OFX | ||||||
|        data and some CSV formats, and can also download the data if your  bank |        data  and some CSV formats, and can also download the data if your bank | ||||||
|        offers OFX Direct Connect. |        offers OFX Direct Connect. | ||||||
| 
 | 
 | ||||||
|    chart |    chart | ||||||
| @ -2107,21 +2115,21 @@ ADD-ON COMMANDS | |||||||
|        hledger-check.hs checks more powerful account balance assertions. |        hledger-check.hs checks more powerful account balance assertions. | ||||||
| 
 | 
 | ||||||
| ENVIRONMENT | ENVIRONMENT | ||||||
|        COLUMNS  The  screen  width used by the register command.  Default: the |        COLUMNS The screen width used by the register  command.   Default:  the | ||||||
|        full terminal width. |        full terminal width. | ||||||
| 
 | 
 | ||||||
|        LEDGER_FILE The journal file path when not specified with -f.  Default: |        LEDGER_FILE The journal file path when not specified with -f.  Default: | ||||||
|        ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour- |        ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour- | ||||||
|        nal). |        nal). | ||||||
| 
 | 
 | ||||||
| FILES | FILES | ||||||
|        Reads data from one or more files in hledger journal, timeclock,  time- |        Reads  data from one or more files in hledger journal, timeclock, time- | ||||||
|        dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or |        dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or | ||||||
|        $HOME/.hledger.journal          (on          windows,           perhaps |        $HOME/.hledger.journal           (on          windows,          perhaps | ||||||
|        C:/Users/USER/.hledger.journal). |        C:/Users/USER/.hledger.journal). | ||||||
| 
 | 
 | ||||||
| BUGS | BUGS | ||||||
|        The  need  to  precede  addon command options with -- when invoked from |        The need to precede addon command options with  --  when  invoked  from | ||||||
|        hledger is awkward. |        hledger is awkward. | ||||||
| 
 | 
 | ||||||
|        When input data contains non-ascii characters, a suitable system locale |        When input data contains non-ascii characters, a suitable system locale | ||||||
| @ -2134,33 +2142,33 @@ BUGS | |||||||
|        In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger |        In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger | ||||||
|        add. |        add. | ||||||
| 
 | 
 | ||||||
|        Not all of Ledger's journal file syntax is supported.  See file  format |        Not  all of Ledger's journal file syntax is supported.  See file format | ||||||
|        differences. |        differences. | ||||||
| 
 | 
 | ||||||
|        On  large  data  files,  hledger  is  slower  and uses more memory than |        On large data files, hledger  is  slower  and  uses  more  memory  than | ||||||
|        Ledger. |        Ledger. | ||||||
| 
 | 
 | ||||||
| TROUBLESHOOTING | TROUBLESHOOTING | ||||||
|        Here are some issues you might encounter  when  you  run  hledger  (and |        Here  are  some  issues  you  might encounter when you run hledger (and | ||||||
|        remember  you can also seek help from the IRC channel, mail list or bug |        remember you can also seek help from the IRC channel, mail list or  bug | ||||||
|        tracker): |        tracker): | ||||||
| 
 | 
 | ||||||
|        Successfully installed, but "No command `hledger' found" |        Successfully installed, but "No command `hledger' found" | ||||||
|        stack and cabal install binaries into a special directory, which should |        stack and cabal install binaries into a special directory, which should | ||||||
|        be  added  to your PATH environment variable.  Eg on unix-like systems, |        be added to your PATH environment variable.  Eg on  unix-like  systems, | ||||||
|        that is ~/.local/bin and ~/.cabal/bin respectively. |        that is ~/.local/bin and ~/.cabal/bin respectively. | ||||||
| 
 | 
 | ||||||
|        I set a custom LEDGER_FILE, but hledger is still using the default file |        I set a custom LEDGER_FILE, but hledger is still using the default file | ||||||
|        LEDGER_FILE  should  be  a  real environment variable, not just a shell |        LEDGER_FILE should be a real environment variable,  not  just  a  shell | ||||||
|        variable.  The command env | grep LEDGER_FILE should show it.  You  may |        variable.   The command env | grep LEDGER_FILE should show it.  You may | ||||||
|        need to use export.  Here's an explanation. |        need to use export.  Here's an explanation. | ||||||
| 
 | 
 | ||||||
|        "Illegal  byte  sequence"  or  "Invalid or incomplete multibyte or wide |        "Illegal byte sequence" or "Invalid or  incomplete  multibyte  or  wide | ||||||
|        character" errors |        character" errors | ||||||
|        In order to handle non-ascii letters and symbols (like ), hledger needs |        In order to handle non-ascii letters and symbols (like ), hledger needs | ||||||
|        an appropriate locale.  This is usually configured system-wide; you can |        an appropriate locale.  This is usually configured system-wide; you can | ||||||
|        also configure it temporarily.  The locale may need to be one that sup- |        also configure it temporarily.  The locale may need to be one that sup- | ||||||
|        ports  UTF-8,  if you built hledger with GHC < 7.2 (or possibly always, |        ports UTF-8, if you built hledger with GHC < 7.2 (or  possibly  always, | ||||||
|        I'm not sure yet). |        I'm not sure yet). | ||||||
| 
 | 
 | ||||||
|        Here's  an  example  of  setting  the  locale  temporarily,  on  ubuntu |        Here's  an  example  of  setting  the  locale  temporarily,  on  ubuntu | ||||||
| @ -2179,7 +2187,7 @@ TROUBLESHOOTING | |||||||
|               $ echo "export LANG=en_US.UTF-8" >>~/.bash_profile |               $ echo "export LANG=en_US.UTF-8" >>~/.bash_profile | ||||||
|               $ bash --login |               $ bash --login | ||||||
| 
 | 
 | ||||||
|        If  we  preferred  to  use eg fr_FR.utf8, we might have to install that |        If we preferred to use eg fr_FR.utf8, we might  have  to  install  that | ||||||
|        first: |        first: | ||||||
| 
 | 
 | ||||||
|               $ apt-get install language-pack-fr |               $ apt-get install language-pack-fr | ||||||
| @ -2200,7 +2208,7 @@ TROUBLESHOOTING | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| REPORTING BUGS | REPORTING BUGS | ||||||
|        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel |        Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel | ||||||
|        or hledger mail list) |        or hledger mail list) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -2214,7 +2222,7 @@ COPYRIGHT | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| SEE ALSO | SEE ALSO | ||||||
|        hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1), |        hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1), | ||||||
|        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- |        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- | ||||||
|        dot(5), ledger(1) |        dot(5), ledger(1) | ||||||
| 
 | 
 | ||||||
| @ -2222,4 +2230,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.10.99                    July 2018                        hledger(1) | hledger 1.10.99                 September 2018                      hledger(1) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| name: hledger | 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 | ||||||
|  | |||||||