Merge branch 'master' into ExceptTLayer
This commit is contained in:
		
						commit
						2cbc41e088
					
				| @ -43,8 +43,11 @@ install: | ||||
| # 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 | ||||
| 
 | ||||
| # 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 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								Shake.hs
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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 | ||||
|  | ||||
							
								
								
									
										106
									
								
								doc/ANNOUNCE
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								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 | ||||
|  | ||||
							
								
								
									
										129
									
								
								doc/CHANGES
									
									
									
									
									
								
							
							
						
						
									
										129
									
								
								doc/CHANGES
									
									
									
									
									
								
							| @ -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. | ||||
| 
 | ||||
| @ -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. | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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. | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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" | ||||
|  | ||||
| @ -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 | ||||
|   echo "using stack $(stack --version)" | ||||
|   fi | ||||
|   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 | ||||
|   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+ | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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 { | ||||
|  | ||||
| @ -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. | ||||
|                 . | ||||
|  | ||||
| @ -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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -249,4 +249,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger 1.10.99                 September 2018                  hledger_csv(5) | ||||
| hledger 1.11.99                 September 2018                  hledger_csv(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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -1151,4 +1151,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger 1.10.99                 September 2018              hledger_journal(5) | ||||
| hledger 1.11.99                 September 2018              hledger_journal(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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -77,4 +77,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger 1.10.99                 September 2018            hledger_timeclock(5) | ||||
| hledger 1.11.99                 September 2018            hledger_timeclock(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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -124,4 +124,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger 1.10.99                 September 2018              hledger_timedot(5) | ||||
| hledger 1.11.99                 September 2018              hledger_timedot(5) | ||||
|  | ||||
| @ -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. | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
							
								
								
									
										120
									
								
								hledger/CHANGES
									
									
									
									
									
								
							
							
						
						
									
										120
									
								
								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,8 +681,41 @@ 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: | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -2230,4 +2230,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger 1.10.99                 September 2018                      hledger(1) | ||||
| hledger 1.11.99                 September 2018                      hledger(1) | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								site/doc/1.11/images/.DS_Store
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								site/doc/1.11/images/.DS_Store
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								site/doc/1.11/images/hledger-web/.DS_Store
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								site/doc/1.11/images/hledger-web/.DS_Store
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -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 | ||||
|   ------------------------------------------------------------------------ | ||||
|   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 | ||||
|  | ||||
| @ -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 | ||||
| 
 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
| @ -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\$ | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										313
									
								
								site/download.md
									
									
									
									
									
								
							
							
						
						
									
										313
									
								
								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 name="a"></a> | ||||
| 
 | ||||
| ## a. download a binary/system package | ||||
| ## a. Download a binary or system package for your platform | ||||
| 
 | ||||
| <style> | ||||
| table { margin-left:1em; } | ||||
| tr { border-top:thin solid #ddd; border-bottom:thin solid #ddd; } | ||||
| div > p > strong > code { margin-left:1em; } /* top-level code lines */ | ||||
| code { white-space:nowrap; } | ||||
| tr { vertical-align:top; } | ||||
| @ -19,7 +26,10 @@ td:first-of-type { | ||||
| } | ||||
| a { white-space:nowrap; } | ||||
| .warnings { | ||||
|     display:inline-block; | ||||
|     margin-left:1em; | ||||
|     font-style:italic; | ||||
|     font-size:small; | ||||
| } | ||||
| .warnings > a:before { | ||||
|     content: " ⚠ "; | ||||
| @ -27,36 +37,90 @@ a { white-space:nowrap; } | ||||
| } | ||||
| </style> | ||||
| 
 | ||||
| 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) (<span class=warnings>[no hledger-ui](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444), [doesn't work on old windows ?](https://github.com/simonmichael/hledger/issues/774), [unusually many files in PATH causing hangs](https://github.com/simonmichael/hledger/issues/791), [appveyor builds have been failing again](https://github.com/simonmichael/hledger/issues/832) )</span> | ||||
| | Mac:                 | **`brew install hledger`** <span class=warnings>([only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520))</span> | ||||
| | 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`** <span class=warnings>([problems with hledger-ui on MacOS ?](https://github.com/simonmichael/hledger/issues/613))</span> | ||||
| | Sandstorm:           | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90) -> demo** - a hledger-web server in 3 clicks <span class=warnings>([features needed](https://github.com/simonmichael/hledger/issues/425))</span> | ||||
| **Available binaries / system packages:** | ||||
| <div style="float:right; font-size:small;"> | ||||
| (please [update this page](https://github.com/simonmichael/hledger/edit/master/site/download.md) / | ||||
| <br>report issues to packagers) | ||||
| </div> | ||||
| 
 | ||||
| | Platform             | Command/Link           | Installs version<br>([as of 20181006](https://repology.org/metapackage/hledger/badges), latest is [1.11](http://hledger.org/release-notes)) | ||||
| |----------------------|------------------------|---------------------------------------------------------------------------------------- | ||||
| | [Mac][]              | **`brew install hledger`** <br><span class=warnings>[only hledger CLI](https://github.com/simonmichael/hledger/issues/321#issuecomment-179920520)</span> | 1.11 | ||||
| | [Windows][]          | Developer binaries: **[1.11](https://ci.appveyor.com/api/buildjobs/rppu7oo05u283p0w/artifacts/hledger.zip)** <!-- or [latest nightly dev build](https://ci.appveyor.com/api/projects/simonmichael/hledger/artifacts/hledger.zip?branch=master) --> <br><span class=warnings> [no hledger-ui](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444),[doesn't work on old windows ?](https://github.com/simonmichael/hledger/issues/774),[many files in PATH causing hangs](https://github.com/simonmichael/hledger/issues/791)<!-- ,[appveyor builds failing](https://github.com/simonmichael/hledger/issues/832) --> </span> | 1.11 | ||||
| |                 | | ||||
| | [Arch Linux][]  | **`pacman -S hledger`** | 1.11 | ||||
| | CentOS               | <span class=warnings>?</span> |  | ||||
| | [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`** <span class=warnings>?</span> | <span class=warnings>?</span> | ||||
| | [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              | <span class=warnings>?</span> |  | ||||
| | NetBSD               | <span class=warnings>?</span> |  | ||||
| | OpenBSD              | Ports: **[https://github.com/jasperla/openbsd-wip/pull/104](https://github.com/jasperla/openbsd-wip/pull/104)** <br>Third-party binaries: **[OpenBSD6.3/amd64](https://s3.amazonaws.com/openbsd-hledger/index.html)** | 1.10 | ||||
| |                 | | ||||
| | [Nix][]              | **<span style="font-size:small;">`nix-env -iA nixpkgs.haskellPackages.hledger nixpkgs.haskellPackages.hledger-ui nixpkgs.haskellPackages.hledger-web`</span>** <br><span class=warnings>[problems with hledger-ui on Mac ?](https://github.com/simonmichael/hledger/issues/613)</span> | 1.5 (stable), 1.11 (unstable) | ||||
| | Sandstorm            | **[hledger-web Sandstorm app](https://apps.sandstorm.io/app/8x12h6p0x0nrzk73hfq6zh2jxtgyzzcty7qsatkg7jfg2mzw5n90)** <br><span class=warnings>[features needed](https://github.com/simonmichael/hledger/issues/425)</span> | 1.9.2 | ||||
| 
 | ||||
| [Mac]: https://formulae.brew.sh/formula/hledger | ||||
| [Mac contact]: mailto: | ||||
| 
 | ||||
| [Windows]: https://ci.appveyor.com/project/simonmichael/hledger | ||||
| [Windows contact]: mailto:simon@joyful.com | ||||
| 
 | ||||
| [Arch 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: | ||||
| 
 | ||||
| 
 | ||||
| <a name="b"></a> | ||||
| 
 | ||||
| ## b. build the latest release | ||||
| ## b. Build the latest release | ||||
| 
 | ||||
| Good choice! You'll get the latest features mentioned in the [release notes](release-notes.html). | ||||
| Good choice! You'll get the latest features and fixes mentioned in the [release notes](release-notes.html), | ||||
| and you'll be in a good position to give feedback and get support. | ||||
| Below are three ways to build the latest release, in order of preference. | ||||
| But first, some tips: | ||||
| 
 | ||||
| - 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`** <!-- https://github.com/simonmichael/hledger/issues/715 --> | ||||
|     | Debian, Ubuntu: | **`sudo apt install -y libtinfo-dev`** | ||||
|     | Fedora, RHEL:   | **`sudo dnf install -y gmp-devel ncurses-devel`** | ||||
| 
 | ||||
| - Here are some known build issues and workarounds on certain platforms: | ||||
| 
 | ||||
| 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:\ | ||||
|     <span class=warnings> | ||||
|     [arch: advice from Arch wiki](https://wiki.archlinux.org/index.php/Haskell)\ | ||||
|     [arch: No information found for ghc-8.4.2](https://github.com/commercialhaskell/stack/issues/3984)\ | ||||
| @ -64,145 +128,122 @@ Also, here are some known build issues and workarounds:\ | ||||
|     [freebsd 12: no cabal file found](https://github.com/simonmichael/hledger/issues/709)\ | ||||
|     [openbsd 6: exec permission denied](https://deftly.net/posts/2017-10-12-using-cabal-on-openbsd.html)\ | ||||
|     [openbsd: how to get stack](https://github.com/commercialhaskell/stack/issues/2822#issuecomment-318892816)\ | ||||
|     [windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444)\ | ||||
|     </span> | ||||
| 
 | ||||
| - If you have trouble, please send me a copy/paste of the output, | ||||
|   including the commands you typed, at least up to the first error, via | ||||
|       [paste](http://paste.hledger.org) + [IRC](http://irc.hledger.org), | ||||
|   or the [issue tracker](http://bugs.hledger.org),  | ||||
|   or [email](docs.html#helpfeedback). | ||||
| 
 | ||||
| 
 | ||||
| <div style="margin-left:1em; margin-bottom:2em;"> | ||||
| 
 | ||||
| <a name="b1"></a> | ||||
| 
 | ||||
| ### 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*\ | ||||
|   **`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`** | ||||
| 
 | ||||
| #### Link errors ? | ||||
| 
 | ||||
| If you see link errors (like "/bin/ld.gold: error: cannot find -ltinfo"),  | ||||
| you might need to install some extra system packages, such as the below, and try again. | ||||
| Please do a web search for the error and send corrections for this list: | ||||
| 
 | ||||
|  | | ||||
|  |-----------------|------------------------------------------------------- | ||||
|  | Centos:         | **`sudo yum install -y libstdc++-devel ncurses-devel zlib-devel`** *# [?](https://github.com/simonmichael/hledger/issues/715)* | ||||
|  | Debian, Ubuntu: | **`sudo apt install -y libtinfo-dev`** *# ?* | ||||
|  | Fedora, RHEL:   | **`sudo dnf install -y gmp-devel ncurses-devel`** *# ?* | ||||
| 
 | ||||
| #### Set up $PATH | ||||
| 
 | ||||
| You should | ||||
| [extend your \$PATH with `~/.local/bin`](https://docs.haskellstack.org/en/stable/install_and_upgrade/#path) (for stack) | ||||
| and/or `~/.cabal/bin` (for cabal). | ||||
| Eg, if you use bash: | ||||
| 
 | ||||
| **`echo "export PATH=~/.local/bin:~/.cabal/bin:$PATH" >> ~/.bashrc && source ~/.bashrc`** | ||||
| 
 | ||||
| #### Test | ||||
| 
 | ||||
| Now you should be able to run the hledger tools and see the expected versions. Eg: | ||||
| ```shell | ||||
| $ hledger --version | ||||
| hledger 1.11 | ||||
| $ hledger-ui --version | ||||
| hledger-ui 1.11 | ||||
| $ hledger web --version | ||||
| hledger-web 1.11 | ||||
| $ hledger iadd --version | ||||
| This is hledger-iadd version 1.3.6 | ||||
| ``` | ||||
| 
 | ||||
| #### Need help ? | ||||
| 
 | ||||
| If you are having trouble, please capture a debug log and send it to me via  | ||||
| [paste](http://paste.hledger.org) & [IRC](http://irc.hledger.org), | ||||
| the [issue tracker](http://bugs.hledger.org), | ||||
| or [email](docs.html#helpfeedback): | ||||
| 
 | ||||
|  **`bash -x hledger-install.sh 2>&1 | tee hledger-install.log`** | ||||
| 
 | ||||
| <a name="b2"></a> | ||||
| 
 | ||||
| ### 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.\ | ||||
|     <span class=warnings>([windows: hledger-ui is not available](https://github.com/jtdaugherty/vty/pull/1#issuecomment-297143444))</span> | ||||
| 
 | ||||
|     You can kill and restart this without losing progress.  | ||||
|     To estimate the build time, add `--dry-run`.  | ||||
|      | ||||
|     If you see "was generated with a newer version of hpack, please upgrade and try again" errors, you can ignore them. | ||||
|     (Upgrade to the latest stack release to stop them.) | ||||
| 
 | ||||
| <!-- | ||||
|     If you need to build with an older GHC version for some reason, these commands should work | ||||
|    (except on Mac Sierra which [requires at least GHC 8.0.2/lts-8](https://ghc.haskell.org/trac/ghc/ticket/12479)):\ | ||||
|    `stack install --resolver=lts-7 hledger-lib-1.3 hledger-1.3 hledger-ui-1.3 hledger-web-1.3 hledger-api-1.3 brick-0.19 vty-5.15.1 data-clist-0.1.2.0`  *# (GHC 8.0.1)* \ | ||||
|    `stack install --resolver=lts-6 hledger-lib-1.3 hledger-1.3 hledger-ui-1.3 hledger-web-1.3 hledger-api-1.3 megaparsec-5.3.1 brick-0.19 vty-5.15.1 data-clist-0.1.2.0 text-zipper-0.10`  *# (GHC 7.10.3)* \ | ||||
| --> <!-- keep synced with stack.yaml files --> | ||||
| 
 | ||||
| 3. **[If you see link errors..](#link-errors)** | ||||
| 
 | ||||
| 4. **[Set up \$PATH](#set-up-path)** | ||||
| 
 | ||||
| 5. **Install addons ?**\ | ||||
|    Additional [add-on commands](/hledger.html#third-party-add-ons), | ||||
|    such as | ||||
| 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), | ||||
|    [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)** | ||||
| 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`**\ | ||||
| 
 | ||||
| <a name="b3"></a> | ||||
| 
 | ||||
| ### b3. with cabal | ||||
| 
 | ||||
| [cabal](https://www.haskell.org/cabal/) is the other Haskell build tool. If you're a cabal expert, feel free to use this in the usual way. | ||||
| [cabal](https://www.haskell.org/cabal/) is the other Haskell build tool. If you're a cabal expert, use it in the usual way, eg: | ||||
| 
 | ||||
|   **`cabal update`**\ | ||||
|   **`cabal install hledger-1.11 hledger-ui-1.11 hledger-web-1.11 hledger-api-1.11 hledger-diff-0.2.0.14 hledger-iadd-1.3.6 hledger-interest-1.5.2`**\ | ||||
| 
 | ||||
| </div> | ||||
| 
 | ||||
| #### Set up PATH | ||||
| 
 | ||||
| You will probably see a message about where the executables were installed. | ||||
| After installation, make sure this install directory is configured in your shell's \$PATH | ||||
| (preferably near the start of it, to preempt older hledger system packages you may have installed). | ||||
| The install directory is: | ||||
| 
 | ||||
| |                    | on non-Windows systems | on Windows  | ||||
| |--------------------|------------------------|------------------------------------------ | ||||
| | If stack was used  | `$HOME/.local/bin`     | `%APPDATA%\local\bin` (eg `C:\Users\Joe\AppData\Roaming\local\bin`) | ||||
| | If cabal was used  | `$HOME/.cabal/bin`     | `%APPDATA%\cabal\bin` | ||||
| 
 | ||||
| How to configure \$PATH is platform- and shell-specific. | ||||
| If you are using bash, this should take care of it: | ||||
| 
 | ||||
|   **`echo "export PATH=~/.local/bin:~/.cabal/bin:$PATH" >> ~/.bashrc && source ~/.bashrc`** | ||||
| 
 | ||||
| \ | ||||
| 
 | ||||
| #### Test the installation | ||||
| 
 | ||||
| You should now be able to run the hledger tools (whichever ones you installed) and see the expected versions: | ||||
| 
 | ||||
|   `$`**`hledger --version`**\ | ||||
|   `hledger 1.11`\ | ||||
|   `$`**`hledger-ui --version`**\ | ||||
|   `hledger-ui 1.11`\ | ||||
|   `$`**`hledger web --version`**\ | ||||
|   `hledger-web 1.11`\ | ||||
|   `$`**`hledger iadd --version`**\ | ||||
|   `This is hledger-iadd version 1.3.6`\ | ||||
| 
 | ||||
| And you can check that the unit tests pass (just for fun): | ||||
| 
 | ||||
|   `$`**`hledger test`**\ | ||||
|   `...`\ | ||||
|   `✅  176 tests passed, no failures! 👍 🎉`\ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| <a name="c"></a> | ||||
| 
 | ||||
| ## 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"). | ||||
| 
 | ||||
|  | ||||
| @ -57,15 +57,14 @@ is updated frequently; here are the | ||||
| [latest changes](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh). | ||||
| 
 | ||||
| 
 | ||||
| <!-- | ||||
| 
 | ||||
| ## Latest minor release | ||||
| 
 | ||||
| <http://hackage.haskell.org/package/hledger-lib-1.9.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-1.9.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-ui-1.9.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-web-1.9.2/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-api-1.9.1/changelog>   | ||||
| --> | ||||
| <http://hackage.haskell.org/package/hledger-lib-1.11.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-1.11.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-ui-1.11.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-web-1.11.1/changelog>   | ||||
| <http://hackage.haskell.org/package/hledger-api-1.11.1/changelog>   | ||||
| 
 | ||||
| 
 | ||||
| ## 2018/9/30 hledger 1.11 | ||||
| @ -81,9 +80,9 @@ fixes | ||||
| 
 | ||||
|   <!-- [project](#project-wide-changes-for-1.11) --> | ||||
|   [hledger](#hledger-1.11-1) | ||||
| <!-- | [hledger-ui](#hledger-ui-1.11) --> | ||||
| <!-- | [hledger-web](#hledger-web-1.11) --> | ||||
| <!-- | [hledger-api](#hledger-api-1.11) --> | ||||
| | [hledger-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 <unbudgeted> top-level account in --budget reports | ||||
| 
 | ||||
| * register: in CSV output, the code field is now included (#746) | ||||
| * register: in CSV output, the code field is now included ([#746](https://github.com/simonmichael/hledger/issues/746)) | ||||
| 
 | ||||
| * smart dates now allow  the YYYYMM format, and are better documented | ||||
| 
 | ||||
| @ -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. | ||||
| 
 | ||||
| <!-- 1.3.1 (2017/8/25) --> | ||||
| 
 | ||||
| * Fix a bug with -H showing nothing for empty periods (#583, Nicholas Niro) | ||||
| * Fix a bug with -H showing nothing for empty periods ([#583](https://github.com/simonmichael/hledger/issues/583), Nicholas Niro) | ||||
| This patch fixes a bug that happened when using the -H option on | ||||
| 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) | ||||
| 
 | ||||
| <!-- 1.3.1 (2017/8/25) --> | ||||
| 
 | ||||
| * bs/is: don't let an empty subreport disable the grand totals (#588) | ||||
| * bs/is: don't let an empty subreport disable the grand totals ([#588](https://github.com/simonmichael/hledger/issues/588)) | ||||
| 
 | ||||
| * allow megaparsec 6 (#594) | ||||
| * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594)) | ||||
| 
 | ||||
| * allow megaparsec-6.1 (Hans-Peter Deifel) | ||||
| 
 | ||||
| @ -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) | ||||
| 
 | ||||
| <!-- # 1.3.1 (2017/8/25) --> | ||||
| 
 | ||||
| * allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel) | ||||
| * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594), Simon Michael, Hans-Peter Deifel) | ||||
| 
 | ||||
| * allow megaparsec-6.1 (Hans-Peter Deifel) | ||||
| 
 | ||||
| @ -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) | ||||
| 
 | ||||
| <!-- # 1.3.1 (2017/8/25) --> | ||||
| 
 | ||||
| * allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel) | ||||
| * allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594), Simon Michael, Hans-Peter Deifel) | ||||
| 
 | ||||
| * allow megaparsec-6.1 (Hans-Peter Deifel) | ||||
| 
 | ||||
| @ -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)) | ||||
| 
 | ||||
| <!-- # 1.3.1 (2017/8/25) --> | ||||
| 
 | ||||
| @ -911,19 +926,19 @@ make changelog-draft shows the commits since last tag as org nodes | ||||
| The "uncleared" transaction/posting status (and associated UI flags | ||||
| 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)) | ||||
| 
 | ||||
| <!-- ### hledger-api 1.2 --> | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										81
									
								
								stack-ghc8.6.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								stack-ghc8.6.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | ||||
| # stack build plan using GHC 8.6.1 and recent stackage nightly (WIP) | ||||
| 
 | ||||
| resolver: nightly-2018-10-08 | ||||
| 
 | ||||
| packages: | ||||
| - hledger-lib | ||||
| - hledger | ||||
| - hledger-ui | ||||
| - hledger-web | ||||
| - hledger-api | ||||
| 
 | ||||
| allow-newer: true | ||||
| 
 | ||||
| extra-deps: | ||||
| 
 | ||||
| # hledger-lib | ||||
| - cassava-megaparsec-1.0.0 | ||||
| - easytest-0.2 | ||||
| - uglymemo-0.1.0.1 | ||||
| 
 | ||||
| # hledger | ||||
| - control-monad-free-0.6.2 | ||||
| - haskell-src-meta-0.8.0.3 | ||||
| - here-1.2.13 | ||||
| - lucid-2.9.10 | ||||
| - statistics-0.14.0.2 | ||||
| - vector-binary-instances-0.2.5 | ||||
| - wizards-1.0.2 | ||||
| 
 | ||||
| # hledger-ui | ||||
| - brick-0.41.2 | ||||
| - config-ini-0.2.3.0 | ||||
| - data-clist-0.1.2.1 | ||||
| - text-zipper-0.10.1 | ||||
| - vty-5.24 | ||||
| - word-wrap-0.4.1 | ||||
| 
 | ||||
| # hledger-web | ||||
| - asn1-encoding-0.9.5 | ||||
| - asn1-parse-0.9.4 | ||||
| - asn1-types-0.3.2 | ||||
| - byteable-0.1.1 | ||||
| - cipher-aes-0.2.11 | ||||
| - clientsession-0.9.1.2 | ||||
| - connection-0.2.8 | ||||
| - cprng-aes-0.6.1 | ||||
| - crypto-cipher-types-0.0.9 | ||||
| - crypto-random-0.0.9 | ||||
| - cryptonite-conduit-0.2.2 | ||||
| - email-validate-2.3.2.7 | ||||
| - http-client-tls-0.3.5.3 | ||||
| - http-conduit-2.3.2 | ||||
| - json-0.9.2 | ||||
| - pem-0.2.4 | ||||
| - persistent-2.8.2 | ||||
| - persistent-template-2.5.4 | ||||
| - securemem-0.1.10 | ||||
| - skein-1.0.9.4 | ||||
| - tls-1.4.1 | ||||
| - wai-app-static-3.1.6.2 | ||||
| - wai-handler-launch-3.0.2.4 | ||||
| - x509-1.7.4 | ||||
| - x509-store-1.6.6 | ||||
| - x509-system-1.6.6 | ||||
| - x509-validation-1.6.10 | ||||
| - yesod-1.6.0 | ||||
| - yesod-core-1.6.6 | ||||
| - yesod-form-1.6.2 | ||||
| - yesod-persistent-1.6.0 | ||||
| - yesod-static-1.6.0 | ||||
| 
 | ||||
| # hledger-api | ||||
| - http-media-0.7.1.3 | ||||
| - servant-0.14.1 | ||||
| - servant-server-0.14.1 | ||||
| - servant-swagger-1.1.5 | ||||
| - swagger2-2.3 | ||||
| 
 | ||||
| nix: | ||||
|   pure: false | ||||
|   packages: [perl gmp ncurses zlib] | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user