mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-10 05:39:31 +03:00
bin: check-fancyassertions: add docs to --help output
This commit is contained in:
parent
c301a08195
commit
5a0d61998a
@ -123,6 +123,46 @@ import System.FilePath (FilePath)
|
|||||||
import qualified Text.Megaparsec as P
|
import qualified Text.Megaparsec as P
|
||||||
import qualified Text.Megaparsec.Char as P
|
import qualified Text.Megaparsec.Char as P
|
||||||
|
|
||||||
|
-- Don't know how to preserve newlines yet.
|
||||||
|
helptxt = unlines [
|
||||||
|
"ASSERTIONS can be:"
|
||||||
|
,""
|
||||||
|
,"1. <VALUE_OR_ACCT> CMP <VALUE_OR_ACCT> -"
|
||||||
|
,""
|
||||||
|
,"In the simplest form, an assertion is just a comparison between"
|
||||||
|
,"values. A value is either an amount or an account name (both as"
|
||||||
|
,"defined by hledger). The comparison operators are <, <=, ==,"
|
||||||
|
,">=, >, and != (with the obvious meanings)."
|
||||||
|
,""
|
||||||
|
,"Normally, the name of an account refers to the balance of that account"
|
||||||
|
,"only, without including subaccounts. The syntax `* ACCT` refers"
|
||||||
|
,"to the sum of the values in both that account and its subaccounts."
|
||||||
|
,""
|
||||||
|
,"Example:"
|
||||||
|
,""
|
||||||
|
,"hledger-check-fancyassertions -D 'budget:books >= £0'"
|
||||||
|
,""
|
||||||
|
,""
|
||||||
|
,"\"At the end of every day, the books budget is greater than or equal to"
|
||||||
|
,"£0\", implying that if I overspend, I need to take the money out of"
|
||||||
|
,"some other account. Note the double space after budget:books, this is"
|
||||||
|
,"because account names can contain single spaces."
|
||||||
|
,""
|
||||||
|
,"2. <ASSERTION> OP <ASSERTION> -"
|
||||||
|
,""
|
||||||
|
,"Assertions can be combined with logical connectives. The connectives"
|
||||||
|
,"are &&, ||, ==>, and <==> (with the obvious meanings)."
|
||||||
|
,"Assertions can also be wrapped inside parentheses."
|
||||||
|
,""
|
||||||
|
,"Example:"
|
||||||
|
,""
|
||||||
|
,"hledger-check-fancyassertions '(assets:overdraft < £2000) ==> (*assets:checking == £0)'"
|
||||||
|
,""
|
||||||
|
,""
|
||||||
|
,"\"If I have taken money from my overdraft, then I must have no money in"
|
||||||
|
,"my checking account (including subaccounts).\""
|
||||||
|
]
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
opts <- execParser args
|
opts <- execParser args
|
||||||
@ -367,6 +407,7 @@ args :: ParserInfo Opts
|
|||||||
args = info (helper <*> parser) $ mconcat
|
args = info (helper <*> parser) $ mconcat
|
||||||
[ fullDesc
|
[ fullDesc
|
||||||
, progDesc "Complex account balance assertions for hledger journals."
|
, progDesc "Complex account balance assertions for hledger journals."
|
||||||
|
, footer helptxt
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
parser = Opts <$> (optional . strOption)
|
parser = Opts <$> (optional . strOption)
|
||||||
|
Loading…
Reference in New Issue
Block a user