diff --git a/.appveyor.yml b/.appveyor.yml index cb2203cbc..ca3ffc621 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -41,10 +41,13 @@ install: #- dir # install latest stack release -# - curl -skL -ostack.zip http://www.stackage.org/stack/windows-x86_64 -# - 7z x stack.zip stack.exe -# - copy stack.exe stack-release.exe -# - stack --version +#- curl -skL -ostack.zip http://www.stackage.org/stack/windows-x86_64 +#- 7z x stack.zip stack.exe + +# 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 # - 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 # 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 -- dir C:\Users\appveyor\AppData\Roaming\local\bin +#- dir C:\Users\appveyor\AppData\Roaming\local\bin # - 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 stack.exe -- stack --version +#- stack --version #- dir # # install ghc #- stack setup -# use ghc 8.2 to avoid a hledger-web -> network/stack build issue on windows, -# network 2.7.0.1 should work around it when released +# use ghc 8.2 to avoid hledger-web -> network/stack/ghc/windows build issue # https://github.com/haskell/network/issues/313 # 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% #- stack install shelltestrunner @@ -79,9 +83,13 @@ install: # hledger-ui's vty dep isn't available on windows # hledger-api not tried recently build_script: -#- stack build --test --copy-bins --local-bin-path=. hledger hledger-web -- stack build --test --copy-bins --local-bin-path=. hledger hledger-web --stack-yaml=stack-ghc8.2.yaml +# 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 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 + #- hledger-install/hledger-install.sh #- make stacktest diff --git a/.version b/.version index 096015870..e3920ffa9 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.11 +1.11.99 diff --git a/Shake.hs b/Shake.hs index cb702354b..1dd60c115 100755 --- a/Shake.hs +++ b/Shake.hs @@ -138,7 +138,7 @@ main = do webmanpages = ["site" manpageNameToUri m <.> "md" | m <- manpageNames] -- 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 webhtmlpages diff --git a/doc/ANNOUNCE b/doc/ANNOUNCE index 5f53aa8c2..655121331 100644 --- a/doc/ANNOUNCE +++ b/doc/ANNOUNCE @@ -1,73 +1,65 @@ -hledger (http://hledger.org) is a friendly, robust, cross-platform -program for tracking money, time or other commodities, using -double-entry accounting, simple plain text file formats, and -command-line, curses or web UIs. +hledger is a robust, cross-platform "plain text accounting" tool, for +tracking money, time, stocks, cryptocurrencies or any other commodity, +using double-entry accounting, private or shared plain text files, +revision control, and command-line, curses or web UIs. -I'm very pleased to announce hledger 1.10, including work by release -contributors: - -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 +I'm pleased to announce the on-schedule release of hledger 1.12. +Thanks to release contributors: A, B. +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 -$ less hledger-install.sh # do security review +Full release notes are at http://hledger.org/release-notes.html#hledger-1.12 + + +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 -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 -h # quick help -$ hledger help # list built-in manuals -$ hledger add # record some transactions +$ hledger add # record some transactions, with guidance +$ hledger print # show recorded transactions +$ hledger balance # show totals by account +$ hledger -h # show quick help $ hledger # list available commands +$ hledger help # list built-in manuals -Next, I encourage you to at least skim the tutorials and docs at -http://hledger.org. - -Say hello and ask questions in the #hledger IRC channel on Freenode: -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. +To get oriented, see the tutorials and manuals at http://hledger.org . +To get help, say hello and ask questions in the #hledger IRC channel +on Freenode, accessible at http://irc.hledger.org . +New users and all forms of help are always welcome! -Best! +Best, -Simon diff --git a/doc/CHANGES b/doc/CHANGES deleted file mode 100644 index 68e818b61..000000000 --- a/doc/CHANGES +++ /dev/null @@ -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. - diff --git a/doc/lib.m4 b/doc/lib.m4 index ea7f7a336..80c078f28 100644 --- a/doc/lib.m4 +++ b/doc/lib.m4 @@ -8,7 +8,7 @@ m4_define({{_webcombined_}}, m4_ifdef({{WEB && COMBINED}},{{$1}}) )m4_dnl m4_dnl m4_define({{_author_}}, {{}})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 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. diff --git a/hledger-api/CHANGES b/hledger-api/CHANGES index fbe5b1c3e..0f421974a 100644 --- a/hledger-api/CHANGES +++ b/hledger-api/CHANGES @@ -1,6 +1,11 @@ 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) * use hledger 1.11 diff --git a/hledger-api/hledger-api.1 b/hledger-api/hledger-api.1 index 0d4801786..eb752ebb2 100644 --- a/hledger-api/hledger-api.1 +++ b/hledger-api/hledger-api.1 @@ -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" diff --git a/hledger-api/hledger-api.cabal b/hledger-api/hledger-api.cabal index bb1b0768d..4dfd0f60f 100644 --- a/hledger-api/hledger-api.cabal +++ b/hledger-api/hledger-api.cabal @@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack -- --- hash: 7f5a11be3e9db0d4fcebb5b663ee988461de6d815042a7785f9076e083dde205 +-- hash: 79786a2effbdf3258e88ee988c7cbbab5951550bac768bab7cbd1c9080fd198d name: hledger-api -version: 1.11 +version: 1.11.99 synopsis: Web API server for the hledger accounting tool description: This is a simple web API server for hledger data. It comes with a series of simple client-side web app examples. @@ -45,7 +45,7 @@ executable hledger-api other-modules: Paths_hledger_api ghc-options: -threaded - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: Decimal , aeson @@ -55,8 +55,8 @@ executable hledger-api , data-default >=0.5 , docopt , either - , hledger >=1.11 && <1.12 - , hledger-lib >=1.11 && <1.12 + , hledger >=1.11.99 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , microlens >=0.4 , microlens-platform >=0.2.3.1 , safe diff --git a/hledger-api/hledger-api.hs b/hledger-api/hledger-api.hs index db910dfdc..87368cb7f 100644 --- a/hledger-api/hledger-api.hs +++ b/hledger-api/hledger-api.hs @@ -37,12 +37,12 @@ import Text.Printf import Hledger.Query import Hledger.Cli hiding (Reader, version) -hledgerApiVersion="1.11" +hledgerApiVersion="1.11.99" -- https://github.com/docopt/docopt.hs#readme doc :: Docopt doc = [docopt| -hledger-api 1.11 +hledger-api 1.11.99 Serves hledger data and reports as a JSON web API. diff --git a/hledger-api/hledger-api.info b/hledger-api/hledger-api.info index 175617437..8ab16d99c 100644 --- a/hledger-api/hledger-api.info +++ b/hledger-api/hledger-api.info @@ -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) -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 diff --git a/hledger-api/hledger-api.txt b/hledger-api/hledger-api.txt index 0f6ac6917..434e766f5 100644 --- a/hledger-api/hledger-api.txt +++ b/hledger-api/hledger-api.txt @@ -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) diff --git a/hledger-api/package.yaml b/hledger-api/package.yaml index 672a757af..3fa57319a 100644 --- a/hledger-api/package.yaml +++ b/hledger-api/package.yaml @@ -1,5 +1,5 @@ name: hledger-api -version: '1.11' +version: '1.11.99' synopsis: Web API server for the hledger accounting tool description: | This is a simple web API server for hledger data. @@ -32,8 +32,8 @@ extra-source-files: #data-files: dependencies: -- hledger-lib >=1.11 && <1.12 -- hledger >=1.11 && <1.12 +- hledger-lib >=1.11.99 && <1.12 +- hledger >=1.11.99 && <1.12 - base >=4.8 && <4.12 - aeson - bytestring @@ -58,4 +58,4 @@ executables: hledger-api: main: hledger-api.hs ghc-options: -threaded - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" diff --git a/hledger-install/hledger-install.sh b/hledger-install/hledger-install.sh index f4a025612..2c6e3c223 100755 --- a/hledger-install/hledger-install.sh +++ b/hledger-install/hledger-install.sh @@ -50,7 +50,7 @@ HERE HLEDGER_INSTALL_TOOL=hledger-install.sh # this script's version -HLEDGER_INSTALL_VERSION=20181001 +HLEDGER_INSTALL_VERSION=20181006 # stackage version to install from when using stack # You can specify a different stackage version here, or comment out @@ -77,7 +77,7 @@ hledger-interest \ " # latest hledger package versions, update often: -HLEDGER_VERSION=1.11 +HLEDGER_VERSION=1.11.1 HLEDGER_LIB_VERSION=$HLEDGER_VERSION HLEDGER_UI_VERSION=$HLEDGER_VERSION HLEDGER_WEB_VERSION=$HLEDGER_VERSION @@ -768,15 +768,58 @@ trap cleanup_temp_dir EXIT # 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, # 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() { if ! has_good_stack || [[ "$FORCE_INSTALL_STACK" == "true" ]] ; then echo "Installing stack" 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 - echo "using stack $(stack --version)" + echo "Using stack $(stack --version)" } # get a sed command that supports EREs @@ -791,10 +834,10 @@ cmd_location() { 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. 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 @@ -811,9 +854,9 @@ print_cmd_version() { 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() { - 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. @@ -827,29 +870,21 @@ quietly_run() { "$@" 2>/dev/null || true } -# Try to install the executables of the given package(s) to $HOME/.local/bin, -# trying several methods, generally from quickest to most reliable, continuing on failure. -# Current the installation methods are: -# - if stack is not installed and cabal is, try cabal install -# - otherwise install stack if needed and try stack install with specific resolver and ghc -# For the stack method, it's necessary to provide not only the package(s) you want to -# install but also all dependencies which are not in the specified stackage $RESOLVER. +# Try to install the executables of the given haskell package(s) and versions, +# using stack or cabal, logging the commands, continuing on failure. +# It's assumed that either a new-enough stack or cabal-install is already installed. +# stack is preferred. +# For stack, you must specify the package(s) you want to install, plus any additional +# dependency packages which are not in the stackage $RESOLVER configured above. try_install() { - (cd # ensure we install at user level, not in some project's stack/cabal setup - # cabal and not stack installed ? use cabal - (! has_cmd stack && has_cmd cabal && ( - echo "no stack installed, cabal $(cabal --numeric-version) installed; trying cabal install" && # cf cabal update step - try_info cabal install "$@" --verbose="$CABAL_VERBOSITY" ) - ) || - # use stack, installing it if missing or too old - (ensure_stack && ( - #(try_info stack install --install-ghc "$@" --verbosity=$STACK_VERBOSITY ) || # existing resolver - (try_info stack install --install-ghc $RESOLVER "$@" --verbosity="$STACK_VERBOSITY" ) # specific resolver - ) - ) || - # or give up - echo "Failed to install $@" - ) + cd # ensure we install at user level, not in some project's stack/cabal setup + if has_cmd stack ; then + try_info stack install --install-ghc $RESOLVER "$@" --verbosity="$STACK_VERBOSITY" + elif has_cmd cabal ; then + try_info cabal install "$@" --verbose="$CABAL_VERBOSITY" + else + echo "Failed to install $@" + fi } # start @@ -911,7 +946,49 @@ fi 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 +# TODO should check ~/.cabal/bin if using cabal if ! on_path "$HOME_LOCAL_BIN" ; then 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" @@ -921,63 +998,9 @@ if ! on_path "$HOME_LOCAL_BIN" ; then export PATH=$HOME_LOCAL_BIN:$PATH 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 -echo ---------- +echo +echo Installing hledger packages: if [[ $(cmpver "$(cmd_version hledger 2>/dev/null)" $HLEDGER_VERSION) = 2 ]]; then 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 echo fi -exit + # Third-party addons. We sometimes build these with an older version # of hledger[-lib], if their bounds have not been updated yet. if [[ $(cmpver "$(cmd_version hledger-diff 2>/dev/null)" $HLEDGER_DIFF_VERSION) = 2 ]]; then @@ -1024,14 +1047,14 @@ if [[ $(cmpver "$(cmd_version hledger-interest 2>/dev/null)" $HLEDGER_INTEREST_V echo fi -echo ---------- - # show new installation status +echo echo "Install status after:" print_installed_versions # warn if $HOME/.local/bin isn't in $PATH check_home_local_bin_on_path +# TODO if we installed with cabal, we should check $HOME/.cabal/bin instead # TODO # check/require ghc-8.0.2+/lts-8+ on osx sierra+ diff --git a/hledger-lib/CHANGES b/hledger-lib/CHANGES index c175ba6ad..4f50096fa 100644 --- a/hledger-lib/CHANGES +++ b/hledger-lib/CHANGES @@ -2,6 +2,12 @@ API-ish changes in the hledger-lib package. 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) * compilation now works when locale is unset (#849) diff --git a/hledger-lib/Hledger/Data/Journal.hs b/hledger-lib/Hledger/Data/Journal.hs index 41e04cdaf..ed6a2069c 100644 --- a/hledger-lib/Hledger/Data/Journal.hs +++ b/hledger-lib/Hledger/Data/Journal.hs @@ -554,7 +554,7 @@ checkBalanceAssertion p@Posting{ pbalanceassertion = Just (ass,_)} amt (case ptransaction p of Nothing -> ":" -- shouldn't happen 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) (showPostingLine p) (showDate $ postingDate p) diff --git a/hledger-lib/Hledger/Read/JournalReader.hs b/hledger-lib/Hledger/Read/JournalReader.hs index 06dc034d1..4d87779fa 100644 --- a/hledger-lib/Hledger/Read/JournalReader.hs +++ b/hledger-lib/Hledger/Read/JournalReader.hs @@ -627,7 +627,7 @@ tests_JournalReader = tests "JournalReader" [ ,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 "~ monthly from 2018/6 In 2019 we will change this\n" nullperiodictransaction { diff --git a/hledger-lib/hledger-lib.cabal b/hledger-lib/hledger-lib.cabal index 59f934a10..26e4135d7 100644 --- a/hledger-lib/hledger-lib.cabal +++ b/hledger-lib/hledger-lib.cabal @@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack -- --- hash: ec4f3b835e224318ad3608ab36126e3e07d3c54075f648eba27476bb51db15f4 +-- hash: 22a6817292c6f2d53f935ce939331bea06b956c94b4e391d198760704ec294b3 name: hledger-lib -version: 1.11 +version: 1.11.99 synopsis: Core data types, parsers and functionality for the hledger accounting tools description: This is a reusable library containing hledger's core functionality. . diff --git a/hledger-lib/hledger_csv.5 b/hledger-lib/hledger_csv.5 index 179b4dcb7..0817888d2 100644 --- a/hledger-lib/hledger_csv.5 +++ b/hledger-lib/hledger_csv.5 @@ -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" diff --git a/hledger-lib/hledger_csv.info b/hledger-lib/hledger_csv.info index 1ec870696..72613adc7 100644 --- a/hledger-lib/hledger_csv.info +++ b/hledger-lib/hledger_csv.info @@ -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) -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 diff --git a/hledger-lib/hledger_csv.txt b/hledger-lib/hledger_csv.txt index ac7d0f294..74c48acd1 100644 --- a/hledger-lib/hledger_csv.txt +++ b/hledger-lib/hledger_csv.txt @@ -249,4 +249,4 @@ SEE ALSO -hledger 1.10.99 September 2018 hledger_csv(5) +hledger 1.11.99 September 2018 hledger_csv(5) diff --git a/hledger-lib/hledger_journal.5 b/hledger-lib/hledger_journal.5 index 27bb92c41..81c438800 100644 --- a/hledger-lib/hledger_journal.5 +++ b/hledger-lib/hledger_journal.5 @@ -1,6 +1,6 @@ .\"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" diff --git a/hledger-lib/hledger_journal.info b/hledger-lib/hledger_journal.info index 8a2b2c3f3..d955c71ed 100644 --- a/hledger-lib/hledger_journal.info +++ b/hledger-lib/hledger_journal.info @@ -4,7 +4,7 @@ stdin.  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 diff --git a/hledger-lib/hledger_journal.txt b/hledger-lib/hledger_journal.txt index 9e50ee426..a39fd97c1 100644 --- a/hledger-lib/hledger_journal.txt +++ b/hledger-lib/hledger_journal.txt @@ -1151,4 +1151,4 @@ SEE ALSO -hledger 1.10.99 September 2018 hledger_journal(5) +hledger 1.11.99 September 2018 hledger_journal(5) diff --git a/hledger-lib/hledger_timeclock.5 b/hledger-lib/hledger_timeclock.5 index 97323e2bf..a49e3c1b5 100644 --- a/hledger-lib/hledger_timeclock.5 +++ b/hledger-lib/hledger_timeclock.5 @@ -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" diff --git a/hledger-lib/hledger_timeclock.info b/hledger-lib/hledger_timeclock.info index 384d7935e..ae84922f1 100644 --- a/hledger-lib/hledger_timeclock.info +++ b/hledger-lib/hledger_timeclock.info @@ -4,7 +4,7 @@ stdin.  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 diff --git a/hledger-lib/hledger_timeclock.txt b/hledger-lib/hledger_timeclock.txt index 4f0ae8304..fc0e218de 100644 --- a/hledger-lib/hledger_timeclock.txt +++ b/hledger-lib/hledger_timeclock.txt @@ -77,4 +77,4 @@ SEE ALSO -hledger 1.10.99 September 2018 hledger_timeclock(5) +hledger 1.11.99 September 2018 hledger_timeclock(5) diff --git a/hledger-lib/hledger_timedot.5 b/hledger-lib/hledger_timedot.5 index a4bd8f928..763a2d891 100644 --- a/hledger-lib/hledger_timedot.5 +++ b/hledger-lib/hledger_timedot.5 @@ -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" diff --git a/hledger-lib/hledger_timedot.info b/hledger-lib/hledger_timedot.info index 71c44d193..e0438472f 100644 --- a/hledger-lib/hledger_timedot.info +++ b/hledger-lib/hledger_timedot.info @@ -4,7 +4,7 @@ stdin.  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 diff --git a/hledger-lib/hledger_timedot.txt b/hledger-lib/hledger_timedot.txt index 28173a978..ce334b4d0 100644 --- a/hledger-lib/hledger_timedot.txt +++ b/hledger-lib/hledger_timedot.txt @@ -124,4 +124,4 @@ SEE ALSO -hledger 1.10.99 September 2018 hledger_timedot(5) +hledger 1.11.99 September 2018 hledger_timedot(5) diff --git a/hledger-lib/package.yaml b/hledger-lib/package.yaml index f097fa3a4..65f61bf90 100644 --- a/hledger-lib/package.yaml +++ b/hledger-lib/package.yaml @@ -1,5 +1,5 @@ name: hledger-lib -version: '1.11' +version: '1.11.99' synopsis: Core data types, parsers and functionality for the hledger accounting tools description: | This is a reusable library containing hledger's core functionality. diff --git a/hledger-ui/CHANGES b/hledger-ui/CHANGES index ba4220d91..77665231d 100644 --- a/hledger-ui/CHANGES +++ b/hledger-ui/CHANGES @@ -1,6 +1,11 @@ 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) * use hledger 1.11 diff --git a/hledger-ui/hledger-ui.1 b/hledger-ui/hledger-ui.1 index 1c340b5a5..9d2d9ba48 100644 --- a/hledger-ui/hledger-ui.1 +++ b/hledger-ui/hledger-ui.1 @@ -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" diff --git a/hledger-ui/hledger-ui.cabal b/hledger-ui/hledger-ui.cabal index f8da776cc..e5d4ae20f 100644 --- a/hledger-ui/hledger-ui.cabal +++ b/hledger-ui/hledger-ui.cabal @@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack -- --- hash: 61b73ed221f9d6964b622e7b8ea40259e9c82efd8b28dadc89d6a643ea947b94 +-- hash: fb0ef2467dcf115f1fc7a6f9d7781ec6912e7545a52921968067666c1747fff4 name: hledger-ui -version: 1.11 +version: 1.11.99 synopsis: Curses-style user interface for the hledger accounting tool description: This is hledger's curses-style interface. It is simpler and more convenient for browsing data than the command-line interface, @@ -63,7 +63,7 @@ executable hledger-ui hs-source-dirs: ./. ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: ansi-terminal >=0.6.2.3 , async @@ -75,8 +75,8 @@ executable hledger-ui , directory , filepath , fsnotify >=0.2.1.2 && <0.4 - , hledger >=1.11 && <1.12 - , hledger-lib >=1.11 && <1.12 + , hledger >=1.11.99 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , megaparsec >=7.0.0 && <8 , microlens >=0.4 , microlens-platform >=0.2.3.1 diff --git a/hledger-ui/hledger-ui.info b/hledger-ui/hledger-ui.info index 1c35213c3..3527cab60 100644 --- a/hledger-ui/hledger-ui.info +++ b/hledger-ui/hledger-ui.info @@ -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) -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 diff --git a/hledger-ui/hledger-ui.txt b/hledger-ui/hledger-ui.txt index 012b3100d..5ea7cee25 100644 --- a/hledger-ui/hledger-ui.txt +++ b/hledger-ui/hledger-ui.txt @@ -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) diff --git a/hledger-ui/package.yaml b/hledger-ui/package.yaml index fb8177576..f0c6f2438 100644 --- a/hledger-ui/package.yaml +++ b/hledger-ui/package.yaml @@ -1,5 +1,5 @@ name : hledger-ui -version : '1.11' +version : '1.11.99' synopsis : Curses-style user interface for the hledger accounting tool description : | This is hledger's curses-style interface. @@ -37,11 +37,11 @@ flags: manual: false default: true -cpp-options: -DVERSION="1.11" +cpp-options: -DVERSION="1.11.99" dependencies: -- hledger >=1.11 && <1.12 -- hledger-lib >=1.11 && <1.12 +- hledger >=1.11.99 && <1.12 +- hledger-lib >=1.11.99 && <1.12 - ansi-terminal >=0.6.2.3 - async - base >=4.8 && <4.12 diff --git a/hledger-web/CHANGES b/hledger-web/CHANGES index 87a5118f9..936c03029 100644 --- a/hledger-web/CHANGES +++ b/hledger-web/CHANGES @@ -1,6 +1,11 @@ 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) * use hledger 1.11 diff --git a/hledger-web/hledger-web.1 b/hledger-web/hledger-web.1 index 6adcad3bd..bca94ba94 100644 --- a/hledger-web/hledger-web.1 +++ b/hledger-web/hledger-web.1 @@ -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" diff --git a/hledger-web/hledger-web.cabal b/hledger-web/hledger-web.cabal index e92fdb6f1..b02326fb4 100644 --- a/hledger-web/hledger-web.cabal +++ b/hledger-web/hledger-web.cabal @@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack -- --- hash: 60eb9cb226968eed42b507637364f5960aa6b6fb91dff8a46fcbd40295780df6 +-- hash: 443e668fdd64fb57d1d9488224df0bc6ee4e796bcc75f81655a92850ff809d34 name: hledger-web -version: 1.11 +version: 1.11.99 synopsis: Web interface for the hledger accounting tool description: This is hledger's web interface. It provides a more user-friendly and collaborative UI than the @@ -149,7 +149,7 @@ library hs-source-dirs: ./. ghc-options: -Wall -fwarn-tabs - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: base >=4.8 && <4.12 , blaze-html @@ -164,8 +164,8 @@ library , directory , filepath , hjsmin - , hledger >=1.11 && <1.12 - , hledger-lib >=1.11 && <1.12 + , hledger >=1.11.99 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , http-client , http-conduit , json @@ -201,7 +201,7 @@ executable hledger-web hs-source-dirs: app ghc-options: -Wall -fwarn-tabs - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: base , hledger-web diff --git a/hledger-web/hledger-web.info b/hledger-web/hledger-web.info index 4bf941bee..eb49f2d0b 100644 --- a/hledger-web/hledger-web.info +++ b/hledger-web/hledger-web.info @@ -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) -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 diff --git a/hledger-web/hledger-web.txt b/hledger-web/hledger-web.txt index 7f02985d1..986fcb1bf 100644 --- a/hledger-web/hledger-web.txt +++ b/hledger-web/hledger-web.txt @@ -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) diff --git a/hledger-web/package.yaml b/hledger-web/package.yaml index 8a4939eb6..4adcca759 100644 --- a/hledger-web/package.yaml +++ b/hledger-web/package.yaml @@ -1,5 +1,5 @@ name: hledger-web -version: '1.11' +version: '1.11.99' synopsis: Web interface for the hledger accounting tool description: | This is hledger's web interface. @@ -77,7 +77,7 @@ when: library: source-dirs: . - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" exposed-modules: - Hledger.Web - Hledger.Web.Application @@ -96,8 +96,8 @@ library: - Hledger.Web.Widget.AddForm - Hledger.Web.Widget.Common dependencies: - - hledger-lib >=1.11 && <1.12 - - hledger >=1.11 && <1.12 + - hledger-lib >=1.11.99 && <1.12 + - hledger >=1.11.99 && <1.12 - base >=4.8 && <4.12 - blaze-html - blaze-markup @@ -143,7 +143,7 @@ executables: hledger-web: source-dirs: app main: main.hs - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" dependencies: - base - hledger-web @@ -161,7 +161,7 @@ executables: # test: # source-dirs: tests # main: main.hs -# cpp-options: -DVERSION="1.11" +# cpp-options: -DVERSION="1.11.99" # dependencies: # - base # - hledger-web diff --git a/hledger/CHANGES b/hledger/CHANGES index c1f3c3ea7..57c8cc4cf 100644 --- a/hledger/CHANGES +++ b/hledger/CHANGES @@ -1,6 +1,12 @@ 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) * 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 +## 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: -- The hledger packages now have man pages, based on the current user - manual, thanks to the mighty pandoc (#282). +- 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. (#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: - Dates must now begin with a digit (not /, eg). diff --git a/hledger/Hledger/Cli/Commands.hs b/hledger/Hledger/Cli/Commands.hs index 9e0bb4118..68d10e7d6 100644 --- a/hledger/Hledger/Cli/Commands.hs +++ b/hledger/Hledger/Cli/Commands.hs @@ -244,6 +244,10 @@ FLAGS testcmd :: CliOpts -> Journal -> IO () testcmd opts _undefined = do 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] if e then exitFailure else exitSuccess diff --git a/hledger/Hledger/Cli/Commands/Add.hs b/hledger/Hledger/Cli/Commands/Add.hs index 032010625..bb75737dc 100644 --- a/hledger/Hledger/Cli/Commands/Add.hs +++ b/hledger/Hledger/Cli/Commands/Add.hs @@ -141,7 +141,7 @@ getAndAddTransactions es@EntryState{..} = (do confirmedTransactionWizard es@EntryState{..} = do t <- transactionWizard es -- liftIO $ hPrintf stderr {- "Transaction entered:\n%s" -} (show t) - output $ show t + output $ showTransaction t y <- let def = "y" in retryMsg "Please enter y or n." $ 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} (desc,comment) <- descriptionAndCommentWizard es1 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} balancedPostingsWizard = do 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 when (debug_ opts > 0) $ do putStrLn $ printf "\nAdded transaction to %s:" f - putStrLn =<< registerFromString (show t) + putStrLn =<< registerFromString (showTransaction t) return j{jtxns=ts++[t]} -- | Append a string, typically one or more transactions, to a journal diff --git a/hledger/hledger.1 b/hledger/hledger.1 index 215dd6aaf..2d95aa4b6 100644 --- a/hledger/hledger.1 +++ b/hledger/hledger.1 @@ -1,6 +1,6 @@ .\"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" diff --git a/hledger/hledger.cabal b/hledger/hledger.cabal index 1234a42bc..d32629977 100644 --- a/hledger/hledger.cabal +++ b/hledger/hledger.cabal @@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack -- --- hash: e89846e17f78017f83d440cb2fcfe10caba2b0c4c6a61195b4faffcdd2b7a100 +-- hash: 78515e93d6f08be6d098bdd697b951a1577e4e71c6b24ad64cf69916d3af191c name: hledger -version: 1.11 +version: 1.11.99 synopsis: Command-line interface for the hledger accounting tool description: This is hledger's command-line interface. Its basic function is to read a plain text file describing @@ -111,7 +111,7 @@ library other-modules: Paths_hledger ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: Decimal , Diff @@ -129,7 +129,7 @@ library , hashable >=1.2.4 , haskeline >=0.6 , here - , hledger-lib >=1.11 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , lucid , megaparsec >=7.0.0 && <8 , mtl @@ -164,7 +164,7 @@ executable hledger hs-source-dirs: app ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: Decimal , ansi-terminal >=0.6.2.3 @@ -181,7 +181,7 @@ executable hledger , haskeline >=0.6 , here , hledger - , hledger-lib >=1.11 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , megaparsec >=7.0.0 && <8 , mtl , mtl-compat @@ -218,7 +218,7 @@ test-suite test hs-source-dirs: test ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" build-depends: Decimal , ansi-terminal >=0.6.2.3 @@ -235,7 +235,7 @@ test-suite test , haskeline >=0.6 , here , hledger - , hledger-lib >=1.11 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , megaparsec >=7.0.0 && <8 , mtl , mtl-compat @@ -289,7 +289,7 @@ benchmark bench , haskeline >=0.6 , here , hledger - , hledger-lib >=1.11 && <1.12 + , hledger-lib >=1.11.99 && <1.12 , html , megaparsec >=7.0.0 && <8 , mtl diff --git a/hledger/hledger.info b/hledger/hledger.info index e809e2cd6..71c22fb19 100644 --- a/hledger/hledger.info +++ b/hledger/hledger.info @@ -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) -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 diff --git a/hledger/hledger.txt b/hledger/hledger.txt index 3770d23c5..8181e3975 100644 --- a/hledger/hledger.txt +++ b/hledger/hledger.txt @@ -2230,4 +2230,4 @@ SEE ALSO -hledger 1.10.99 September 2018 hledger(1) +hledger 1.11.99 September 2018 hledger(1) diff --git a/hledger/package.yaml b/hledger/package.yaml index c3f2441da..692f15132 100644 --- a/hledger/package.yaml +++ b/hledger/package.yaml @@ -1,5 +1,5 @@ name: hledger -version: '1.11' +version: '1.11.99' synopsis: Command-line interface for the hledger accounting tool description: | This is hledger's command-line interface. @@ -78,7 +78,7 @@ ghc-options: - -optP-Wno-nonportable-include-path dependencies: -- hledger-lib >=1.11 && <1.12 +- hledger-lib >=1.11.99 && <1.12 - ansi-terminal >=0.6.2.3 - base >=4.8 && <4.12 - base-compat-batteries >=0.10.1 && <0.11 @@ -121,7 +121,7 @@ when: - terminfo library: - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" exposed-modules: - Hledger.Cli - Hledger.Cli.Main @@ -163,7 +163,7 @@ executables: hledger: source-dirs: app main: hledger-cli.hs - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" when: - condition: flag(threaded) ghc-options: -threaded @@ -174,7 +174,7 @@ tests: test: source-dirs: test main: test.hs - cpp-options: -DVERSION="1.11" + cpp-options: -DVERSION="1.11.99" dependencies: - hledger - test-framework diff --git a/site/doc/1.11/csv.md b/site/doc/1.11/csv.md index df864b054..f2f5d34a2 100644 --- a/site/doc/1.11/csv.md +++ b/site/doc/1.11/csv.md @@ -1,6 +1,6 @@ # csv format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/doc/1.11/hledger-api.md b/site/doc/1.11/hledger-api.md index 4758b54de..29893ec72 100644 --- a/site/doc/1.11/hledger-api.md +++ b/site/doc/1.11/hledger-api.md @@ -1,6 +1,6 @@ # hledger-api -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/doc/1.11/hledger-ui.md b/site/doc/1.11/hledger-ui.md index 8283e72a9..13269c994 100644 --- a/site/doc/1.11/hledger-ui.md +++ b/site/doc/1.11/hledger-ui.md @@ -1,6 +1,6 @@ # hledger-ui -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/doc/1.11/hledger-web.md b/site/doc/1.11/hledger-web.md index c880cb5dc..32735f81b 100644 --- a/site/doc/1.11/hledger-web.md +++ b/site/doc/1.11/hledger-web.md @@ -1,6 +1,6 @@ # hledger-web -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/doc/1.11/hledger.md b/site/doc/1.11/hledger.md index aef0a151b..30ed1a428 100644 --- a/site/doc/1.11/hledger.md +++ b/site/doc/1.11/hledger.md @@ -1,6 +1,6 @@ # hledger -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/doc/1.11/images/.DS_Store b/site/doc/1.11/images/.DS_Store deleted file mode 100644 index 98ecda7b9..000000000 Binary files a/site/doc/1.11/images/.DS_Store and /dev/null differ diff --git a/site/doc/1.11/images/hledger-web/.DS_Store b/site/doc/1.11/images/hledger-web/.DS_Store deleted file mode 100644 index 830538401..000000000 Binary files a/site/doc/1.11/images/hledger-web/.DS_Store and /dev/null differ diff --git a/site/doc/1.11/journal.md b/site/doc/1.11/journal.md index 477da729e..c4794c5cd 100644 --- a/site/doc/1.11/journal.md +++ b/site/doc/1.11/journal.md @@ -1,6 +1,6 @@ # journal format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$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. Here's one suggestion: - ------------------------------------------------------------------------- + ------------------------------------------------------------------------ status meaning - ----------- ------------------------------------------------------------- + ----------- ------------------------------------------------------------ uncleared recorded but not yet reconciled; needs review 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 correct - ------------------------------------------------------------------------- + ------------------------------------------------------------------------ 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 diff --git a/site/doc/1.11/manual.md b/site/doc/1.11/manual.md index df08ae4e0..f1445ace0 100644 --- a/site/doc/1.11/manual.md +++ b/site/doc/1.11/manual.md @@ -2,7 +2,7 @@ ## hledger -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -2435,7 +2435,7 @@ accepts `fr_FR.UTF8`, mac osx requires exactly `fr_FR.UTF-8`). ## hledger-ui -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -2847,7 +2847,7 @@ program is restarted. ## hledger-web -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -3100,7 +3100,7 @@ Does not work well on small screens. ## hledger-api -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -3202,7 +3202,7 @@ awkward. ## journal format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -4515,7 +4515,7 @@ https://twitter.com/LedgerTips/status/501767602067472384 ## csv format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -4789,7 +4789,7 @@ rules file will be used for all the CSV files being read. ## timeclock format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME @@ -4858,7 +4858,7 @@ To generate time logs, ie to clock in and clock out, you could: ## timedot format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} ### NAME diff --git a/site/doc/1.11/timeclock.md b/site/doc/1.11/timeclock.md index 026e7e4f7..c57db6d43 100644 --- a/site/doc/1.11/timeclock.md +++ b/site/doc/1.11/timeclock.md @@ -1,6 +1,6 @@ # timeclock format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/doc/1.11/timedot.md b/site/doc/1.11/timedot.md index 508ca2b75..1b8c837ef 100644 --- a/site/doc/1.11/timedot.md +++ b/site/doc/1.11/timedot.md @@ -1,6 +1,6 @@ # timedot format -This doc is for version **1.10.99** (dev). []{.docversions} +This doc is for version **1.11** (dev). []{.docversions} \$toc\$ diff --git a/site/download.md b/site/download.md index 01a843e28..71d78cb93 100644 --- a/site/download.md +++ b/site/download.md @@ -1,14 +1,21 @@ -\$toc\$ - # 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. download a binary/system package +## a. Download a binary or system package for your platform -hledger binaries or system packages are quickest to install, -but they can be [out of date](https://repology.org/metapackage/hledger/badges) or incomplete. -(Please help your local packagers with this!). +Binaries or system packages are quickest to install, but they can be outdated or incomplete. -| -|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -| 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) ([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) ) -| Mac: | **`brew install hledger`** ([only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520)) -| Arch Linux: | **`pacman -S hledger`** -| Debian, Ubuntu: | **`sudo apt install hledger hledger-ui hledger-web`** -| Fedora, RHEL: | **`sudo dnf install hledger`** -| Gentoo: | **`sudo layman -a haskell && sudo emerge hledger hledger-ui hledger-web`** -| Void Linux: | **`xbps-install -S hledger hledger-ui hledger-web hledger-api`** -| 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) -| NixOS: | **`nix-env -iA nixpkgs.haskellPackages.hledger nixpkgs.haskellPackages.hledger-ui nixpkgs.haskellPackages.hledger-web`** ([problems with hledger-ui on MacOS ?](https://github.com/simonmichael/hledger/issues/613)) -| Sandstorm: | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90) -> demo** - a hledger-web server in 3 clicks ([features needed](https://github.com/simonmichael/hledger/issues/425)) +**Available binaries / system packages:** +
+(please [update this page](https://github.com/simonmichael/hledger/edit/master/site/download.md) / +
report issues to packagers) +
+ +| Platform | Command/Link | Installs version
([as of 20181006](https://repology.org/metapackage/hledger/badges), latest is [1.11](http://hledger.org/release-notes)) +|----------------------|------------------------|---------------------------------------------------------------------------------------- +| [Mac][] | **`brew install hledger`**
[only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520) | 1.11 +| [Windows][] | Developer binaries: **[1.11](https://ci.appveyor.com/api/buildjobs/rppu7oo05u283p0w/artifacts/hledger.zip)**
[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) | 1.11 +|   | +| [Arch Linux][] | **`pacman -S hledger`** | 1.11 +| CentOS | ? | +| [Debian][] | **`sudo apt install hledger hledger-ui hledger-web`** | 1.0.1 (Stable), 1.5 (Testing), 1.10 (Unstable) +| [Fedora][] | **`sudo dnf install hledger`** | 1.2 (27), 1.4 (28), 1.5 (Rawhide) +| [Gentoo][] | **`sudo layman -a haskell && sudo emerge hledger hledger-ui hledger-web`** | 1.11 +| RHEL | **`sudo dnf install hledger`** ? | ? +| [Ubuntu][] | **`sudo apt install hledger hledger-ui hledger-web`** | 0.26 (16.04 Xenial), 1.2 (18.04 Bionic), 1.5 (18.10 Cosmic) +| [Void Linux][] | **`xbps-install -S hledger hledger-ui hledger-web hledger-api`** | 1.10 +|   | +| FreeBSD | ? | +| NetBSD | ? | +| OpenBSD | Ports: **[https://github.com/jasperla/openbsd-wip/pull/104](https://github.com/jasperla/openbsd-wip/pull/104)**
Third-party binaries: **[OpenBSD6.3/amd64](https://s3.amazonaws.com/openbsd-hledger/index.html)** | 1.10 +|   | +| [Nix][] | **`nix-env -iA nixpkgs.haskellPackages.hledger nixpkgs.haskellPackages.hledger-ui nixpkgs.haskellPackages.hledger-web`**
[problems with hledger-ui on Mac ?](https://github.com/simonmichael/hledger/issues/613) | 1.5 (stable), 1.11 (unstable) +| Sandstorm | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90)**
[features needed](https://github.com/simonmichael/hledger/issues/425) | 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 Linux]: https://www.archlinux.org/packages/?sort=&q=hledger +[Arch 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 Linux]: https://voidlinux.org/packages/?q=hledger +[Void Linux contact]: mailto: + +[Nix]: http://hydra.nixos.org/search?query=hledger +[Nix contact]: mailto: -## 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. +But first, some tips: -Note, building all hledger tools for the first time could take as much -as an hour, 1G of free memory, and 1G of disk space. -(We're not bloated; we just sit atop a lot of fine Haskell engineering!) -You can kill and restart it without losing progress, and subsequent builds will be much faster. -Also, here are some known build issues and workarounds:\ - -[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)\ - -[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)\ - +- Building all hledger tools and dependencies for the first time could + take as much as an hour, 1-2G of free memory, and 1-2G of disk + space. You can kill and restart the build without losing progress, + and future builds will be much faster. + +- If you get link errors (eg: "/bin/ld.gold: error: cannot find -ltinfo"), + you might need to install some extra system packages and try again. + To find the right system package, check the list below, or do a web search for the error message + (and please send updates for this list): + + | + |-----------------|------------------------------------------------------------------- + | CentOS: | **`sudo yum install -y libstdc++-devel ncurses-devel zlib-devel`** + | 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: + + + [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)\ + + [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)\ + + +- 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). + + +
### b1. with hledger-install -The latest version of our [hledger-install script](https://github.com/simonmichael/hledger/tree/master/hledger-install) -([changes](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh)) -is recommended as the easiest and most-likely-to-just-work build method, -on GNU/linux, mac and freeBSD -(and possibly other BSDs if you install cabal-install first, or on unixlike environments on windows): +On systems with bash installed (mac, linux, unix-like windows..), +if you don't already have stack or cabal, or if you are having trouble with them, +[hledger-install](https://github.com/simonmichael/hledger/tree/master/hledger-install) +is an easy and reliable way to get the latest hledger. +It automates the install process using stack or cabal, avoiding common pitfalls: -- it requires only bash and curl/wget, and internet access -- it automates the install process using stack or cabal, avoiding common pitfalls -- it installs stack and GHC in ~/.stack, if needed -- 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`** + **`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`** ### b2. with stack -[`stack`](http://haskell-lang.org/get-started) is the newer and easier of the Haskell build tools. -If you prefer more control or if hledger-install failed, here's how to use stack yourself: +[`stack`](http://haskell-lang.org/get-started) is the more reliable of Haskell's two build tools, for new users. +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**\ - 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. + **`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`**\ - On Windows, the 64-bit version of stack is [preferred](https://github.com/simonmichael/hledger/issues/275#issuecomment-123834252). - -2. **`stack install --resolver=lts-12 cassava-megaparsec-1.0.0 hledger-lib-1.11 hledger-1.11 hledger-ui-1.11 hledger-web-1.11 hledger-api-1.11`**\ - This installs the main hledger packages (and dependencies) from [Stackage](https://www.stackage.org) and/or [Hackage](http://hackage.haskell.org). - You can save some time by omitting hledger-* packages you don't want.\ - ([windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444)) - - 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.) - - - -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)** +Other [add-ons](/hledger.html#third-party-add-ons) +like +[hledger-diff](http://hackage.haskell.org/package/hledger-diff), +[hledger-iadd](http://hackage.haskell.org/package/hledger-iadd), +or [hledger-interest](http://hackage.haskell.org/package/hledger-interest) +can be installed like so: + **`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`**\ ### 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`**\ + +
+ +#### 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 `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! 👍 🎉`\ + + -## c. build the development version +## c. Build the development version 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). +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)** -2. **`git clone https://github.com/simonmichael/hledger`** -3. **`cd hledger`** -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) + **`git clone https://github.com/simonmichael/hledger`**\ + **`cd hledger`**\ + **`stack install`**\ 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"). + diff --git a/site/release-notes.md b/site/release-notes.md index fb0c1f160..3a0954c14 100644 --- a/site/release-notes.md +++ b/site/release-notes.md @@ -57,15 +57,14 @@ is updated frequently; here are the [latest changes](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh). - + + + + + ## 2018/9/30 hledger 1.11 @@ -81,9 +80,9 @@ fixes [hledger](#hledger-1.11-1) - - - +| [hledger-ui](#hledger-ui-1.11) +| [hledger-web](#hledger-web-1.11) +| [hledger-api](#hledger-api-1.11) | [hledger-lib](#hledger-lib-1.11) | [credits](#credits-1.11) @@ -115,7 +114,7 @@ fixes * prices: query arguments are now supported. Prices can be filtered by date, and postings providing transaction prices can also be filtered. -* rewrite: help clarifies relation to print --auto (#745) +* 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 @@ -124,7 +123,7 @@ fixes * csv: We use a more robust CSV lib (cassava) and now support non-comma separators, eg --separator ';' (experimental, this flag - will probably become a CSV rule) (#829) + 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 this works: @@ -133,20 +132,36 @@ fixes date %Transaction_Date * 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: 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 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 -* 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 @@ -260,7 +275,7 @@ misc fixes * 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 @@ -268,16 +283,16 @@ misc fixes * journal: many parse error messages have become more informative, and 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 now a parse error * 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 - 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. @@ -298,7 +313,7 @@ misc fixes semantics, especially with multiple files. The manual now describes 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 (status mark, code, description, comment), for generating more expressive @@ -308,18 +323,18 @@ misc fixes expression attached as a tag named "recur". * 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 * csv: amount-in/amount-out errors are more detailed * 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 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 @@ -328,7 +343,7 @@ misc fixes ### 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 @@ -422,7 +437,7 @@ found when reading files. customize sorting. bal/bs/cf/is will sort accounts by account code, 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 @@ -530,23 +545,23 @@ Alvaro Fernando García. ### 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) -* 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) @@ -572,7 +587,7 @@ Alvaro Fernando García. * --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 @@ -585,14 +600,14 @@ Alvaro Fernando García. * import: the output of --dry-run is now valid journal format * 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 - filter transactions (#261) + filter transactions ([#261](https://github.com/simonmichael/hledger/issues/261)) ### 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 @@ -664,7 +679,7 @@ all major hledger packages. See http://hledger.org/download for details. * add readJournalFile[s]WithOpts, with simpler arguments and support 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 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: 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+ @@ -695,18 +710,18 @@ This simplifies things and facilitates future improvements. -* 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 a period without any transaction. Previously, the behavior was no 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, 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) -* fix test suite with Cabal 2 (#596) +* fix test suite with Cabal 2 ([#596](https://github.com/simonmichael/hledger/issues/596)) ### 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: 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. 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 - (and it always prints on stdout when piped). 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 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 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 equity accounts (Nicholas Niro) @@ -785,9 +800,9 @@ but with the extra advantage of not showing empty accounts) -* 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) @@ -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 -* 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 @@ -807,7 +822,7 @@ but with the extra advantage of not showing empty accounts) -* 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) @@ -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 -* 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 @@ -835,7 +850,7 @@ but with the extra advantage of not showing empty accounts) -* 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) @@ -843,7 +858,7 @@ but with the extra advantage of not showing empty accounts) ### 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)) @@ -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 and keys) has been renamed to "unmarked" to remove ambiguity and confusion. See the issue and linked mail list discussion for more -background. (#564) +background. ([#564](https://github.com/simonmichael/hledger/issues/564)) #### csv format 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) #### 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. @@ -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, and our `-U` flag now matches only unmarked things and not pending 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 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). These commands now show negative amounts in red, when hledger detects that ANSI codes are supported, (ie when TERM is not "dumb" and stdout 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. 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 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. @@ -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 that we have dropped the `--uncleared` flag, and our `-U` flag now 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 (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: @@ -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 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 @@ -1067,7 +1082,7 @@ Michael Walker. bump stack config to latest lts, 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). #### Finance @@ -1133,13 +1148,13 @@ been disabled, reducing build dependencies. #### 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. -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 @@ -1148,7 +1163,7 @@ Rename optserror -> usageError, consolidate with other error functions #### CLI "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. @@ -1212,7 +1227,7 @@ handles prices better, and adds balance assertions (Mykola Orliuk). The rewrite command is more robust and powerful (Mykola Orliuk): - 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: ```journal = ^income @@ -1237,7 +1252,7 @@ The rewrite command is more robust and powerful (Mykola Orliuk): #### balance 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 @@ -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 `-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 -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 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 -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) -Allow megaparsec 5.2 (#503) +Allow megaparsec 5.2 ([#503](https://github.com/simonmichael/hledger/issues/503)) ### 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 megaparsec 5.2 (fixes #503) +Allow megaparsec 5.2 (fixes [#503](https://github.com/simonmichael/hledger/issues/503)) Allow text-zipper 0.10 ### 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)) diff --git a/stack-ghc8.6.yaml b/stack-ghc8.6.yaml new file mode 100644 index 000000000..cd0bd7bdc --- /dev/null +++ b/stack-ghc8.6.yaml @@ -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] diff --git a/tests/budget/forecast.test b/tests/budget/forecast.test index 377447439..f97e3af64 100644 --- a/tests/budget/forecast.test +++ b/tests/budget/forecast.test @@ -104,3 +104,22 @@ hledger register -b 2015-12 -e 2017-02 -f - assets:cash --forecast 2017/01/01 assets:cash $10000 $9390 >>>2 >>>=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 diff --git a/tests/cli/cli.test b/tests/cli/cli.test index 8ca0b4a29..14ba31edf 100644 --- a/tests/cli/cli.test +++ b/tests/cli/cli.test @@ -20,7 +20,7 @@ # the command name. # # - 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","")] # # - CliOpts: a RawOpts, plus the same information with some additional