Merge branch 'master' into ExceptTLayer

This commit is contained in:
Alex Chen 2018-10-09 11:19:45 -06:00
commit 2cbc41e088
67 changed files with 815 additions and 624 deletions

View File

@ -41,10 +41,13 @@ install:
#- dir #- dir
# install latest stack release # install latest stack release
# - curl -skL -ostack.zip http://www.stackage.org/stack/windows-x86_64 #- curl -skL -ostack.zip http://www.stackage.org/stack/windows-x86_64
# - 7z x stack.zip stack.exe #- 7z x stack.zip stack.exe
# - copy stack.exe stack-release.exe
# - stack --version # install latest stack prerelease
- curl -skLO https://github.com/commercialhaskell/stack/releases/download/v1.9.0.1/stack-1.9.0.1-windows-x86_64.tar.gz
- 7z x stack-1.9.0.1-windows-x86_64.tar.gz -so | 7z e -si -ttar stack-1.9.0.1-windows-x86_64/stack.exe -aoa
- stack --version
# install latest stack 4125-cabal-style-build-tools branch # install latest stack 4125-cabal-style-build-tools branch
# - set PATH=C:\Users\appveyor\AppData\Roaming\local\bin;%PATH% # - set PATH=C:\Users\appveyor\AppData\Roaming\local\bin;%PATH%
@ -53,24 +56,25 @@ install:
# - copy C:\Users\appveyor\AppData\Roaming\local\bin\stack.exe stack.exe # - copy C:\Users\appveyor\AppData\Roaming\local\bin\stack.exe stack.exe
# install latest stack master # install latest stack master
- set PATH=C:\Users\appveyor\AppData\Roaming\local\bin;%PATH% #- set PATH=C:\Users\appveyor\AppData\Roaming\local\bin;%PATH%
# show the stack-installed binares that were restored from cache, can vary by instance # show the stack-installed binares that were restored from cache, can vary by instance
- dir C:\Users\appveyor\AppData\Roaming\local\bin #- dir C:\Users\appveyor\AppData\Roaming\local\bin
# - stack-release upgrade --git # - stack-release upgrade --git
#- copy C:\Users\appveyor\AppData\Roaming\local\bin\stack.exe C:\Users\appveyor\AppData\Roaming\local\bin\stack-master.exe #- copy C:\Users\appveyor\AppData\Roaming\local\bin\stack.exe C:\Users\appveyor\AppData\Roaming\local\bin\stack-master.exe
# - copy C:\Users\appveyor\AppData\Roaming\local\bin\stack.exe stack.exe # - copy C:\Users\appveyor\AppData\Roaming\local\bin\stack.exe stack.exe
- stack --version #- stack --version
#- dir #- dir
# #
# install ghc # install ghc
#- stack setup #- stack setup
# use ghc 8.2 to avoid a hledger-web -> network/stack build issue on windows, # use ghc 8.2 to avoid hledger-web -> network/stack/ghc/windows build issue
# network 2.7.0.1 should work around it when released
# https://github.com/haskell/network/issues/313 # https://github.com/haskell/network/issues/313
# https://github.com/commercialhaskell/stack/issues/3944 # https://github.com/commercialhaskell/stack/issues/3944
- stack --stack-yaml=stack-ghc8.2.yaml setup # network 2.7.0.1 is supposed to work around it
- stack setup --stack-yaml=stack-ghc8.2.yaml
#- stack setup
#- set PATH=C:\Users\appveyor\AppData\Roaming\local\bin;%PATH% #- set PATH=C:\Users\appveyor\AppData\Roaming\local\bin;%PATH%
#- stack install shelltestrunner #- stack install shelltestrunner
@ -79,9 +83,13 @@ install:
# hledger-ui's vty dep isn't available on windows # hledger-ui's vty dep isn't available on windows
# hledger-api not tried recently # hledger-api not tried recently
build_script: build_script:
#- stack build --test --copy-bins --local-bin-path=. hledger hledger-web # use network 2.7.0.1+ to avoid https://github.com/haskell/network/issues/313
- stack build --test --copy-bins --local-bin-path=. hledger hledger-web --stack-yaml=stack-ghc8.2.yaml #- stack build --test --copy-bins --local-bin-path=. hledger hledger-web network-2.7.0.2
# use ghc 8.2 to avoid hledger-web -> network/stack/ghc/windows build issue
# don't run test suites to avoid easytest/windows utf8 issue
- stack build --copy-bins --local-bin-path=. hledger hledger-web --stack-yaml=stack-ghc8.2.yaml
- 7z a -tzip hledger.zip hledger.exe hledger-web.exe - 7z a -tzip hledger.zip hledger.exe hledger-web.exe
#- hledger-install/hledger-install.sh #- hledger-install/hledger-install.sh
#- make stacktest #- make stacktest

View File

@ -1 +1 @@
1.11 1.11.99

View File

@ -138,7 +138,7 @@ main = do
webmanpages = ["site" </> manpageNameToUri m <.> "md" | m <- manpageNames] webmanpages = ["site" </> manpageNameToUri m <.> "md" | m <- manpageNames]
-- versions of documentation (excluding 0.27) -- versions of documentation (excluding 0.27)
docversions = [ "1.0" , "1.1" , "1.2" , "1.3" , "1.4" , "1.5" , "1.9", "1.10" ] docversions = [ "1.0" , "1.1" , "1.2" , "1.3" , "1.4" , "1.5" , "1.9", "1.10", "1.11" ]
-- manuals rendered to html by pandoc -- manuals rendered to html by pandoc
webhtmlpages webhtmlpages

View File

@ -1,73 +1,65 @@
hledger (http://hledger.org) is a friendly, robust, cross-platform hledger is a robust, cross-platform "plain text accounting" tool, for
program for tracking money, time or other commodities, using tracking money, time, stocks, cryptocurrencies or any other commodity,
double-entry accounting, simple plain text file formats, and using double-entry accounting, private or shared plain text files,
command-line, curses or web UIs. revision control, and command-line, curses or web UIs.
I'm very pleased to announce hledger 1.10, including work by release I'm pleased to announce the on-schedule release of hledger 1.12.
contributors: Thanks to release contributors: A, B.
Alex Chen,
Everett Hildenbrandt,
Jakub Zárybnický,
Nolan Darilek,
Dmitry Astapov,
Jacob Weisz,
Peter Simons,
Stephen Morgan,
Pavlo Kerestey,
Trevor Riles,
Léo Gaspard,
Mykola Orliuk,
Wad,
Nana Amfo.
You'll note this is not 2.0 as previously planned - we will spend a
bit more time on that. The next major release is expected to be on
2018/09/30.
Please see http://hledger.org/release-notes#hledger-1.10 for the changes
(as soon as I can get to those; until then, the package changelogs):
http://hackage.haskell.org/package/hledger-1.10/changelog
http://hackage.haskell.org/package/hledger-ui-1.10/changelog
http://hackage.haskell.org/package/hledger-web-1.10/changelog
http://hackage.haskell.org/package/hledger-api-1.10/changelog
http://hackage.haskell.org/package/hledger-lib-1.10/changelog
What's new
----------
How to get started: hledger 1.12
-------------------
See http://hledger.org/download for all install methods. -
One of the easiest is the hledger-install script, which requires only -
bash and will build and install the hledger tools in $HOME/.local/bin/:
$ curl -O https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh Full release notes are at http://hledger.org/release-notes.html#hledger-1.12
$ less hledger-install.sh # do security review
Install
-------
All install methods are described at http://hledger.org/download .
You can download windows binaries, or use a package manager, though in
some cases these will install an older hledger version.
You can build the latest hledger packages with stack:
$ 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]
or with cabal:
$ cabal update && cabal install hledger-1.11 [hledger-ui-1.11]
[hledger-web-1.11] [hledger-api-1.11]
If you don't have stack or cabal, or if you are having trouble,
on systems with bash installed (mac, linux, unix-like windows..)
hledger-install.sh is an easy and reliable way to get the latest hledger:
$ curl -s https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh > hledger-install.sh
$ less hledger-install.sh # satisfy yourself that the script is safe
$ bash hledger-install.sh $ bash hledger-install.sh
or (insecure; add -x flag to bash to see commands that were run):
$ curl https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh | bash Getting started
---------------
After installation, ensure $HOME/.local/bin is in your $PATH, and try some commands: $ hledger add # record some transactions, with guidance
$ hledger print # show recorded transactions
$ hledger -h # quick help $ hledger balance # show totals by account
$ hledger help # list built-in manuals $ hledger -h # show quick help
$ hledger add # record some transactions
$ hledger # list available commands $ hledger # list available commands
$ hledger help # list built-in manuals
Next, I encourage you to at least skim the tutorials and docs at To get oriented, see the tutorials and manuals at http://hledger.org .
http://hledger.org. To get help, say hello and ask questions in the #hledger IRC channel
on Freenode, accessible at http://irc.hledger.org .
Say hello and ask questions in the #hledger IRC channel on Freenode: New users and all forms of help are always welcome!
http://irc.hledger.org.
New users and contributors are always welcome! Give feedback, report
bugs, send pull requests, write, evangelise, help sustain us by donating.
Best! Best,
-Simon -Simon

View File

