;doc: bin: more cleanups
This commit is contained in:
		
							parent
							
								
									cb6fceb50b
								
							
						
					
					
						commit
						d00827a2fc
					
				
							
								
								
									
										151
									
								
								bin/README.md
									
									
									
									
									
								
							
							
						
						
									
										151
									
								
								bin/README.md
									
									
									
									
									
								
							| @ -7,90 +7,34 @@ | |||||||
| 
 | 
 | ||||||
| This document is the README in the hledger repo's [bin] directory,  | This document is the README in the hledger repo's [bin] directory,  | ||||||
| and is also published as [Scripts] on hledger.org. | and is also published as [Scripts] on hledger.org. | ||||||
| Here we collect some extra scripts you can use to augment the core hledger tools. | Here we collect hledger scripts: additional small tools which complement hledger in some way. | ||||||
| These are either useful in themselves, or serve as examples/starting points for making your own scripts. | These can be | ||||||
| 
 | 
 | ||||||
| For a longer list of PTA tools (not hledger-specific), see [plaintextaccounting.org](https://plaintextaccounting.org). | - shell aliases or functions, often defined in your shell's startup file | ||||||
|  | - shell script files | ||||||
|  | - programs written in languages like Python or Haskell. | ||||||
|  |   Haskell scripts are the most powerful since they can call hledger's Haskell API. | ||||||
|  | 
 | ||||||
|  | The current bin scripts are listed below, categorised by how they invoke hledger | ||||||
|  | (not at all / via CLI / via Haskell API). | ||||||
|  | These are either useful in themselves, or serve as examples/templates for making your own. | ||||||
|  | The scripts named `hledger-*` are *[add-on commands](https://hledger.org/dev/hledger.html#addons)*, | ||||||
|  | which means they will show up in hledger's [commands list](hledger.html#commands). | ||||||
|  | Following the list are the [install instructions](#installing-the-bin-scripts) and other tips. | ||||||
|  | 
 | ||||||
|  | See also: | ||||||
|  | - [Scripting hledger] - more on this topic | ||||||
|  | - [plaintextaccounting.org](https://plaintextaccounting.org) - a longer list of PTA tools (not hledger-specific) | ||||||
| 
 | 
 | ||||||
| <!-- This page can be viewed on github or hledger.org, so use absolute urls. --> | <!-- This page can be viewed on github or hledger.org, so use absolute urls. --> | ||||||
| [bin]:                https://github.com/simonmichael/hledger/tree/master/bin | [bin]:                https://github.com/simonmichael/hledger/tree/master/bin | ||||||
| [Scripts]:            https://hledger.org/scripts.html | [Scripts]:            https://hledger.org/scripts.html | ||||||
| [Scripting hledger]:  https://hledger.org/scripting.html | [Scripting hledger]:  https://hledger.org/scripting.html | ||||||
| 
 | 
 | ||||||
| ## About hledger scripts |  | ||||||
| 
 |  | ||||||
| We are using the word "scripts" broadly here, meaning: |  | ||||||
| 
 |  | ||||||
| - shell aliases, functions, or executable shell script files |  | ||||||
| - or programs written in other languages like Python |  | ||||||
| - or programs written in Haskell, optionally compiled |  | ||||||
| 
 |  | ||||||
| We can categorise scripts by how they use hledger: |  | ||||||
| 
 |  | ||||||
| - *hledger-related*    scripts don't use hledger directly, but perform tasks related to it |  | ||||||
| - *hledger-running*    scripts run hledger's command line interface in some useful way |  | ||||||
| - *hledger-integrated* scripts call hledger as a library, to do more powerful things. These must be written in Haskell. |  | ||||||
| 
 |  | ||||||
| Also, |  | ||||||
| 
 |  | ||||||
| - any script or program file which is named `hledger-something`, executable, |  | ||||||
|   and in your shell's PATH, is called an *[add-on command](https://hledger.org/dev/hledger.html#addons)*. |  | ||||||
|   These will show up in hledger's [commands list](hledger.html#commands), much like the built-in commands. |  | ||||||
|   Many of the scripts listed below are add-on commands. |  | ||||||
| 
 |  | ||||||
| Scripts can be: <!--  also vary in availability/packaging status; they --> |  | ||||||
| 
 |  | ||||||
| - local, used only by you |  | ||||||
| - or shared online |  | ||||||
| - or included in the bin directory and listed on this page |  | ||||||
| - (or published as haskell/system packages, and then we might stop calling them "scripts"). |  | ||||||
| 
 |  | ||||||
| See also: [Scripting hledger] |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Installing |  | ||||||
| 
 |  | ||||||
| The scripts collected here in the  |  | ||||||
| [bin](https://github.com/simonmichael/hledger/tree/master/bin) directory |  | ||||||
| are not automatically installed along with hledger;  |  | ||||||
| if you want them you must install them separately, as follows: |  | ||||||
| 
 |  | ||||||
| ```cli |  | ||||||
| # suggested: go to wherever you keep financial files |  | ||||||
| $ cd ~/finance |  | ||||||
| 
 |  | ||||||
| # get the hledger repo (the fast way, without version control): |  | ||||||
| $ curl -LOJ https://github.com/simonmichael/hledger/archive/refs/heads/master.zip && unzip hledger-master.zip && mv hledger-master hledger |  | ||||||
| 
 |  | ||||||
| # (or the slow way, with version control for easy diffing/updating/contributing): |  | ||||||
| # git clone https://github.com/simonmichael/hledger.git |  | ||||||
| 
 |  | ||||||
| # symlink the bin directory (or you can copy it): |  | ||||||
| $ ln -s hledger/bin |  | ||||||
| 
 |  | ||||||
| # add this directory to your PATH. Eg as a bash user: |  | ||||||
| $ echo "export PATH=$PATH:$PWD/bin" >>~/.bash_profile" |  | ||||||
| $ export PATH=$PATH:$PWD/bin |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Scripts with no file extension are mostly [bash] scripts except where noted. |  | ||||||
| if you don't want to install bash you might have to adapt them to your shell. |  | ||||||
| 
 |  | ||||||
| Scripts with a `.hs` file extension are usually [stack scripts], requiring [stack] to run.  |  | ||||||
| If you don't want to install stack you can adapt them to be cabal scripts, |  | ||||||
| or install their required libraries yourself and run/compile them with suitable runghc/ghc commands. |  | ||||||
| See also [Working with hledger-*.hs scripts](#working-with-hledger-hs-scripts) below. |  | ||||||
| 
 |  | ||||||
| [bash]: https://www.gnu.org/software/bash |  | ||||||
| [stack]: https://haskellstack.org |  | ||||||
| [stack scripts]: https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Here are the scripts currently collected in the bin directory: |  | ||||||
| 
 |  | ||||||
| ## hledger-related scripts | ## hledger-related scripts | ||||||
| 
 | 
 | ||||||
|  | These don't run hledger, but are related to it in some way: | ||||||
|  | 
 | ||||||
| ### paypaljson | ### paypaljson | ||||||
| 
 | 
 | ||||||
| [`paypaljson`](https://github.com/simonmichael/hledger/blob/master/bin/paypaljson) | [`paypaljson`](https://github.com/simonmichael/hledger/blob/master/bin/paypaljson) | ||||||
| @ -99,9 +43,12 @@ downloads the last 30 days of Paypal transactions (requires a free developer acc | |||||||
| ### paypaljson2csv | ### paypaljson2csv | ||||||
| 
 | 
 | ||||||
| [`paypaljson2csv`](https://github.com/simonmichael/hledger/blob/master/bin/paypal2csv) (python) | [`paypaljson2csv`](https://github.com/simonmichael/hledger/blob/master/bin/paypal2csv) (python) | ||||||
| converts the above to CSV, with format similar to the CSV you could download manually. | converts `paypaljson`'s output to CSV, with format similar to Paypal's manually-downloaded CSV. | ||||||
| 
 | 
 | ||||||
| ## hledger-running scripts | ## hledger-running scripts | ||||||
|  | 
 | ||||||
|  | These run hledger via its command line interface, and perhaps process its output: | ||||||
|  | 
 | ||||||
| ### bashrc | ### bashrc | ||||||
| 
 | 
 | ||||||
| [`bashrc`](https://github.com/simonmichael/hledger/blob/master/bin/bashrc) | [`bashrc`](https://github.com/simonmichael/hledger/blob/master/bin/bashrc) | ||||||
| @ -142,10 +89,15 @@ $ hledger pijul record [MSG] | |||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## hledger-integrated scripts | ## hledger-integrated scripts | ||||||
|  | 
 | ||||||
|  | These call hledger as a Haskell library, and so must be written in | ||||||
|  | Haskell. They can use hledger's internal data types and can do | ||||||
|  | anything hledger's built-in commands can do: | ||||||
|  | 
 | ||||||
| ### hledger-addon-example | ### hledger-addon-example | ||||||
| 
 | 
 | ||||||
| [`hledger-addon-example.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-addon-example.hs) | [`hledger-addon-example.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-addon-example.hs) | ||||||
| is a starter template for hledger-integrated add-on commands written in Haskell. | is a starter template for a common type of script: a hledger-integrated add-on command. | ||||||
| It has the same structure as most of the other add-ons here: | It has the same structure as most of the other add-ons here: | ||||||
| - implemented as a stack script for robustness | - implemented as a stack script for robustness | ||||||
| - provides command line help | - provides command line help | ||||||
| @ -176,11 +128,8 @@ prints transactions with their date and date2 fields swapped. | |||||||
| 
 | 
 | ||||||
| [`hledger-check-tagfiles.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-tagfiles.hs) | [`hledger-check-tagfiles.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-tagfiles.hs) | ||||||
| interprets all tag values containing a `/` (forward slash) as file paths, and checks that those files exist. | interprets all tag values containing a `/` (forward slash) as file paths, and checks that those files exist. | ||||||
| 
 |  | ||||||
| ### hledger-check-tagfiles |  | ||||||
| 
 |  | ||||||
| [`hledger-check-tagfiles.cabal.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-tagfiles.cabal.hs) | [`hledger-check-tagfiles.cabal.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check-tagfiles.cabal.hs) | ||||||
| is the above as a cabal script. | is the same command implemented as a cabal script rather than a stack script. | ||||||
| 
 | 
 | ||||||
| ### hledger-check-fancyassertions | ### hledger-check-fancyassertions | ||||||
| 
 | 
 | ||||||
| @ -202,6 +151,46 @@ uses one balance report to set budget goals for another balance report. | |||||||
| [`hledger-smooth.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-smooth.hs) | [`hledger-smooth.hs`](https://github.com/simonmichael/hledger/blob/master/bin/hledger-smooth.hs) | ||||||
| is an incomplete attempt at automatically splitting infrequent/irregular transactions. | is an incomplete attempt at automatically splitting infrequent/irregular transactions. | ||||||
| 
 | 
 | ||||||
|  | ## Installing the bin scripts | ||||||
|  | 
 | ||||||
|  | These [bin](https://github.com/simonmichael/hledger/tree/master/bin) scripts | ||||||
|  | are not automatically installed along with hledger;  | ||||||
|  | if you want them you must download them separately. Here's a suggested method: | ||||||
|  | 
 | ||||||
|  | ```cli | ||||||
|  | # go to wherever you keep financial files | ||||||
|  | $ cd ~/finance | ||||||
|  | 
 | ||||||
|  | # get the hledger repo (the fast way, without version control) | ||||||
|  | $ curl -LOJ https://github.com/simonmichael/hledger/archive/refs/heads/master.zip && unzip hledger-master.zip && mv hledger-master hledger | ||||||
|  | 
 | ||||||
|  | # (or the slow way, with version control for easy diffing/updating/contributing) | ||||||
|  | # git clone https://github.com/simonmichael/hledger.git | ||||||
|  | 
 | ||||||
|  | # make a more convenient symlink to the bin directory | ||||||
|  | $ ln -s hledger/bin | ||||||
|  | 
 | ||||||
|  | # add the bin directory to your PATH. Eg as a bash user: | ||||||
|  | $ echo "export PATH=$PATH:$PWD/bin" >>~/.bash_profile" | ||||||
|  | $ export PATH=$PATH:$PWD/bin | ||||||
|  | 
 | ||||||
|  | # check that hledger's command list now shows the hledger-* scripts | ||||||
|  | # (they will be listed with a + prefix): | ||||||
|  | $ hledger | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Scripts with no file extension are mostly [bash] scripts except where noted. | ||||||
|  | if you don't want to install bash you might have to adapt them to your shell. | ||||||
|  | 
 | ||||||
|  | Scripts with a `.hs` file extension are usually [stack scripts], requiring [stack] to run.  | ||||||
|  | If you don't want to install stack you can adapt them to be cabal scripts, | ||||||
|  | or install their required libraries yourself and run/compile them with suitable runghc/ghc commands. | ||||||
|  | See also [Working with hledger-*.hs scripts](#working-with-hledger-hs-scripts) below. | ||||||
|  | 
 | ||||||
|  | [bash]: https://www.gnu.org/software/bash | ||||||
|  | [stack]: https://haskellstack.org | ||||||
|  | [stack scripts]: https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter | ||||||
|  | 
 | ||||||
| ## Working with hledger-*.hs scripts | ## Working with hledger-*.hs scripts | ||||||
| 
 | 
 | ||||||
| The hledger-*.hs [add-on commands] are mostly implemented as [stack] | The hledger-*.hs [add-on commands] are mostly implemented as [stack] | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user