stats: support -o/--outputfile, useful for benchmarks
This commit is contained in:
		
							parent
							
								
									01db48fcfc
								
							
						
					
					
						commit
						89513fc256
					
				| @ -1587,7 +1587,7 @@ $ hledger balance -o -     # write to stdout (the default) | ||||
| $ hledger balance -o FILE  # write to FILE | ||||
| ``` | ||||
| 
 | ||||
| The balance, print and register commands can write their output to a | ||||
| The balance, print, register and stats commands can write their output to a | ||||
| destination other than the console. This is controlled by the | ||||
| `-o/--output-file` option. | ||||
| 
 | ||||
| @ -1852,6 +1852,9 @@ The stats command displays summary information for the whole journal, or | ||||
| a matched part of it. With a [reporting interval](#reporting-interval), | ||||
| it shows a report for each report period. | ||||
| 
 | ||||
| The stats command also supports `-o/--output-file` | ||||
| for controlling [output destination](#output-destination). | ||||
| 
 | ||||
| #### test | ||||
| 
 | ||||
| ```{.shell .right} | ||||
|  | ||||
| @ -23,13 +23,15 @@ import qualified Data.Map as Map | ||||
| import Hledger | ||||
| import Hledger.Cli.Options | ||||
| import Prelude hiding (putStr) | ||||
| import Hledger.Utils.UTF8IOCompat (putStr) | ||||
| import Hledger.Cli.Utils (writeOutput) | ||||
| 
 | ||||
| 
 | ||||
| statsmode = (defCommandMode $ ["stats"] ++ aliases) { | ||||
|   modeHelp = "show some journal statistics" `withAliases` aliases | ||||
|  ,modeGroupFlags = Group { | ||||
|      groupUnnamed = [] | ||||
|      groupUnnamed = [ | ||||
|         flagReq  ["output-file","o"]   (\s opts -> Right $ setopt "output-file" s opts) "FILE[.FMT]" "write output to FILE instead of stdout. A recognised FMT suffix influences the format." | ||||
|         ] | ||||
|     ,groupHidden = [] | ||||
|     ,groupNamed = [generalflagsgroup1] | ||||
|     } | ||||
| @ -39,7 +41,7 @@ statsmode = (defCommandMode $ ["stats"] ++ aliases) { | ||||
| -- like Register.summarisePostings | ||||
| -- | Print various statistics for the journal. | ||||
| stats :: CliOpts -> Journal -> IO () | ||||
| stats CliOpts{reportopts_=reportopts_} j = do | ||||
| stats opts@CliOpts{reportopts_=reportopts_} j = do | ||||
|   d <- getCurrentDay | ||||
|   let q = queryFromOpts d reportopts_ | ||||
|       l = ledgerFromJournal q j | ||||
| @ -47,7 +49,7 @@ stats CliOpts{reportopts_=reportopts_} j = do | ||||
|       intervalspans = splitSpan (intervalFromOpts reportopts_) reportspan | ||||
|       showstats = showLedgerStats l d | ||||
|       s = intercalate "\n" $ map showstats intervalspans | ||||
|   putStr s | ||||
|   writeOutput opts s | ||||
| 
 | ||||
| showLedgerStats :: Ledger -> Day -> DateSpan -> String | ||||
| showLedgerStats l today span = | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user