@ -1,129 +0,0 @@
Project-wide changes in the hledger project.
See also the package change logs.
# 1.1 (2016/12/31) and newer:
project changes are now kept at http://hledger.org/release-notes .
# 1.0.1 (2016/10/27)
- change log/release note fixes
# 1.0 (2016/10/26)
## misc
- added GHC 8 support, dropped GHC 7.6 and 7.8 support.
GHC 7.8 support could be restored with small code changes and a maintainer.
- a cabal.project file has been added (Moritz Kiefer)
- use hpack for maintaining cabal files (#371).
Instead of editing cabal files directly, we now edit the less
verbose and less redundant package.yaml files and let stack (or
hpack) update the cabal files. We commit both the .yaml and
.cabal files.
- clean up some old cabal flags
- tools/simplebench has been spun off as the quickbench package.
- add Appveyor CI builds, provide up-to-date binaries for Windows
- extra: add a bunch of CSV rules examples
## docs
- the website is simpler, clearer, and more mobile-friendly.
Docs are now collected on a single page and organised by type: getting started, reference, more.
- reference docs have been split into one manual for each executable and file format.
This helps with maintenance and packaging and also should make it
easier to see what's available and to read just what you need.
- manuals are now provided in html, plain text, man and info formats
generated from the same source by a new Shake-based docs build system. (#292)
- versioned manuals are provided on the website, covering recent releases and the latest dev version (#385, #387)
- manuals are built in to the hledger executables, allowing easy offline reading on all platforms.
PROG -h shows PROG's command-line usage
PROG --help shows PROG's manual (fixed width)
PROG --man shows PROG's manual with man (formatted/paged)
PROG --info shows PROG's manual with info (hypertext)
hledger help [TOPIC] shows any manual
hledger man [TOPIC] shows any manual with man
hledger info [TOPIC] shows any manual with info
- the general and reporting options are now listed in all executable manuals.
We assume any of them which are unsupported are harmlessly ignored.
- demo.hledger.org is using beancount's example journal.
This is the somewhat realistic example journal from the beancount
project, tweaked for hledger.
- minor copyedits (jungle-boogie)
## cli
- parsing multiple input files is now robust.
When multiple -f options are provided, we now parse each file
individually rather than just concatenating them, so they can
have different formats (#320). Note this also means that
directives (like \`Y\` or \`alias\`) no longer carry over from one
file to the next.
- -I has been added as the short flag for --ignore-assertions
(this is different from Ledger's CLI, but useful for hledger-ui).
- parsing an argument-less --debug option is more robust
0.27 (2015/10/31)
- The site is now built with hakyll-std, a generic hakyll script.
- The hledger cabal files are now generated from package.yaml files by
hpack, in principle, removing a lot of error-prone duplication and
boilerplate. (In practice, both files are being updated manually
for the moment, until hpack supports flags and conditional blocks.)
- Time/allocation and heap profiling is working again, and easier:
- `make quickprof-CMD` generates a profile for CMD, which runs
against one of the sample journals. (CMD must be one word,
enclosing in double quotes isn't working here for some reason).
- `make quickheap-CMD` generates a heap profile for CMD, in
hledgerprof.ps, and tries to open it in a viewer (currently the
mac-friendly "open" executable, so you may need to adjust this in
the makefile). As with quickprof, CMD must be one word and runs
against one of the sample journals.
- `make hledgerprof` builds the hledgerprof executable used for
time/allocation profiling. `make hledgercov` builds the hledgercov
executable used for coverage reports.
- Travis CI now tests the build on each github push and announces
status changes by email and on #hledger.
- hledger once again has a HCAR entry.
- Each hledger package now includes one or more man pages, generated
from markdown by the mighty pandoc. Currently there are six: one
for each main executable and each input file format. Currently these
somewhat duplicate the manual on the website; this will be resolved
somehow.

View File

@ -8,7 +8,7 @@ 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_}}, {{September 2018}})m4_dnl m4_define({{_monthyear_}}, {{September 2018}})m4_dnl
m4_define({{_version_}}, {{1.10.99}})m4_dnl m4_define({{_version_}}, {{1.11.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.
m4_dnl $1 is the manual's web slug: hledger, hledger-ui, journal, csv etc. m4_dnl $1 is the manual's web slug: hledger, hledger-ui, journal, csv etc.

View File

@ -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.1 (2018/10/06)
* use hledger 1.11.1
# 1.11 (2018/9/30) # 1.11 (2018/9/30)
* use hledger 1.11 * use hledger 1.11

View File

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

View File

@ -2,10 +2,10 @@
-- --
-- see: https://github.com/sol/hpack -- see: https://github.com/sol/hpack
-- --
-- hash: 7f5a11be3e9db0d4fcebb5b663ee988461de6d815042a7785f9076e083dde205 -- hash: 79786a2effbdf3258e88ee988c7cbbab5951550bac768bab7cbd1c9080fd198d
name: hledger-api name: hledger-api
version: 1.11 version: 1.11.99
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.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 , hledger >=1.11.99 && <1.12
, hledger-lib >=1.11 && <1.12 , hledger-lib >=1.11.99 && <1.12
, microlens >=0.4 , microlens >=0.4
, microlens-platform >=0.2.3.1 , microlens-platform >=0.2.3.1
, safe , safe

View File

@ -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.11" hledgerApiVersion="1.11.99"
-- 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.11 hledger-api 1.11.99
Serves hledger data and reports as a JSON web API. Serves hledger data and reports as a JSON web API.

View File

@ -3,7 +3,7 @@ This is hledger-api.info, produced by makeinfo version 6.5 from stdin.
 
File: hledger-api.info, Node: Top, Next: OPTIONS, Up: (dir) File: hledger-api.info, Node: Top, Next: OPTIONS, Up: (dir)
hledger-api(1) hledger-api 1.10.99 hledger-api(1) hledger-api 1.11.99
********************************** **********************************
hledger-api is a simple web API server, intended to support client-side hledger-api is a simple web API server, intended to support client-side

View File

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

View File

@ -1,5 +1,5 @@
name: hledger-api name: hledger-api
version: '1.11' version: '1.11.99'
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.11 && <1.12 - hledger-lib >=1.11.99 && <1.12
- hledger >=1.11 && <1.12 - hledger >=1.11.99 && <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.11" cpp-options: -DVERSION="1.11.99"

View File

@ -50,7 +50,7 @@ HERE
HLEDGER_INSTALL_TOOL=hledger-install.sh HLEDGER_INSTALL_TOOL=hledger-install.sh
# this script's version # this script's version
HLEDGER_INSTALL_VERSION=20181001 HLEDGER_INSTALL_VERSION=20181006
# stackage version to install from when using stack # stackage version to install from when using stack
# You can specify a different stackage version here, or comment out # You can specify a different stackage version here, or comment out
@ -77,7 +77,7 @@ hledger-interest \
" "
# latest hledger package versions, update often: # latest hledger package versions, update often:
HLEDGER_VERSION=1.11 HLEDGER_VERSION=1.11.1
HLEDGER_LIB_VERSION=$HLEDGER_VERSION HLEDGER_LIB_VERSION=$HLEDGER_VERSION
HLEDGER_UI_VERSION=$HLEDGER_VERSION HLEDGER_UI_VERSION=$HLEDGER_VERSION
HLEDGER_WEB_VERSION=$HLEDGER_VERSION HLEDGER_WEB_VERSION=$HLEDGER_VERSION
@ -768,15 +768,58 @@ trap cleanup_temp_dir EXIT
# hledger routines # hledger routines
# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401.
# cmpver A B's exit status *and* output is
# 0 for A ~= B (1 is equivalent to 1.0, 1.0.0 etc.)
# 1 for A > B
# 2 for A < B.
cmpver () {
if [[ $1 == $2 ]]
then
echo 0; return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
# fill empty fields in ver2 with zeros
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
echo 1; return 1
fi
if ((10#${ver1[i]} < 10#${ver2[i]}))
then
echo 2; return 2
fi
done
echo 0; return 0
}
# install stack or a newer version of stack if needed, # install stack or a newer version of stack if needed,
# or always with --force-install-stack, # or always with --force-install-stack,
# in $HOME/.local/bin # in $HOME/.local/bin.
# After installing, check that a new-enough stack is now the first in $PATH,
# and if it's not, exit with a warning advising the user to remove the old one.
ensure_stack() { ensure_stack() {
if ! has_good_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
if ! has_good_stack ; then
echo "Error: an older stack ($(cmd_version stack)) is first in \$PATH, shadowing the new version."
echo "Please delete or rename $(which stack) and run hledger-install again."
exit 1
fi
fi fi
echo "using stack $(stack --version)" echo "Using stack $(stack --version)"
} }
# get a sed command that supports EREs # get a sed command that supports EREs
@ -791,10 +834,10 @@ cmd_location() {
command -v "$1" command -v "$1"
} }
# Get the given command's version, ie the first number in its --version output, # Get the given command's version, ie the first number in the first line of its --version output,
# or empty string if there's a problem. # or empty string if there's a problem.
cmd_version() { cmd_version() {
(command "$1" --version 2>/dev/null | grep -E '[0-9]' | $SED -e 's/[^0-9]*([0-9][0-9.]*).*/\1/') || "" (command "$1" --version 2>/dev/null | head -n1 | grep -E '[0-9]' | $SED -e 's/[^0-9]*([0-9][0-9.]*).*/\1/') || ""
} }
# Check whether the given command exists with given version # Check whether the given command exists with given version
@ -811,9 +854,9 @@ print_cmd_version() {
fi fi
} }
# Show the current installation status of the hledger packages and install tools. # Show the current installation status of the hledger packages.
print_installed_versions() { print_installed_versions() {
for cmd in $HLEDGER_MAIN_TOOLS $HLEDGER_OTHER_TOOLS $HLEDGER_INSTALL_TOOL stack cabal ; do print_cmd_version "$cmd"; done for cmd in $HLEDGER_MAIN_TOOLS $HLEDGER_OTHER_TOOLS $HLEDGER_INSTALL_TOOL ; 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.
@ -827,29 +870,21 @@ quietly_run() {
"$@" 2>/dev/null || true "$@" 2>/dev/null || true
} }
# Try to install the executables of the given package(s) to $HOME/.local/bin, # Try to install the executables of the given haskell package(s) and versions,
# trying several methods, generally from quickest to most reliable, continuing on failure. # using stack or cabal, logging the commands, continuing on failure.
# Current the installation methods are: # It's assumed that either a new-enough stack or cabal-install is already installed.
# - if stack is not installed and cabal is, try cabal install # stack is preferred.
# - otherwise install stack if needed and try stack install with specific resolver and ghc # For stack, you must specify the package(s) you want to install, plus any additional
# For the stack method, it's necessary to provide not only the package(s) you want to # dependency packages which are not in the stackage $RESOLVER configured above.
# install but also all dependencies which are not in the specified stackage $RESOLVER.
try_install() { try_install() {
(cd # ensure we install at user level, not in some project's stack/cabal setup cd # ensure we install at user level, not in some project's stack/cabal setup
# cabal and not stack installed ? use cabal if has_cmd stack ; then
(! has_cmd stack && has_cmd cabal && ( try_info stack install --install-ghc $RESOLVER "$@" --verbosity="$STACK_VERBOSITY"
echo "no stack installed, cabal $(cabal --numeric-version) installed; trying cabal install" && # cf cabal update step elif has_cmd cabal ; then
try_info cabal install "$@" --verbose="$CABAL_VERBOSITY" ) try_info cabal install "$@" --verbose="$CABAL_VERBOSITY"
) || else
# use stack, installing it if missing or too old echo "Failed to install $@"
(ensure_stack && ( fi
#(try_info stack install --install-ghc "$@" --verbosity=$STACK_VERBOSITY ) || # existing resolver
(try_info stack install --install-ghc $RESOLVER "$@" --verbosity="$STACK_VERBOSITY" ) # specific resolver
)
) ||
# or give up
echo "Failed to install $@"
)
} }
# start # start
@ -911,7 +946,49 @@ fi
echo "hledger-install.sh $HLEDGER_INSTALL_VERSION $(date)" echo "hledger-install.sh $HLEDGER_INSTALL_VERSION $(date)"
# show system info
echo
echo "System info:"
quietly_run uname -rsv
quietly_run lsb_release -a
# show current installed hledger packages
echo
echo "Install status before:"
print_installed_versions
if [[ $STATUSFLAG ]] ; then
exit 0
fi
# explain the planned install method
echo
echo "Install method:"
# if stack is installed, use stack
# || [[ "$FORCE_INSTALL_STACK" == "true" ]] #--force-install-stack
if has_stack ; then
echo "stack $(cmd_version stack) is installed, using stack to install hledger in $HOME/.local/bin"
# if it's too old, explain that we'll be installing the latest
if ! has_good_stack ; then
echo "Note: stack $(cmd_version stack) is too old, a newer version will be installed"
fi
# install stack now (or if new enough, just print its precise version)
ensure_stack
# else if cabal is installed, use cabal
elif has_cmd cabal ; then
echo "no stack installed, cabal $(cabal --numeric-version) installed; using cabal to install hledger in $HOME/.cabal/bin"
echo Using $(cabal --version) # unquoted to squash cabal version to one line
# run cabal update to make sure it knows about latest packages
try_info cabal update
# else use stack
else
echo "no stack or cabal installed; stack will be installed and used to install hledger in $HOME/.local/bin"
# install stack now
ensure_stack
fi
# ensure ~/.local/bin/ in PATH # ensure ~/.local/bin/ in PATH
# TODO should check ~/.cabal/bin if using cabal
if ! on_path "$HOME_LOCAL_BIN" ; then if ! on_path "$HOME_LOCAL_BIN" ; then
echo "WARNING: this script installs hledger (and perhaps stack) in '$HOME_LOCAL_BIN'" echo "WARNING: this script installs hledger (and perhaps stack) in '$HOME_LOCAL_BIN'"
echo " but this directory is not in your PATH. Adding it temporarily. To run" echo " but this directory is not in your PATH. Adding it temporarily. To run"
@ -921,63 +998,9 @@ if ! on_path "$HOME_LOCAL_BIN" ; then
export PATH=$HOME_LOCAL_BIN:$PATH export PATH=$HOME_LOCAL_BIN:$PATH
fi fi
# show system info
echo "System info:"
quietly_run uname -rsv
quietly_run lsb_release -a
# show current installed hledger packages
echo "Install status before:"
print_installed_versions
if [[ $STATUSFLAG ]] ; then
exit 0
fi
# if we'll be using cabal, run cabal update once at the start
(! has_cmd stack && has_cmd cabal &&
echo "no stack installed, cabal $(cabal --numeric-version) installed; trying cabal update" && # cf try-install()
try_info cabal update
)
# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401.
# cmpver A B's exit status *and* output is
# 0 for A ~= B (1 is equivalent to 1.0, 1.0.0 etc.)
# 1 for A > B
# 2 for A < B.
cmpver () {
if [[ $1 == $2 ]]
then
echo 0; return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
# fill empty fields in ver2 with zeros
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
echo 1; return 1
fi
if ((10#${ver1[i]} < 10#${ver2[i]}))
then
echo 2; return 2
fi
done
echo 0; return 0
}
# try installing each package that needs installing, in turn # try installing each package that needs installing, in turn
echo ---------- echo
echo Installing hledger packages:
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
@ -1003,7 +1026,7 @@ if [[ $(cmpver "$(cmd_version hledger-api 2>/dev/null)" $HLEDGER_API_VERSION) =
try_install hledger-api-$HLEDGER_API_VERSION hledger-$HLEDGER_VERSION hledger-lib-$HLEDGER_LIB_VERSION $EXTRA_DEPS 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 sometimes build these with an older version # Third-party addons. We sometimes build these with an older version
# of hledger[-lib], if 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
@ -1024,14 +1047,14 @@ if [[ $(cmpver "$(cmd_version hledger-interest 2>/dev/null)" $HLEDGER_INTEREST_V
echo echo
fi fi
echo ----------
# show new installation status # show new installation status
echo
echo "Install status after:" echo "Install status after:"
print_installed_versions 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
# TODO if we installed with cabal, we should check $HOME/.cabal/bin instead
# TODO # TODO
# check/require ghc-8.0.2+/lts-8+ on osx sierra+ # check/require ghc-8.0.2+/lts-8+ on osx sierra+

View File

@ -2,6 +2,12 @@ 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.1 (2018/10/06)
* add, lib: fix wrong transaction rendering in balance assertion errors
and when using the add command
# 1.11 (2018/9/30) # 1.11 (2018/9/30)
* compilation now works when locale is unset (#849) * compilation now works when locale is unset (#849)

View File

@ -554,7 +554,7 @@ checkBalanceAssertion p@Posting{ pbalanceassertion = Just (ass,_)} amt
(case ptransaction p of (case ptransaction p of
Nothing -> ":" -- shouldn't happen Nothing -> ":" -- shouldn't happen
Just t -> printf " in %s:\nin transaction:\n%s" Just t -> printf " in %s:\nin transaction:\n%s"
(showGenericSourcePos pos) (chomp $ show t) :: String (showGenericSourcePos pos) (chomp $ showTransaction t) :: String
where pos = snd $ fromJust $ pbalanceassertion p) where pos = snd $ fromJust $ pbalanceassertion p)
(showPostingLine p) (showPostingLine p)
(showDate $ postingDate p) (showDate $ postingDate p)

View File

@ -627,7 +627,7 @@ tests_JournalReader = tests "JournalReader" [
,ptpostings = [] ,ptpostings = []
} }
-- TODO #807 -- TODO some weaknesses in periodic transaction parsing, https://github.com/simonmichael/hledger/pull/807#issuecomment-396994403
,_test "more period text in description after two spaces" $ expectParseEq periodictransactionp ,_test "more period text in description after two spaces" $ expectParseEq periodictransactionp
"~ monthly from 2018/6 In 2019 we will change this\n" "~ monthly from 2018/6 In 2019 we will change this\n"
nullperiodictransaction { nullperiodictransaction {

View File

@ -2,10 +2,10 @@
-- --
-- see: https://github.com/sol/hpack -- see: https://github.com/sol/hpack
-- --
-- hash: ec4f3b835e224318ad3608ab36126e3e07d3c54075f648eba27476bb51db15f4 -- hash: 22a6817292c6f2d53f935ce939331bea06b956c94b4e391d198760704ec294b3
name: hledger-lib name: hledger-lib
version: 1.11 version: 1.11.99
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.
. .

View File

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

View File

@ -3,7 +3,7 @@ This is hledger_csv.info, produced by makeinfo version 6.5 from stdin.
 
File: hledger_csv.info, Node: Top, Next: CSV RULES, Up: (dir) File: hledger_csv.info, Node: Top, Next: CSV RULES, Up: (dir)
hledger_csv(5) hledger 1.10.99 hledger_csv(5) hledger 1.11.99
****************************** ******************************
hledger can read CSV (comma-separated value) files as if they were hledger can read CSV (comma-separated value) files as if they were

View File

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

View File

@ -1,6 +1,6 @@
.\"t .\"t
.TH "hledger_journal" "5" "September 2018" "hledger 1.10.99" "hledger User Manuals" .TH "hledger_journal" "5" "September 2018" "hledger 1.11.99" "hledger User Manuals"

View File

@ -4,7 +4,7 @@ stdin.
 
File: hledger_journal.info, Node: Top, Next: FILE FORMAT, Up: (dir) File: hledger_journal.info, Node: Top, Next: FILE FORMAT, Up: (dir)
hledger_journal(5) hledger 1.10.99 hledger_journal(5) hledger 1.11.99
********************************** **********************************
hledger's usual data source is a plain text file containing journal hledger's usual data source is a plain text file containing journal

View File

@ -1151,4 +1151,4 @@ SEE ALSO
hledger 1.10.99 September 2018 hledger_journal(5) hledger 1.11.99 September 2018 hledger_journal(5)

View File

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

View File

@ -4,7 +4,7 @@ stdin.
 
File: hledger_timeclock.info, Node: Top, Up: (dir) File: hledger_timeclock.info, Node: Top, Up: (dir)
hledger_timeclock(5) hledger 1.10.99 hledger_timeclock(5) hledger 1.11.99
************************************ ************************************
hledger can read timeclock files. As with Ledger, these are (a subset hledger can read timeclock files. As with Ledger, these are (a subset

View File

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

View File

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

View File

@ -4,7 +4,7 @@ stdin.
 
File: hledger_timedot.info, Node: Top, Next: FILE FORMAT, Up: (dir) File: hledger_timedot.info, Node: Top, Next: FILE FORMAT, Up: (dir)
hledger_timedot(5) hledger 1.10.99 hledger_timedot(5) hledger 1.11.99
********************************** **********************************
Timedot is a plain text format for logging dated, categorised quantities Timedot is a plain text format for logging dated, categorised quantities

View File

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

View File

@ -1,5 +1,5 @@
name: hledger-lib name: hledger-lib
version: '1.11' version: '1.11.99'
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.

View File

@ -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.1 (2018/10/06)
* use hledger 1.11.1
# 1.11 (2018/9/30) # 1.11 (2018/9/30)
* use hledger 1.11 * use hledger 1.11

View File

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

View File

@ -2,10 +2,10 @@
-- --
-- see: https://github.com/sol/hpack -- see: https://github.com/sol/hpack
-- --
-- hash: 61b73ed221f9d6964b622e7b8ea40259e9c82efd8b28dadc89d6a643ea947b94 -- hash: fb0ef2467dcf115f1fc7a6f9d7781ec6912e7545a52921968067666c1747fff4
name: hledger-ui name: hledger-ui
version: 1.11 version: 1.11.99
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.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 , hledger >=1.11.99 && <1.12
, hledger-lib >=1.11 && <1.12 , hledger-lib >=1.11.99 && <1.12
, megaparsec >=7.0.0 && <8 , megaparsec >=7.0.0 && <8
, microlens >=0.4 , microlens >=0.4
, microlens-platform >=0.2.3.1 , microlens-platform >=0.2.3.1

View File

@ -3,7 +3,7 @@ This is hledger-ui.info, produced by makeinfo version 6.5 from stdin.
 
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir) File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
hledger-ui(1) hledger-ui 1.10.99 hledger-ui(1) hledger-ui 1.11.99
******************************** ********************************
hledger-ui is hledger's curses-style interface, providing an efficient hledger-ui is hledger's curses-style interface, providing an efficient

View File

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

View File

@ -1,5 +1,5 @@
name : hledger-ui name : hledger-ui
version : '1.11' version : '1.11.99'
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.11" cpp-options: -DVERSION="1.11.99"
dependencies: dependencies:
- hledger >=1.11 && <1.12 - hledger >=1.11.99 && <1.12
- hledger-lib >=1.11 && <1.12 - hledger-lib >=1.11.99 && <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

View File

@ -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.1 (2018/10/06)
* use hledger 1.11.1
# 1.11 (2018/9/30) # 1.11 (2018/9/30)
* use hledger 1.11 * use hledger 1.11

View File

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

View File

@ -2,10 +2,10 @@
-- --
-- see: https://github.com/sol/hpack -- see: https://github.com/sol/hpack
-- --
-- hash: 60eb9cb226968eed42b507637364f5960aa6b6fb91dff8a46fcbd40295780df6 -- hash: 443e668fdd64fb57d1d9488224df0bc6ee4e796bcc75f81655a92850ff809d34
name: hledger-web name: hledger-web
version: 1.11 version: 1.11.99
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
hs-source-dirs: hs-source-dirs:
./. ./.
ghc-options: -Wall -fwarn-tabs ghc-options: -Wall -fwarn-tabs
cpp-options: -DVERSION="1.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 , hledger >=1.11.99 && <1.12
, hledger-lib >=1.11 && <1.12 , hledger-lib >=1.11.99 && <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.11" cpp-options: -DVERSION="1.11.99"
build-depends: build-depends:
base base
, hledger-web , hledger-web

View File

@ -3,7 +3,7 @@ This is hledger-web.info, produced by makeinfo version 6.5 from stdin.
 
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir) File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
hledger-web(1) hledger-web 1.10.99 hledger-web(1) hledger-web 1.11.99
********************************** **********************************
hledger-web is hledger's web interface. It starts a simple web hledger-web is hledger's web interface. It starts a simple web

View File

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

View File

@ -1,5 +1,5 @@
name: hledger-web name: hledger-web
version: '1.11' version: '1.11.99'
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.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 - hledger-lib >=1.11.99 && <1.12
- hledger >=1.11 && <1.12 - hledger >=1.11.99 && <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.11" cpp-options: -DVERSION="1.11.99"
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.11" # cpp-options: -DVERSION="1.11.99"
# dependencies: # dependencies:
# - base # - base
# - hledger-web # - hledger-web

View File

@ -1,6 +1,12 @@
User-visible changes in the hledger command line tool. User-visible changes in the hledger command line tool.
# 1.11.1 (2018/10/06)
* fix wrong transaction rendering in balance assertion errors and when
using the add command
# 1.11 (2018/9/30) # 1.11 (2018/9/30)
* The default display order of accounts is now influenced by * The default display order of accounts is now influenced by
@ -584,6 +590,83 @@ Allow megaparsec 5.2 (#503)
- stack-ify extra/hledger-rewrite.hs - stack-ify extra/hledger-rewrite.hs
## misc
- added GHC 8 support, dropped GHC 7.6 and 7.8 support.
GHC 7.8 support could be restored with small code changes and a maintainer.
- a cabal.project file has been added (Moritz Kiefer)
- use hpack for maintaining cabal files (#371).
Instead of editing cabal files directly, we now edit the less
verbose and less redundant package.yaml files and let stack (or
hpack) update the cabal files. We commit both the .yaml and
.cabal files.
- clean up some old cabal flags
- tools/simplebench has been spun off as the quickbench package.
- add Appveyor CI builds, provide up-to-date binaries for Windows
- extra: add a bunch of CSV rules examples
## docs
- the website is simpler, clearer, and more mobile-friendly.
Docs are now collected on a single page and organised by type: getting started, reference, more.
- reference docs have been split into one manual for each executable and file format.
This helps with maintenance and packaging and also should make it
easier to see what's available and to read just what you need.
- manuals are now provided in html, plain text, man and info formats
generated from the same source by a new Shake-based docs build system. (#292)
- versioned manuals are provided on the website, covering recent releases and the latest dev version (#385, #387)
- manuals are built in to the hledger executables, allowing easy offline reading on all platforms.
PROG -h shows PROG's command-line usage
PROG --help shows PROG's manual (fixed width)
PROG --man shows PROG's manual with man (formatted/paged)
PROG --info shows PROG's manual with info (hypertext)
hledger help [TOPIC] shows any manual
hledger man [TOPIC] shows any manual with man
hledger info [TOPIC] shows any manual with info
- the general and reporting options are now listed in all executable manuals.
We assume any of them which are unsupported are harmlessly ignored.
- demo.hledger.org is using beancount's example journal.
This is the somewhat realistic example journal from the beancount
project, tweaked for hledger.
- minor copyedits (jungle-boogie)
## cli
- parsing multiple input files is now robust.
When multiple -f options are provided, we now parse each file
individually rather than just concatenating them, so they can
have different formats (#320). Note this also means that
directives (like \`Y\` or \`alias\`) no longer carry over from one
file to the next.
- -I has been added as the short flag for --ignore-assertions
(this is different from Ledger's CLI, but useful for hledger-ui).
- parsing an argument-less --debug option is more robust
@ -598,9 +681,42 @@ Account aliases:
Documentation: Documentation:
- The hledger packages now have man pages, based on the current user - Each hledger package now includes one or more man pages, generated
manual, thanks to the mighty pandoc (#282). from markdown by the mighty pandoc. Currently there are six: one
for each main executable and each input file format. Currently these
somewhat duplicate the manual on the website; this will be resolved
somehow. (#282).
- The site is now built with hakyll-std, a generic hakyll script.
- hledger once again has a HCAR entry.
Tools:
- The hledger cabal files are now generated from package.yaml files by
hpack, in principle, removing a lot of error-prone duplication and
boilerplate. (In practice, both files are being updated manually
for the moment, until hpack supports flags and conditional blocks.)
- Time/allocation and heap profiling is working again, and easier:
- `make quickprof-CMD` generates a profile for CMD, which runs
against one of the sample journals. (CMD must be one word,
enclosing in double quotes isn't working here for some reason).
- `make quickheap-CMD` generates a heap profile for CMD, in
hledgerprof.ps, and tries to open it in a viewer (currently the
mac-friendly "open" executable, so you may need to adjust this in
the makefile). As with quickprof, CMD must be one word and runs
against one of the sample journals.
- `make hledgerprof` builds the hledgerprof executable used for
time/allocation profiling. `make hledgercov` builds the hledgercov
executable used for coverage reports.
- Travis CI now tests the build on each github push and announces
status changes by email and on #hledger.
Journal format: Journal format:
- Dates must now begin with a digit (not /, eg). - Dates must now begin with a digit (not /, eg).

View File

@ -244,6 +244,10 @@ FLAGS
testcmd :: CliOpts -> Journal -> IO () testcmd :: CliOpts -> Journal -> IO ()
testcmd opts _undefined = do testcmd opts _undefined = do
let args = words' $ query_ $ reportopts_ opts let args = words' $ query_ $ reportopts_ opts
-- workaround for https://github.com/joelburget/easytest/issues/11
-- import System.IO (hSetEncoding, stdout, stderr, utf8)
-- hSetEncoding stdout utf8
-- hSetEncoding stderr utf8
e <- runEasytests args $ EasyTest.tests [tests_Hledger, tests_Commands] e <- runEasytests args $ EasyTest.tests [tests_Hledger, tests_Commands]
if e then exitFailure else exitSuccess if e then exitFailure else exitSuccess

View File

@ -141,7 +141,7 @@ getAndAddTransactions es@EntryState{..} = (do
confirmedTransactionWizard es@EntryState{..} = do confirmedTransactionWizard es@EntryState{..} = do
t <- transactionWizard es t <- transactionWizard es
-- liftIO $ hPrintf stderr {- "Transaction entered:\n%s" -} (show t) -- liftIO $ hPrintf stderr {- "Transaction entered:\n%s" -} (show t)
output $ show t output $ showTransaction t
y <- let def = "y" in y <- let def = "y" in
retryMsg "Please enter y or n." $ retryMsg "Please enter y or n." $
parser ((fmap ('y' ==)) . headMay . map toLower . strip) $ parser ((fmap ('y' ==)) . headMay . map toLower . strip) $
@ -155,7 +155,7 @@ transactionWizard es@EntryState{..} = do
let es1@EntryState{esArgs=args1} = es{esArgs=drop 1 esArgs, esDefDate=date} let es1@EntryState{esArgs=args1} = es{esArgs=drop 1 esArgs, esDefDate=date}
(desc,comment) <- descriptionAndCommentWizard es1 (desc,comment) <- descriptionAndCommentWizard es1
let mbaset = similarTransaction es1 desc let mbaset = similarTransaction es1 desc
when (isJust mbaset) $ liftIO $ hPrintf stderr "Using this similar transaction for defaults:\n%s" (show $ fromJust mbaset) when (isJust mbaset) $ liftIO $ hPrintf stderr "Using this similar transaction for defaults:\n%s" (showTransaction $ fromJust mbaset)
let es2 = es1{esArgs=drop 1 args1, esSimilarTransaction=mbaset} let es2 = es1{esArgs=drop 1 args1, esSimilarTransaction=mbaset}
balancedPostingsWizard = do balancedPostingsWizard = do
ps <- postingsWizard es2{esPostings=[]} ps <- postingsWizard es2{esPostings=[]}
@ -379,7 +379,7 @@ journalAddTransaction j@Journal{jtxns=ts} opts t = do
-- unelided shows all amounts explicitly, in case there's a price, cf #283 -- unelided shows all amounts explicitly, in case there's a price, cf #283
when (debug_ opts > 0) $ do when (debug_ opts > 0) $ do
putStrLn $ printf "\nAdded transaction to %s:" f putStrLn $ printf "\nAdded transaction to %s:" f
putStrLn =<< registerFromString (show t) putStrLn =<< registerFromString (showTransaction t)
return j{jtxns=ts++[t]} return j{jtxns=ts++[t]}
-- | Append a string, typically one or more transactions, to a journal -- | Append a string, typically one or more transactions, to a journal

View File

@ -1,6 +1,6 @@
.\"t .\"t
.TH "hledger" "1" "September 2018" "hledger 1.10.99" "hledger User Manuals" .TH "hledger" "1" "September 2018" "hledger 1.11.99" "hledger User Manuals"

View File

@ -2,10 +2,10 @@
-- --
-- see: https://github.com/sol/hpack -- see: https://github.com/sol/hpack
-- --
-- hash: e89846e17f78017f83d440cb2fcfe10caba2b0c4c6a61195b4faffcdd2b7a100 -- hash: 78515e93d6f08be6d098bdd697b951a1577e4e71c6b24ad64cf69916d3af191c
name: hledger name: hledger
version: 1.11 version: 1.11.99
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.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 , hledger-lib >=1.11.99 && <1.12
, lucid , lucid
, megaparsec >=7.0.0 && <8 , megaparsec >=7.0.0 && <8
, 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.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 , hledger-lib >=1.11.99 && <1.12
, megaparsec >=7.0.0 && <8 , megaparsec >=7.0.0 && <8
, 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.11" cpp-options: -DVERSION="1.11.99"
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.11 && <1.12 , hledger-lib >=1.11.99 && <1.12
, megaparsec >=7.0.0 && <8 , megaparsec >=7.0.0 && <8
, 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.11 && <1.12 , hledger-lib >=1.11.99 && <1.12
, html , html
, megaparsec >=7.0.0 && <8 , megaparsec >=7.0.0 && <8
, mtl , mtl

View File

@ -3,7 +3,7 @@ This is hledger.info, produced by makeinfo version 6.5 from stdin.
 
File: hledger.info, Node: Top, Next: EXAMPLES, Up: (dir) File: hledger.info, Node: Top, Next: EXAMPLES, Up: (dir)
hledger(1) hledger 1.10.99 hledger(1) hledger 1.11.99
************************** **************************
This is hledger's command-line interface (there are also curses and web This is hledger's command-line interface (there are also curses and web

View File

@ -2230,4 +2230,4 @@ SEE ALSO
hledger 1.10.99 September 2018 hledger(1) hledger 1.11.99 September 2018 hledger(1)

View File

@ -1,5 +1,5 @@
name: hledger name: hledger
version: '1.11' version: '1.11.99'
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.11 && <1.12 - hledger-lib >=1.11.99 && <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.11" cpp-options: -DVERSION="1.11.99"
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.11" cpp-options: -DVERSION="1.11.99"
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.11" cpp-options: -DVERSION="1.11.99"
dependencies: dependencies:
- hledger - hledger
- test-framework - test-framework

View File

@ -1,6 +1,6 @@
# csv format # csv format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

View File

@ -1,6 +1,6 @@
# hledger-api # hledger-api
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

View File

@ -1,6 +1,6 @@
# hledger-ui # hledger-ui
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

View File

@ -1,6 +1,6 @@
# hledger-web # hledger-web
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

View File

@ -1,6 +1,6 @@
# hledger # hledger
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
# journal format # journal format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$
@ -234,9 +234,9 @@ toggle transaction status with C-c C-e, or posting status with C-c C-c.
What "uncleared", "pending", and "cleared" actually mean is up to you. What "uncleared", "pending", and "cleared" actually mean is up to you.
Here's one suggestion: Here's one suggestion:
------------------------------------------------------------------------- ------------------------------------------------------------------------
status meaning status meaning
----------- ------------------------------------------------------------- ----------- ------------------------------------------------------------
uncleared recorded but not yet reconciled; needs review uncleared recorded but not yet reconciled; needs review
pending tentatively reconciled (if needed, eg during a big pending tentatively reconciled (if needed, eg during a big
@ -244,7 +244,7 @@ Here's one suggestion:
cleared complete, reconciled as far as possible, and considered cleared complete, reconciled as far as possible, and considered
correct correct
------------------------------------------------------------------------- ------------------------------------------------------------------------
With this scheme, you would use `-PC` to see the current balance at your With this scheme, you would use `-PC` to see the current balance at your
bank, `-U` to see things which will probably hit your bank soon (like bank, `-U` to see things which will probably hit your bank soon (like

View File

@ -2,7 +2,7 @@
## hledger ## hledger
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -2435,7 +2435,7 @@ accepts `fr_FR.UTF8`, mac osx requires exactly `fr_FR.UTF-8`).
## hledger-ui ## hledger-ui
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -2847,7 +2847,7 @@ program is restarted.
## hledger-web ## hledger-web
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -3100,7 +3100,7 @@ Does not work well on small screens.
## hledger-api ## hledger-api
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -3202,7 +3202,7 @@ awkward.
## journal format ## journal format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -4515,7 +4515,7 @@ https://twitter.com/LedgerTips/status/501767602067472384
## csv format ## csv format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -4789,7 +4789,7 @@ rules file will be used for all the CSV files being read.
## timeclock format ## timeclock format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME
@ -4858,7 +4858,7 @@ To generate time logs, ie to clock in and clock out, you could:
## timedot format ## timedot format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
### NAME ### NAME

View File

@ -1,6 +1,6 @@
# timeclock format # timeclock format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

View File

@ -1,6 +1,6 @@
# timedot format # timedot format
This doc is for version **1.10.99** (dev). []{.docversions} This doc is for version **1.11** (dev). []{.docversions}
\$toc\$ \$toc\$

View File

@ -1,14 +1,21 @@
\$toc\$
# Download # Download
Adventurer, choose your path! No, really it's quite easy. Often. Do you want to.. There are several ways to install hledger:
a. [Download the binary or system package for your platform](#a.-download-a-binary-or-system-package) (quick install, often not up to date)
b. [Build the latest release with hledger-install](#b.-build-the-latest-release)
or [with stack](#b2.-with-stack)
or [with cabal](#b3.-with-cabal) (slow install, up to date)
c. [Build the development version with stack or cabal](#c.-build-the-development-version) (slow install, super-fresh)
<a name="a"></a> <a name="a"></a>
## a. download a binary/system package ## a. Download a binary or system package for your platform
<style> <style>
table { margin-left:1em; } table { margin-left:1em; }
tr { border-top:thin solid #ddd; border-bottom:thin solid #ddd; }
div > p > strong > code { margin-left:1em; } /* top-level code lines */ div > p > strong > code { margin-left:1em; } /* top-level code lines */
code { white-space:nowrap; } code { white-space:nowrap; }
tr { vertical-align:top; } tr { vertical-align:top; }
@ -19,190 +26,224 @@ td:first-of-type {
} }
a { white-space:nowrap; } a { white-space:nowrap; }
.warnings { .warnings {
display:inline-block;
margin-left:1em;
font-style:italic; font-style:italic;
font-size:small;
} }
.warnings > a:before { .warnings > a:before {
content: "⚠ "; content: " ⚠ ";
color:red; color:red;
} }
</style> </style>
hledger binaries or system packages are quickest to install, Binaries or system packages are quickest to install, but they can be outdated or incomplete.
but they can be [out of date](https://repology.org/metapackage/hledger/badges) or incomplete.
(Please help your local packagers with this!).
| **Available binaries / system packages:**
|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ <div style="float:right; font-size:small;">
| Windows: | [1.10](https://ci.appveyor.com/api/buildjobs/5n63x22wvd4j24ee/artifacts/hledger.zip) or [latest nightly dev build](https://ci.appveyor.com/api/projects/simonmichael/hledger/artifacts/hledger.zip?branch=master) (<span class=warnings>[no hledger-ui](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444), [doesn't work on old windows ?](https://github.com/simonmichael/hledger/issues/774), [unusually many files in PATH causing hangs](https://github.com/simonmichael/hledger/issues/791), [appveyor builds have been failing again](https://github.com/simonmichael/hledger/issues/832) )</span> (please [update this page](https://github.com/simonmichael/hledger/edit/master/site/download.md) /
| Mac: | **`brew install hledger`** <span class=warnings>([only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520))</span> <br>report issues to packagers)
| Arch Linux: | **`pacman -S hledger`** </div>
| Debian,&nbsp;Ubuntu: | **`sudo apt install hledger hledger-ui hledger-web`**
| Fedora,&nbsp;RHEL: | **`sudo dnf install hledger`** | Platform | Command/Link | Installs&nbsp;version<br>([as&nbsp;of&nbsp;20181006](https://repology.org/metapackage/hledger/badges), latest is [1.11](http://hledger.org/release-notes))
| Gentoo: | **`sudo layman -a haskell && sudo emerge hledger hledger-ui hledger-web`** |----------------------|------------------------|----------------------------------------------------------------------------------------
| Void Linux: | **`xbps-install -S hledger hledger-ui hledger-web hledger-api`** | [Mac][] | **`brew install hledger`** <br><span class=warnings>[only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520)</span> | 1.11
| OpenBSD: | Third-party binaries: [OpenBSD6.3/amd64](https://s3.amazonaws.com/openbsd-hledger/index.html). Ports tree entries: [https://github.com/jasperla/openbsd-wip/pull/104](https://github.com/jasperla/openbsd-wip/pull/104) | [Windows][] | Developer binaries: **[1.11](https://ci.appveyor.com/api/buildjobs/rppu7oo05u283p0w/artifacts/hledger.zip)** <!-- or [latest nightly dev build](https://ci.appveyor.com/api/projects/simonmichael/hledger/artifacts/hledger.zip?branch=master) --> <br><span class=warnings> [no hledger-ui](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444),[doesn't work on old windows ?](https://github.com/simonmichael/hledger/issues/774),[many files in PATH causing hangs](https://github.com/simonmichael/hledger/issues/791)<!-- ,[appveyor builds failing](https://github.com/simonmichael/hledger/issues/832) --> </span> | 1.11
| NixOS: | **`nix-env -iA nixpkgs.haskellPackages.hledger nixpkgs.haskellPackages.hledger-ui nixpkgs.haskellPackages.hledger-web`** <span class=warnings>([problems with hledger-ui on MacOS ?](https://github.com/simonmichael/hledger/issues/613))</span> | &nbsp; |
| Sandstorm: | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90) -> demo** - a hledger-web server in 3 clicks <span class=warnings>([features needed](https://github.com/simonmichael/hledger/issues/425))</span> | [Arch&nbsp;Linux][] | **`pacman -S hledger`** | 1.11
| CentOS | <span class=warnings>?</span> |
| [Debian][] | **`sudo apt install hledger hledger-ui hledger-web`** | 1.0.1&nbsp;(Stable), 1.5&nbsp;(Testing), 1.10&nbsp;(Unstable)
| [Fedora][] | **`sudo dnf install hledger`** | 1.2&nbsp;(27), 1.4&nbsp;(28), 1.5&nbsp;(Rawhide)
| [Gentoo][] | **`sudo layman -a haskell && sudo emerge hledger hledger-ui hledger-web`** | 1.11
| RHEL | **`sudo dnf install hledger`** <span class=warnings>?</span> | <span class=warnings>?</span>
| [Ubuntu][] | **`sudo apt install hledger hledger-ui hledger-web`** | 0.26&nbsp;(16.04&nbsp;Xenial), 1.2&nbsp;(18.04&nbsp;Bionic), 1.5&nbsp;(18.10&nbsp;Cosmic)
| [Void&nbsp;Linux][] | **`xbps-install -S hledger hledger-ui hledger-web hledger-api`** | 1.10
| &nbsp; |
| FreeBSD | <span class=warnings>?</span> |
| NetBSD | <span class=warnings>?</span> |
| OpenBSD | Ports: **[https://github.com/jasperla/openbsd-wip/pull/104](https://github.com/jasperla/openbsd-wip/pull/104)** <br>Third-party binaries: **[OpenBSD6.3/amd64](https://s3.amazonaws.com/openbsd-hledger/index.html)** | 1.10
| &nbsp; |
| [Nix][] | **<span style="font-size:small;">`nix-env -iA nixpkgs.haskellPackages.hledger nixpkgs.haskellPackages.hledger-ui nixpkgs.haskellPackages.hledger-web`</span>** <br><span class=warnings>[problems with hledger-ui on Mac ?](https://github.com/simonmichael/hledger/issues/613)</span> | 1.5&nbsp;(stable), 1.11&nbsp;(unstable)
| Sandstorm | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90)** <br><span class=warnings>[features needed](https://github.com/simonmichael/hledger/issues/425)</span> | 1.9.2
[Mac]: https://formulae.brew.sh/formula/hledger
[Mac contact]: mailto:
[Windows]: https://ci.appveyor.com/project/simonmichael/hledger
[Windows contact]: mailto:simon@joyful.com
[Arch&nbsp;Linux]: https://www.archlinux.org/packages/?sort=&q=hledger
[Arch&nbsp;Linux contact]: mailto:
[Debian]: https://packages.debian.org/search?searchon=names&keywords=hledger
[Debian contact]: mailto:debian-haskell@lists.debian.org
[Fedora]: https://apps.fedoraproject.org/packages/s/hledger
[Fedora contact]: mailto:
[Gentoo]: https://gentoo.zugaina.org/Search?search=hledger
[Gentoo contact]: mailto:
[Ubuntu]: https://packages.ubuntu.com/search?suite=all&searchon=names&keywords=hledger
[Ubuntu contact]: mailto:
[Void&nbsp;Linux]: https://voidlinux.org/packages/?q=hledger
[Void&nbsp;Linux contact]: mailto:
[Nix]: http://hydra.nixos.org/search?query=hledger
[Nix contact]: mailto:
<a name="b"></a> <a name="b"></a>
## b. build the latest release ## b. Build the latest release
Good choice! You'll get the latest features mentioned in the [release notes](release-notes.html). Good choice! You'll get the latest features and fixes mentioned in the [release notes](release-notes.html),
and you'll be in a good position to give feedback and get support.
Below are three ways to build the latest release, in order of preference. Below are three ways to build the latest release, in order of preference.
But first, some tips:
Note, building all hledger tools for the first time could take as much - Building all hledger tools and dependencies for the first time could
as an hour, 1G of free memory, and 1G of disk space. take as much as an hour, 1-2G of free memory, and 1-2G of disk
(We're not bloated; we just sit atop a lot of fine Haskell engineering!) space. You can kill and restart the build without losing progress,
You can kill and restart it without losing progress, and subsequent builds will be much faster. and future builds will be much faster.
Also, here are some known build issues and workarounds:\
<span class=warnings> - If you get link errors (eg: "/bin/ld.gold: error: cannot find -ltinfo"),
[arch: advice from Arch wiki](https://wiki.archlinux.org/index.php/Haskell)\ you might need to install some extra system packages and try again.
[arch: No information found for ghc-8.4.2](https://github.com/commercialhaskell/stack/issues/3984)\ To find the right system package, check the list below, or do a web search for the error message
<!-- [arch: some past problems](https://github.com/simonmichael/hledger/issues/668) --> (and please send updates for this list):
[freebsd 12: no cabal file found](https://github.com/simonmichael/hledger/issues/709)\
[openbsd 6: exec permission denied](https://deftly.net/posts/2017-10-12-using-cabal-on-openbsd.html)\ |
[openbsd: how to get stack](https://github.com/commercialhaskell/stack/issues/2822#issuecomment-318892816)\ |-----------------|-------------------------------------------------------------------
</span> | CentOS: | **`sudo yum install -y libstdc++-devel ncurses-devel zlib-devel`** <!-- https://github.com/simonmichael/hledger/issues/715 -->
| Debian, Ubuntu: | **`sudo apt install -y libtinfo-dev`**
| Fedora, RHEL: | **`sudo dnf install -y gmp-devel ncurses-devel`**
- Here are some known build issues and workarounds on certain platforms:
<span class=warnings>
[arch: advice from Arch wiki](https://wiki.archlinux.org/index.php/Haskell)\
[arch: No information found for ghc-8.4.2](https://github.com/commercialhaskell/stack/issues/3984)\
<!-- [arch: some past problems](https://github.com/simonmichael/hledger/issues/668) -->
[freebsd 12: no cabal file found](https://github.com/simonmichael/hledger/issues/709)\
[openbsd 6: exec permission denied](https://deftly.net/posts/2017-10-12-using-cabal-on-openbsd.html)\
[openbsd: how to get stack](https://github.com/commercialhaskell/stack/issues/2822#issuecomment-318892816)\
[windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444)\
</span>
- If you have trouble, please send me a copy/paste of the output,
including the commands you typed, at least up to the first error, via
[paste](http://paste.hledger.org) + [IRC](http://irc.hledger.org),
or the [issue tracker](http://bugs.hledger.org),
or [email](docs.html#helpfeedback).
<div style="margin-left:1em; margin-bottom:2em;">
<a name="b1"></a> <a name="b1"></a>
### b1. with hledger-install ### b1. with hledger-install
The latest version of our [hledger-install script](https://github.com/simonmichael/hledger/tree/master/hledger-install) On systems with bash installed (mac, linux, unix-like windows..),
([changes](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh)) if you don't already have stack or cabal, or if you are having trouble with them,
is recommended as the easiest and most-likely-to-just-work build method, [hledger-install](https://github.com/simonmichael/hledger/tree/master/hledger-install)
on GNU/linux, mac and freeBSD is an easy and reliable way to get the latest hledger.
(and possibly other BSDs if you install cabal-install first, or on unixlike environments on windows): It automates the install process using stack or cabal, avoiding common pitfalls:
- it requires only bash and curl/wget, and internet access **`curl -s https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh > hledger-install.sh`**\
- it automates the install process using stack or cabal, avoiding common pitfalls **`less hledger-install.sh`** *# satisfy yourself that the script is safe*\
- it installs stack and GHC in ~/.stack, if needed **`bash hledger-install.sh`**
- it installs the latest release of hledger and addon tools in ~/.local/bin or ~/.cabal/bin
Here's the quick, non-secure way to run it:
**`curl -s https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh | bash`**
And here's the more responsible way:
**`curl -sO https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh`**\
**`less hledger-install.sh`** *# do security review*\
**`bash hledger-install.sh`**
#### Link errors ?
If you see link errors (like "/bin/ld.gold: error: cannot find -ltinfo"),
you might need to install some extra system packages, such as the below, and try again.
Please do a web search for the error and send corrections for this list:
|
|-----------------|-------------------------------------------------------
| Centos: | **`sudo yum install -y libstdc++-devel ncurses-devel zlib-devel`** *# [?](https://github.com/simonmichael/hledger/issues/715)*
| Debian, Ubuntu: | **`sudo apt install -y libtinfo-dev`** *# ?*
| Fedora, RHEL: | **`sudo dnf install -y gmp-devel ncurses-devel`** *# ?*
#### Set up $PATH
You should
[extend your \$PATH with `~/.local/bin`](https://docs.haskellstack.org/en/stable/install_and_upgrade/#path) (for stack)
and/or `~/.cabal/bin` (for cabal).
Eg, if you use bash:
**`echo "export PATH=~/.local/bin:~/.cabal/bin:$PATH" >> ~/.bashrc && source ~/.bashrc`**
#### Test
Now you should be able to run the hledger tools and see the expected versions. Eg:
```shell
$ hledger --version
hledger 1.11
$ hledger-ui --version
hledger-ui 1.11
$ hledger web --version
hledger-web 1.11
$ hledger iadd --version
This is hledger-iadd version 1.3.6
```
#### Need help ?
If you are having trouble, please capture a debug log and send it to me via
[paste](http://paste.hledger.org) & [IRC](http://irc.hledger.org),
the [issue tracker](http://bugs.hledger.org),
or [email](docs.html#helpfeedback):
**`bash -x hledger-install.sh 2>&1 | tee hledger-install.log`**
<a name="b2"></a> <a name="b2"></a>
### b2. with stack ### b2. with stack
[`stack`](http://haskell-lang.org/get-started) is the newer and easier of the Haskell build tools. [`stack`](http://haskell-lang.org/get-started) is the more reliable of Haskell's two build tools, for new users.
If you prefer more control or if hledger-install failed, here's how to use stack yourself: You need stack 1.7.1 or newer; the latest release is best.
On 64-bit Windows, use the 64-bit version of stack.
The following command installs the main hledger packages;
you can save some time by omitting hledger-ui, hledger-web and/or hledger-api (optional user interfaces).
On Windows, hledger-ui is not available.
To estimate the build time, add `--dry-run`:
1. **Install or upgrade to the latest stack**\ **`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`**\
The latest version of stack (1.7.1) is recommended, for best avoidance of ecosystem breakages.
If an older version fails to install hledger, you should install the latest release of stack and try again.
If you can get at least stack 1.3 installed, eg from your system packages, you can usually run `stack upgrade` to quickly upgrade it to the latest.
On Windows, the 64-bit version of stack is [preferred](https://github.com/simonmichael/hledger/issues/275#issuecomment-123834252). Other [add-ons](/hledger.html#third-party-add-ons)
like
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`**\ [hledger-diff](http://hackage.haskell.org/package/hledger-diff),
This installs the main hledger packages (and dependencies) from [Stackage](https://www.stackage.org) and/or [Hackage](http://hackage.haskell.org). [hledger-iadd](http://hackage.haskell.org/package/hledger-iadd),
You can save some time by omitting hledger-* packages you don't want.\ or [hledger-interest](http://hackage.haskell.org/package/hledger-interest)
<span class=warnings>([windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444))</span> can be installed like so:
You can kill and restart this without losing progress.
To estimate the build time, add `--dry-run`.
If you see "was generated with a newer version of hpack, please upgrade and try again" errors, you can ignore them.
(Upgrade to the latest stack release to stop them.)
<!--
If you need to build with an older GHC version for some reason, these commands should work
(except on Mac Sierra which [requires at least GHC 8.0.2/lts-8](https://ghc.haskell.org/trac/ghc/ticket/12479)):\
`stack install --resolver=lts-7 hledger-lib-1.3 hledger-1.3 hledger-ui-1.3 hledger-web-1.3 hledger-api-1.3 brick-0.19 vty-5.15.1 data-clist-0.1.2.0` *# (GHC 8.0.1)* \
`stack install --resolver=lts-6 hledger-lib-1.3 hledger-1.3 hledger-ui-1.3 hledger-web-1.3 hledger-api-1.3 megaparsec-5.3.1 brick-0.19 vty-5.15.1 data-clist-0.1.2.0 text-zipper-0.10` *# (GHC 7.10.3)* \
--> <!-- keep synced with stack.yaml files -->
3. **[If you see link errors..](#link-errors)**
4. **[Set up \$PATH](#set-up-path)**
5. **Install addons ?**\
Additional [add-on commands](/hledger.html#third-party-add-ons),
such as
[hledger-diff](http://hackage.haskell.org/package/hledger-diff),
[hledger-iadd](http://hackage.haskell.org/package/hledger-iadd),
[hledger-interest](http://hackage.haskell.org/package/hledger-interest),
and [hledger-irr](http://hackage.haskell.org/package/hledger-irr)
can be installed similarly to the above.
6. **[Test](#test)**
**`stack install --resolver=lts-12 cassava-megaparsec-1.0.0 hledger-lib-1.11 hledger-diff-0.2.0.14 hledger-iadd-1.3.6 hledger-interest-1.5.2`**\
<a name="b3"></a> <a name="b3"></a>
### b3. with cabal ### b3. with cabal
[cabal](https://www.haskell.org/cabal/) is the other Haskell build tool. If you're a cabal expert, feel free to use this in the usual way. [cabal](https://www.haskell.org/cabal/) is the other Haskell build tool. If you're a cabal expert, use it in the usual way, eg:
**`cabal update`**\
**`cabal install hledger-1.11 hledger-ui-1.11 hledger-web-1.11 hledger-api-1.11 hledger-diff-0.2.0.14 hledger-iadd-1.3.6 hledger-interest-1.5.2`**\
</div>
#### Set up PATH
You will probably see a message about where the executables were installed.
After installation, make sure this install directory is configured in your shell's \$PATH
(preferably near the start of it, to preempt older hledger system packages you may have installed).
The install directory is:
| | on non-Windows systems | on Windows
|--------------------|------------------------|------------------------------------------
| If stack was used | `$HOME/.local/bin` | `%APPDATA%\local\bin` (eg&nbsp;`C:\Users\Joe\AppData\Roaming\local\bin`)
| If cabal was used | `$HOME/.cabal/bin` | `%APPDATA%\cabal\bin`
How to configure \$PATH is platform- and shell-specific.
If you are using bash, this should take care of it:
**`echo "export PATH=~/.local/bin:~/.cabal/bin:$PATH" >> ~/.bashrc && source ~/.bashrc`**
\
#### Test the installation
You should now be able to run the hledger tools (whichever ones you installed) and see the expected versions:
`$`**`hledger --version`**\
`hledger 1.11`\
`$`**`hledger-ui --version`**\
`hledger-ui 1.11`\
`$`**`hledger web --version`**\
`hledger-web 1.11`\
`$`**`hledger iadd --version`**\
`This is hledger-iadd version 1.3.6`\
And you can check that the unit tests pass (just for fun):
`$`**`hledger test`**\
`...`\
`✅ 176 tests passed, no failures! 👍 🎉`\
<a name="c"></a> <a name="c"></a>
## c. build the development version ## c. Build the development version
Also a good choice. Our master branch is stable enough for daily use, Also a good choice. Our master branch is stable enough for daily use,
and includes the [latest improvements](https://github.com/simonmichael/hledger/commits/master). and includes the [latest improvements](https://github.com/simonmichael/hledger/commits/master).
You'll need [git](https://en.wikipedia.org/wiki/Git) and
[`stack`](http://haskell-lang.org/get-started) or [cabal](https://www.haskell.org/cabal/).
Eg, this will build and install all of the main hledger tools using stack:
1. **Install [git](https://en.wikipedia.org/wiki/Git) and [`stack`](#b2)** **`git clone https://github.com/simonmichael/hledger`**\
2. **`git clone https://github.com/simonmichael/hledger`** **`cd hledger`**\
3. **`cd hledger`** **`stack install`**\
4. **`stack install [hledger]`** *# build all (or, just the command line UI)*
5. **[If you see link errors..](#link-errors)**
6. **[Set up \$PATH](#set-up-path)**
7. **[Test](#test)**
(Development versions will have a .99 suffix, 1.10.99 means 1.11-dev)
cabal users may find the `cabal-install.sh` or `cabal.project` files useful. cabal users may find the `cabal-install.sh` or `cabal.project` files useful.
See the troubleshooting, PATH, and test tips [above](#b).
Note development builds will have a .99 suffix (eg 1.11.99 means "1.12-dev").

View File

@ -57,15 +57,14 @@ is updated frequently; here are the
[latest changes](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh). [latest changes](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh).
<!--
## Latest minor release ## Latest minor release
<http://hackage.haskell.org/package/hledger-lib-1.9.1/changelog> <http://hackage.haskell.org/package/hledger-lib-1.11.1/changelog>
<http://hackage.haskell.org/package/hledger-1.9.1/changelog> <http://hackage.haskell.org/package/hledger-1.11.1/changelog>
<http://hackage.haskell.org/package/hledger-ui-1.9.1/changelog> <http://hackage.haskell.org/package/hledger-ui-1.11.1/changelog>
<http://hackage.haskell.org/package/hledger-web-1.9.2/changelog> <http://hackage.haskell.org/package/hledger-web-1.11.1/changelog>
<http://hackage.haskell.org/package/hledger-api-1.9.1/changelog> <http://hackage.haskell.org/package/hledger-api-1.11.1/changelog>
-->
## 2018/9/30 hledger 1.11 ## 2018/9/30 hledger 1.11
@ -81,9 +80,9 @@ fixes
<!-- [project](#project-wide-changes-for-1.11) --> <!-- [project](#project-wide-changes-for-1.11) -->
[hledger](#hledger-1.11-1) [hledger](#hledger-1.11-1)
<!-- | [hledger-ui](#hledger-ui-1.11) --> | [hledger-ui](#hledger-ui-1.11)
<!-- | [hledger-web](#hledger-web-1.11) --> | [hledger-web](#hledger-web-1.11)
<!-- | [hledger-api](#hledger-api-1.11) --> | [hledger-api](#hledger-api-1.11)
| [hledger-lib](#hledger-lib-1.11) | [hledger-lib](#hledger-lib-1.11)
| [credits](#credits-1.11) | [credits](#credits-1.11)
@ -115,7 +114,7 @@ fixes
* prices: query arguments are now supported. Prices can be filtered by * prices: query arguments are now supported. Prices can be filtered by
date, and postings providing transaction prices can also be filtered. date, and postings providing transaction prices can also be filtered.
* rewrite: help clarifies relation to print --auto (#745) * rewrite: help clarifies relation to print --auto ([#745](https://github.com/simonmichael/hledger/issues/745))
* roi: a new command to compute return on investment, based on hledger-irr * roi: a new command to compute return on investment, based on hledger-irr
@ -124,7 +123,7 @@ fixes
* csv: We use a more robust CSV lib (cassava) and now support * csv: We use a more robust CSV lib (cassava) and now support
non-comma separators, eg --separator ';' (experimental, this flag non-comma separators, eg --separator ';' (experimental, this flag
will probably become a CSV rule) (#829) will probably become a CSV rule) ([#829](https://github.com/simonmichael/hledger/issues/829))
* csv: interpolated field names in values are now properly case insensitive, so * csv: interpolated field names in values are now properly case insensitive, so
this works: this works:
@ -133,20 +132,36 @@ fixes
date %Transaction_Date date %Transaction_Date
* journal: D (default commodity) directives no longer break multiplier * journal: D (default commodity) directives no longer break multiplier
amounts in transaction modifiers (AKA automated postings) (#860) amounts in transaction modifiers (AKA automated postings) ([#860](https://github.com/simonmichael/hledger/issues/860))
* journal: "Automated Postings" have been renamed to "Transaction Modifiers". * journal: "Automated Postings" have been renamed to "Transaction Modifiers".
* journal: transaction comments in transaction modifier rules are now parsed correctly. (#745) * journal: transaction comments in transaction modifier rules are now parsed correctly. ([#745](https://github.com/simonmichael/hledger/issues/745))
* journal: when include files form a cycle, we give an error instead * journal: when include files form a cycle, we give an error instead
of hanging. of hanging.
* upper-case day/month names in period expressions no longer give an error (#847, #852) * upper-case day/month names in period expressions no longer give an error ([#847](https://github.com/simonmichael/hledger/issues/847), [#852](https://github.com/simonmichael/hledger/issues/852))
### hledger-ui 1.11
* uses hledger-lib 1.11
### hledger-web 1.11
* uses hledger-lib 1.11
### hledger-api 1.11
* uses hledger-lib 1.11
### hledger-lib 1.11 ### hledger-lib 1.11
* compilation now works when locale is unset (#849) * compilation now works when locale is unset ([#849](https://github.com/simonmichael/hledger/issues/849))
* all unit tests have been converted from HUnit+test-framework to easytest * all unit tests have been converted from HUnit+test-framework to easytest
@ -260,7 +275,7 @@ misc fixes
* readJournalFile(s) cleanup, these now use InputOpts * readJournalFile(s) cleanup, these now use InputOpts
* doctests now run a bit faster (#802) * doctests now run a bit faster ([#802](https://github.com/simonmichael/hledger/issues/802))
### hledger 1.10 ### hledger 1.10
@ -268,16 +283,16 @@ misc fixes
* journal: many parse error messages have become more informative, and * journal: many parse error messages have become more informative, and
some now show the source line and error location. some now show the source line and error location.
* journal: `;tag:` is no longer parsed as a tag named ";tag" (#655) * journal: `;tag:` is no longer parsed as a tag named ";tag" ([#655](https://github.com/simonmichael/hledger/issues/655))
* journal: transaction price amounts having their own price amounts is * journal: transaction price amounts having their own price amounts is
now a parse error now a parse error
* journal: amounts with space as digit group separator and trailing whitespace * journal: amounts with space as digit group separator and trailing whitespace
now parse correctly (#780) now parse correctly ([#780](https://github.com/simonmichael/hledger/issues/780))
* journal: in amounts containing digits and a single space, the space * journal: in amounts containing digits and a single space, the space
is now interpreted as a digit group separator, not a decimal separator (#749) is now interpreted as a digit group separator, not a decimal separator ([#749](https://github.com/simonmichael/hledger/issues/749))
* journal: in commodity/format/D directives, the amount must now include a decimal separator. * journal: in commodity/format/D directives, the amount must now include a decimal separator.
@ -298,7 +313,7 @@ misc fixes
semantics, especially with multiple files. The manual now describes semantics, especially with multiple files. The manual now describes
their behaviour precisely. their behaviour precisely.
* journal: `alias` and `apply account` directives now affect `account` directives (#825) * journal: `alias` and `apply account` directives now affect `account` directives ([#825](https://github.com/simonmichael/hledger/issues/825))
* journal: periodic transactions can now have all the usual transaction fields * journal: periodic transactions can now have all the usual transaction fields
(status mark, code, description, comment), for generating more expressive (status mark, code, description, comment), for generating more expressive
@ -308,18 +323,18 @@ misc fixes
expression attached as a tag named "recur". expression attached as a tag named "recur".
* journal: periodic transactions now start on the first instance of the * journal: periodic transactions now start on the first instance of the
recurring date, rather than the day after the last regular transaction (#750) recurring date, rather than the day after the last regular transaction ([#750](https://github.com/simonmichael/hledger/issues/750))
* journal: periodic transaction rules now allow period expressions relative to today's date * journal: periodic transaction rules now allow period expressions relative to today's date
* csv: amount-in/amount-out errors are more detailed * csv: amount-in/amount-out errors are more detailed
* balance: --drop is now ignored when not in flat mode, * balance: --drop is now ignored when not in flat mode,
rather than producing a corrupted report (#754) rather than producing a corrupted report ([#754](https://github.com/simonmichael/hledger/issues/754))
* budget: --drop now preserves the <unbudgeted> top-level account in --budget reports * budget: --drop now preserves the <unbudgeted> top-level account in --budget reports
* register: in CSV output, the code field is now included (#746) * register: in CSV output, the code field is now included ([#746](https://github.com/simonmichael/hledger/issues/746))
* smart dates now allow the YYYYMM format, and are better documented * smart dates now allow the YYYYMM format, and are better documented
@ -328,7 +343,7 @@ misc fixes
### hledger-ui 1.10 ### hledger-ui 1.10
* the effect of --value, --forecast, and --anon flags is now preserved on reload (#753) * the effect of --value, --forecast, and --anon flags is now preserved on reload ([#753](https://github.com/simonmichael/hledger/issues/753))
* edit-at-transaction-position is now also supported when $EDITOR is neovim * edit-at-transaction-position is now also supported when $EDITOR is neovim
@ -422,7 +437,7 @@ found when reading files.
customize sorting. bal/bs/cf/is will sort accounts by account code, customize sorting. bal/bs/cf/is will sort accounts by account code,
if any, then account name. if any, then account name.
* journal: support scientific number notation (#704, #706) * journal: support scientific number notation ([#704](https://github.com/simonmichael/hledger/issues/704), [#706](https://github.com/simonmichael/hledger/issues/706))
* csv: reading a CSV file containing no records is no longer an error * csv: reading a CSV file containing no records is no longer an error
@ -530,23 +545,23 @@ Alvaro Fernando García.
### hledger-lib 1.5 ### hledger-lib 1.5
* -V/--value uses today's market prices by default, not those of last transaction date. #683, #648) * -V/--value uses today's market prices by default, not those of last transaction date. [#683](https://github.com/simonmichael/hledger/issues/683), [#648](https://github.com/simonmichael/hledger/issues/648))
* csv: allow balance assignment (balance assertion only, no amount) in csv records (Nadrieril) * csv: allow balance assignment (balance assertion only, no amount) in csv records (Nadrieril)
* journal: allow space as digit group separator character, #330 (Mykola Orliuk) * journal: allow space as digit group separator character, [#330](https://github.com/simonmichael/hledger/issues/330) (Mykola Orliuk)
* journal: balance assertion errors now show line of failed assertion posting, #481 (Sam Jeeves) * journal: balance assertion errors now show line of failed assertion posting, [#481](https://github.com/simonmichael/hledger/issues/481) (Sam Jeeves)
* journal: better errors for directives, #402 (Mykola Orliuk) * journal: better errors for directives, [#402](https://github.com/simonmichael/hledger/issues/402) (Mykola Orliuk)
* journal: better errors for included files, #660 (Mykola Orliuk) * journal: better errors for included files, [#660](https://github.com/simonmichael/hledger/issues/660) (Mykola Orliuk)
* journal: commodity directives in parent files are inherited by included files, #487 (Mykola Orliuk) * journal: commodity directives in parent files are inherited by included files, [#487](https://github.com/simonmichael/hledger/issues/487) (Mykola Orliuk)
* journal: commodity directives limits precision even after -B, #509 (Mykola Orliuk) * journal: commodity directives limits precision even after -B, [#509](https://github.com/simonmichael/hledger/issues/509) (Mykola Orliuk)
* journal: decimal point/digit group separator chars are now inferred from an applicable commodity directive or default commodity directive. #399, #487 (Mykola Orliuk) * journal: decimal point/digit group separator chars are now inferred from an applicable commodity directive or default commodity directive. [#399](https://github.com/simonmichael/hledger/issues/399), [#487](https://github.com/simonmichael/hledger/issues/487) (Mykola Orliuk)
* journal: numbers are parsed more strictly (Mykola Orliuk) * journal: numbers are parsed more strictly (Mykola Orliuk)
@ -572,7 +587,7 @@ Alvaro Fernando García.
* --forecast generates Ledger-style periodic transactions in the future (Dmitry Astapov, Mykola Orliuk) * --forecast generates Ledger-style periodic transactions in the future (Dmitry Astapov, Mykola Orliuk)
* -V/--value uses today's market prices by default, not those of last transaction date. #683, #648 * -V/--value uses today's market prices by default, not those of last transaction date. [#683](https://github.com/simonmichael/hledger/issues/683), [#648](https://github.com/simonmichael/hledger/issues/648)
* add: suggest implied (parent) and declared (by account directives) account names also * add: suggest implied (parent) and declared (by account directives) account names also
@ -585,14 +600,14 @@ Alvaro Fernando García.
* import: the output of --dry-run is now valid journal format * import: the output of --dry-run is now valid journal format
* print: -B shows converted amounts again, as in 1.1, even without * print: -B shows converted amounts again, as in 1.1, even without
-x. #551 (Mykola Orliuk, Simon Michael) -x. [#551](https://github.com/simonmichael/hledger/issues/551) (Mykola Orliuk, Simon Michael)
* tag: the first argument now filters tag names, additional arguments * tag: the first argument now filters tag names, additional arguments
filter transactions (#261) filter transactions ([#261](https://github.com/simonmichael/hledger/issues/261))
### hledger-ui 1.5 ### hledger-ui 1.5
* fix help -> view manual (on posix platforms) #623 * fix help -> view manual (on posix platforms) [#623](https://github.com/simonmichael/hledger/issues/623)
* support -V/--value, --forecast, --auto * support -V/--value, --forecast, --auto
@ -664,7 +679,7 @@ all major hledger packages. See http://hledger.org/download for details.
* add readJournalFile[s]WithOpts, with simpler arguments and support * add readJournalFile[s]WithOpts, with simpler arguments and support
for detecting new transactions since the last read. for detecting new transactions since the last read.
* query: add payee: and note: query terms, improve description/payee/note docs (Jakub Zárybnický, Simon Michael, #598, #608) * query: add payee: and note: query terms, improve description/payee/note docs (Jakub Zárybnický, Simon Michael, [#598](https://github.com/simonmichael/hledger/issues/598), [#608](https://github.com/simonmichael/hledger/issues/608))
* journal, cli: make trailing whitespace significant in regex account aliases * journal, cli: make trailing whitespace significant in regex account aliases
Trailing whitespace in the replacement part of a regular expression Trailing whitespace in the replacement part of a regular expression
@ -685,7 +700,7 @@ This simplifies things and facilitates future improvements.
* deps: allow ansi-terminal 0.7 * deps: allow ansi-terminal 0.7
* deps: add missing parsec lower bound, possibly related to #596, fpco/stackage#2835 * deps: add missing parsec lower bound, possibly related to [#596](https://github.com/simonmichael/hledger/issues/596), [fpco/stackage#2835](https://github.com/fpco/stackage/issues/2835)
* deps: drop oldtime flag, require time 1.5+ * deps: drop oldtime flag, require time 1.5+
@ -695,18 +710,18 @@ This simplifies things and facilitates future improvements.
<!-- 1.3.1 (2017/8/25) --> <!-- 1.3.1 (2017/8/25) -->
* Fix a bug with -H showing nothing for empty periods (#583, Nicholas Niro) * Fix a bug with -H showing nothing for empty periods ([#583](https://github.com/simonmichael/hledger/issues/583), Nicholas Niro)
This patch fixes a bug that happened when using the -H option on This patch fixes a bug that happened when using the -H option on
a period without any transaction. Previously, the behavior was no a period without any transaction. Previously, the behavior was no
output at all even though it should have shown the previous ending balances output at all even though it should have shown the previous ending balances
of past transactions. (This is similar to previously using -H with -E, of past transactions. (This is similar to previously using -H with -E,
but with the extra advantage of not showing empty accounts) but with the extra advantage of not showing empty accounts)
* allow megaparsec 6 (#594) * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594))
* allow megaparsec-6.1 (Hans-Peter Deifel) * allow megaparsec-6.1 (Hans-Peter Deifel)
* fix test suite with Cabal 2 (#596) * fix test suite with Cabal 2 ([#596](https://github.com/simonmichael/hledger/issues/596))
### hledger 1.4 ### hledger 1.4
@ -720,9 +735,9 @@ but with the extra advantage of not showing empty accounts)
* cli: accept -NUM as a shortcut for --depth=NUM (eg: -2) * cli: accept -NUM as a shortcut for --depth=NUM (eg: -2)
* cli: improve command-line help for --date2 (#604) * cli: improve command-line help for --date2 ([#604](https://github.com/simonmichael/hledger/issues/604))
* cli: make --help and -h the same, drop --man and --info for now (#579) * cli: make --help and -h the same, drop --man and --info for now ([#579](https://github.com/simonmichael/hledger/issues/579))
* help: offers multiple formats, accepts topic substrings. * help: offers multiple formats, accepts topic substrings.
The separate info/man commands have been dropped. help now The separate info/man commands have been dropped. help now
@ -734,7 +749,7 @@ but with the extra advantage of not showing empty accounts)
- otherwise it prints on stdout - otherwise it prints on stdout
- (and it always prints on stdout when piped). - (and it always prints on stdout when piped).
You can override this with the `--info`/`--man`/`--pager`/`--cat` flags. You can override this with the `--info`/`--man`/`--pager`/`--cat` flags.
(#579) ([#579](https://github.com/simonmichael/hledger/issues/579))
* bal/bs/cf/is: --sort-amount/-S sorts by largest amount instead of * bal/bs/cf/is: --sort-amount/-S sorts by largest amount instead of
account name account name
@ -747,9 +762,9 @@ but with the extra advantage of not showing empty accounts)
single final blank line. Previously, amounts wider than the column single final blank line. Previously, amounts wider than the column
headings would be separated by only a single space. headings would be separated by only a single space.
* bs/is: don't let an empty subreport disable the grand totals (fixes #588) * bs/is: don't let an empty subreport disable the grand totals (fixes [#588](https://github.com/simonmichael/hledger/issues/588))
* cf: exclude asset accounts with ":fixed" in their name (Christian G. Warden, Simon Michael, #584) * cf: exclude asset accounts with ":fixed" in their name (Christian G. Warden, Simon Michael, [#584](https://github.com/simonmichael/hledger/issues/584))
* new balancesheetequity command: like balancesheet but also shows * new balancesheetequity command: like balancesheet but also shows
equity accounts (Nicholas Niro) equity accounts (Nicholas Niro)
@ -785,9 +800,9 @@ but with the extra advantage of not showing empty accounts)
<!-- 1.3.1 (2017/8/25) --> <!-- 1.3.1 (2017/8/25) -->
* bs/is: don't let an empty subreport disable the grand totals (#588) * bs/is: don't let an empty subreport disable the grand totals ([#588](https://github.com/simonmichael/hledger/issues/588))
* allow megaparsec 6 (#594) * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594))
* allow megaparsec-6.1 (Hans-Peter Deifel) * allow megaparsec-6.1 (Hans-Peter Deifel)
@ -797,7 +812,7 @@ but with the extra advantage of not showing empty accounts)
* a @FILE argument reads flags & args from FILE, one per line * a @FILE argument reads flags & args from FILE, one per line
* enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický) * enable --pivot and --anon options, like hledger CLI ([#474](https://github.com/simonmichael/hledger/issues/474)) (Jakub Zárybnický)
* accept -NUM as a shortcut for --depth NUM * accept -NUM as a shortcut for --depth NUM
@ -807,7 +822,7 @@ but with the extra advantage of not showing empty accounts)
<!-- # 1.3.1 (2017/8/25) --> <!-- # 1.3.1 (2017/8/25) -->
* allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel) * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594), Simon Michael, Hans-Peter Deifel)
* allow megaparsec-6.1 (Hans-Peter Deifel) * allow megaparsec-6.1 (Hans-Peter Deifel)
@ -821,9 +836,9 @@ but with the extra advantage of not showing empty accounts)
* a @FILE argument reads flags & args from FILE, one per line * a @FILE argument reads flags & args from FILE, one per line
* enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický) * enable --pivot and --anon options, like hledger CLI ([#474](https://github.com/simonmichael/hledger/issues/474)) (Jakub Zárybnický)
* web: Make "Add transaction" button tabbable (#430) (Jakub Zárybnický) * web: Make "Add transaction" button tabbable ([#430](https://github.com/simonmichael/hledger/issues/430)) (Jakub Zárybnický)
* accept -NUM as a shortcut for --depth NUM * accept -NUM as a shortcut for --depth NUM
@ -835,7 +850,7 @@ but with the extra advantage of not showing empty accounts)
<!-- # 1.3.1 (2017/8/25) --> <!-- # 1.3.1 (2017/8/25) -->
* allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel) * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594), Simon Michael, Hans-Peter Deifel)
* allow megaparsec-6.1 (Hans-Peter Deifel) * allow megaparsec-6.1 (Hans-Peter Deifel)
@ -843,7 +858,7 @@ but with the extra advantage of not showing empty accounts)
### hledger-api 1.4 ### hledger-api 1.4
* api: add support for swagger2 2.1.5+ (fixes #612) * api: add support for swagger2 2.1.5+ (fixes [#612](https://github.com/simonmichael/hledger/issues/612))
<!-- # 1.3.1 (2017/8/25) --> <!-- # 1.3.1 (2017/8/25) -->
@ -911,19 +926,19 @@ make changelog-draft shows the commits since last tag as org nodes
The "uncleared" transaction/posting status (and associated UI flags The "uncleared" transaction/posting status (and associated UI flags
and keys) has been renamed to "unmarked" to remove ambiguity and and keys) has been renamed to "unmarked" to remove ambiguity and
confusion. See the issue and linked mail list discussion for more confusion. See the issue and linked mail list discussion for more
background. (#564) background. ([#564](https://github.com/simonmichael/hledger/issues/564))
#### csv format #### csv format
In CSV conversion rules, assigning to the "balance" field name In CSV conversion rules, assigning to the "balance" field name
creates balance assertions (#537, Dmitry Astapov). creates balance assertions ([#537](https://github.com/simonmichael/hledger/issues/537), Dmitry Astapov).
Doubled minus signs are handled more robustly (fixes #524, Nicolas Doubled minus signs are handled more robustly (fixes [#524](https://github.com/simonmichael/hledger/issues/524), Nicolas
Wavrant, Simon Michael) Wavrant, Simon Michael)
#### Misc #### Misc
Multiple status: query terms are now OR'd together. (#564) Multiple status: query terms are now OR'd together. ([#564](https://github.com/simonmichael/hledger/issues/564))
Deps: allow megaparsec 5.3. Deps: allow megaparsec 5.3.
@ -936,21 +951,21 @@ and keys, have been renamed to "unmarked" to remove ambiguity and
confusion. This means that we have dropped the `--uncleared` flag, confusion. This means that we have dropped the `--uncleared` flag,
and our `-U` flag now matches only unmarked things and not pending and our `-U` flag now matches only unmarked things and not pending
ones. See the issue and linked mail list discussion for more ones. See the issue and linked mail list discussion for more
background. (#564) background. ([#564](https://github.com/simonmichael/hledger/issues/564))
Also the -P short flag has been added for --pending, and the -U/-P/-C Also the -P short flag has been added for --pending, and the -U/-P/-C
flags can be combined. flags can be combined.
bs/is: fix "Ratio has zero denominator" error (#535) bs/is: fix "Ratio has zero denominator" error ([#535](https://github.com/simonmichael/hledger/issues/535))
bs/is/cf: fix --flat (#552) (Justin Le, Simon Michael) bs/is/cf: fix --flat ([#552](https://github.com/simonmichael/hledger/issues/552)) (Justin Le, Simon Michael)
bal/bs/is/cf: show negative amounts in red (Simon Michael, Justin Le). bal/bs/is/cf: show negative amounts in red (Simon Michael, Justin Le).
These commands now show negative amounts in red, when hledger detects These commands now show negative amounts in red, when hledger detects
that ANSI codes are supported, (ie when TERM is not "dumb" and stdout that ANSI codes are supported, (ie when TERM is not "dumb" and stdout
is not being redirected or piped). is not being redirected or piped).
print: show pending mark on postings (fixes #563). print: show pending mark on postings (fixes [#563](https://github.com/simonmichael/hledger/issues/563)).
A pending mark on postings is now displayed, just like a cleared mark. A pending mark on postings is now displayed, just like a cleared mark.
Also there will now be a space between the mark and account name. Also there will now be a space between the mark and account name.
@ -964,7 +979,7 @@ prices: add --inverted-costs flag, sort output, increase precision
rewrite: add support for rewriting multipler postings into different rewrite: add support for rewriting multipler postings into different
commodities. For example, postings in hours can be used to generate commodities. For example, postings in hours can be used to generate
postings in USD. (#557) (Christian G. Warden) postings in USD. ([#557](https://github.com/simonmichael/hledger/issues/557)) (Christian G. Warden)
`make addons` compiles the experimental add-ons. `make addons` compiles the experimental add-ons.
@ -976,11 +991,11 @@ The "uncleared" status, and associated UI flags and keys, have been
renamed to "unmarked" to remove ambiguity and confusion. This means renamed to "unmarked" to remove ambiguity and confusion. This means
that we have dropped the `--uncleared` flag, and our `-U` flag now that we have dropped the `--uncleared` flag, and our `-U` flag now
matches only unmarked things and not pending ones. See the issue and matches only unmarked things and not pending ones. See the issue and
linked mail list discussion for more background. (#564) linked mail list discussion for more background. ([#564](https://github.com/simonmichael/hledger/issues/564))
The P key toggles pending mode, consistent with U (unmarked) and C The P key toggles pending mode, consistent with U (unmarked) and C
(cleared). There is also a temporary --status-toggles flag for testing (cleared). There is also a temporary --status-toggles flag for testing
other toggle styles; see `hledger-ui -h`. (#564) other toggle styles; see `hledger-ui -h`. ([#564](https://github.com/simonmichael/hledger/issues/564))
There is now less "warping" of selection when lists change: There is now less "warping" of selection when lists change:
@ -1013,7 +1028,7 @@ Emacs movement keys are now supported, as well as VI keys.
In the transaction screen, amounts are now better aligned, eg when In the transaction screen, amounts are now better aligned, eg when
there are posting status marks or virtual postings. there are posting status marks or virtual postings.
Deps: allow brick 0.19 (#575, Felix Yan, Simon Michael) Deps: allow brick 0.19 ([#575](https://github.com/simonmichael/hledger/issues/575), Felix Yan, Simon Michael)
### hledger-web 1.3 ### hledger-web 1.3
@ -1067,7 +1082,7 @@ Michael Walker.
bump stack config to latest lts, bump stack config to latest lts,
bump brick to 0.15.2 to allow hledger-iadd install in hledger dir, bump brick to 0.15.2 to allow hledger-iadd install in hledger dir,
update cabal files to latest hpack 0.17.0/stack 1.4 format (#512), update cabal files to latest hpack 0.17.0/stack 1.4 format ([#512](https://github.com/simonmichael/hledger/issues/512)),
use more accurate license tag in Cabal file (Peter Simons). use more accurate license tag in Cabal file (Peter Simons).
#### Finance #### Finance
@ -1133,13 +1148,13 @@ been disabled, reducing build dependencies.
#### Misc #### Misc
Fix a bug when tying the knot between postings and their parent transaction, reducing memory usage by about 10% (#483) (Mykola Orliuk) Fix a bug when tying the knot between postings and their parent transaction, reducing memory usage by about 10% ([#483](https://github.com/simonmichael/hledger/issues/483)) (Mykola Orliuk)
Fix a few spaceleaks (#413) (Moritz Kiefer) Fix a few spaceleaks ([#413](https://github.com/simonmichael/hledger/issues/413)) (Moritz Kiefer)
Add Ledger.Parse.Text to package.yaml, fixing a potential build failure. Add Ledger.Parse.Text to package.yaml, fixing a potential build failure.
Allow megaparsec 5.2 (#503) Allow megaparsec 5.2 ([#503](https://github.com/simonmichael/hledger/issues/503))
Rename optserror -> usageError, consolidate with other error functions Rename optserror -> usageError, consolidate with other error functions
@ -1148,7 +1163,7 @@ Rename optserror -> usageError, consolidate with other error functions
#### CLI #### CLI
"hledger" and "hledger -h" now print a better organised commands list "hledger" and "hledger -h" now print a better organised commands list
and general usage message respectively (#297). and general usage message respectively ([#297](https://github.com/simonmichael/hledger/issues/297)).
The common reporting flags can now be used anywhere on the command line. The common reporting flags can now be used anywhere on the command line.
@ -1212,7 +1227,7 @@ handles prices better, and adds balance assertions (Mykola Orliuk).
The rewrite command is more robust and powerful (Mykola Orliuk): The rewrite command is more robust and powerful (Mykola Orliuk):
- in addition to command-line rewrite options, it understands rewrite rules - in addition to command-line rewrite options, it understands rewrite rules
defined in the journal, similar to Ledger's automated transactions (#99). defined in the journal, similar to Ledger's automated transactions ([#99](https://github.com/simonmichael/hledger/issues/99)).
Eg: Eg:
```journal ```journal
= ^income = ^income
@ -1237,7 +1252,7 @@ The rewrite command is more robust and powerful (Mykola Orliuk):
#### balance #### balance
A new --pretty-tables option uses unicode characters for rendering A new --pretty-tables option uses unicode characters for rendering
table borders in multicolumn reports (#522) (Moritz Kiefer) table borders in multicolumn reports ([#522](https://github.com/simonmichael/hledger/issues/522)) (Moritz Kiefer)
#### balancesheet/cashflow/incomestatement #### balancesheet/cashflow/incomestatement
@ -1246,43 +1261,43 @@ and generally having the same features as the balance command. (Justin Le)
balancesheet has always ignored a begin date specified with a `-b` or balancesheet has always ignored a begin date specified with a `-b` or
`-p` option; now it also ignores a begin date specified with a `date:` `-p` option; now it also ignores a begin date specified with a `date:`
query. (Related discussion at #531) query. (Related discussion at [#531](https://github.com/simonmichael/hledger/issues/531))
#### print #### print
The output of print is now always a valid journal (fixes #465) (Mykola Orliuk). The output of print is now always a valid journal (fixes [#465](https://github.com/simonmichael/hledger/issues/465)) (Mykola Orliuk).
print now tries to preserves the format of implicit/explicit balancing print now tries to preserves the format of implicit/explicit balancing
amounts and prices, by default. To print with all amounts explicit, amounts and prices, by default. To print with all amounts explicit,
use the new `--explicit/-x` flag (fixes #442). (Mykola Orliuk) use the new `--explicit/-x` flag (fixes [#442](https://github.com/simonmichael/hledger/issues/442)). (Mykola Orliuk)
Don't lose the commodity of zero amounts/zero balance assertions (fixes #475) (Mykola Orliuk) Don't lose the commodity of zero amounts/zero balance assertions (fixes [#475](https://github.com/simonmichael/hledger/issues/475)) (Mykola Orliuk)
#### Misc #### Misc
Fix a regression in the readability of option parsing errors (#478) (Hans-Peter Deifel) Fix a regression in the readability of option parsing errors ([#478](https://github.com/simonmichael/hledger/issues/478)) (Hans-Peter Deifel)
Fix an example in Cli/Main.hs (Steven R. Baker) Fix an example in Cli/Main.hs (Steven R. Baker)
Allow megaparsec 5.2 (#503) Allow megaparsec 5.2 ([#503](https://github.com/simonmichael/hledger/issues/503))
### hledger-ui 1.2 ### hledger-ui 1.2
Fix a pattern match failure when pressing E on the transaction screen (fixes #508) Fix a pattern match failure when pressing E on the transaction screen (fixes [#508](https://github.com/simonmichael/hledger/issues/508))
Accounts with ? in name had empty registers (fixes #498) (Bryan Richter) Accounts with ? in name had empty registers (fixes [#498](https://github.com/simonmichael/hledger/issues/498)) (Bryan Richter)
Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons) Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons)
Allow megaparsec 5.2 (fixes #503) Allow megaparsec 5.2 (fixes [#503](https://github.com/simonmichael/hledger/issues/503))
Allow text-zipper 0.10 Allow text-zipper 0.10
### hledger-web 1.2 ### hledger-web 1.2
Accounts with ? in name had empty registers (fixes #498) (Bryan Richter) Accounts with ? in name had empty registers (fixes [#498](https://github.com/simonmichael/hledger/issues/498)) (Bryan Richter)
Allow megaparsec 5.2 (fixes #503) Allow megaparsec 5.2 (fixes [#503](https://github.com/simonmichael/hledger/issues/503))
<!-- ### hledger-api 1.2 --> <!-- ### hledger-api 1.2 -->

81
stack-ghc8.6.yaml Normal file
View File

@ -0,0 +1,81 @@
# stack build plan using GHC 8.6.1 and recent stackage nightly (WIP)
resolver: nightly-2018-10-08
packages:
- hledger-lib
- hledger
- hledger-ui
- hledger-web
- hledger-api
allow-newer: true
extra-deps:
# hledger-lib
- cassava-megaparsec-1.0.0
- easytest-0.2
- uglymemo-0.1.0.1
# hledger
- control-monad-free-0.6.2
- haskell-src-meta-0.8.0.3
- here-1.2.13
- lucid-2.9.10
- statistics-0.14.0.2
- vector-binary-instances-0.2.5
- wizards-1.0.2
# hledger-ui
- brick-0.41.2
- config-ini-0.2.3.0
- data-clist-0.1.2.1
- text-zipper-0.10.1
- vty-5.24
- word-wrap-0.4.1
# hledger-web
- asn1-encoding-0.9.5
- asn1-parse-0.9.4
- asn1-types-0.3.2
- byteable-0.1.1
- cipher-aes-0.2.11
- clientsession-0.9.1.2
- connection-0.2.8
- cprng-aes-0.6.1
- crypto-cipher-types-0.0.9
- crypto-random-0.0.9
- cryptonite-conduit-0.2.2
- email-validate-2.3.2.7
- http-client-tls-0.3.5.3
- http-conduit-2.3.2
- json-0.9.2
- pem-0.2.4
- persistent-2.8.2
- persistent-template-2.5.4
- securemem-0.1.10
- skein-1.0.9.4
- tls-1.4.1
- wai-app-static-3.1.6.2
- wai-handler-launch-3.0.2.4
- x509-1.7.4
- x509-store-1.6.6
- x509-system-1.6.6
- x509-validation-1.6.10
- yesod-1.6.0
- yesod-core-1.6.6
- yesod-form-1.6.2
- yesod-persistent-1.6.0
- yesod-static-1.6.0
# hledger-api
- http-media-0.7.1.3
- servant-0.14.1
- servant-server-0.14.1
- servant-swagger-1.1.5
- swagger2-2.3
nix:
pure: false
packages: [perl gmp ncurses zlib]

View File

@ -104,3 +104,22 @@ hledger register -b 2015-12 -e 2017-02 -f - assets:cash --forecast
2017/01/01 assets:cash $10000 $9390 2017/01/01 assets:cash $10000 $9390
>>>2 >>>2
>>>=0 >>>=0
# TODO
# 5. Y should affect the partial date in this periodic transaction.
# Also the recur tag's value ?
#hledger -f - print --forecast desc:forecast
#<<<
#Y 2000
#
#~ 2/1 forecast
#
#; a real transaction to set --forecast's start date
#2000/1/1 real
#
#>>>
#2000/02/01 forecast
# ; recur: 2000/2/1
#
#>>>2
#>>>=0

View File

@ -20,7 +20,7 @@
# the command name. # the command name.
# #
# - RawOpts: the command name, options, and arguments parsed by cmdargs, # - RawOpts: the command name, options, and arguments parsed by cmdargs,
# as an assocation list of strings. Eg: # as an association list of strings. Eg:
# [("command","register"),("args","a"),("debug",""),("help","")] # [("command","register"),("args","a"),("debug",""),("help","")]
# #
# - CliOpts: a RawOpts, plus the same information with some additional # - CliOpts: a RawOpts, plus the same information with some additional