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 | $ 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 | destination other than the console. This is controlled by the | ||||||
| `-o/--output-file` option. | `-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), | a matched part of it. With a [reporting interval](#reporting-interval), | ||||||
| it shows a report for each report period. | it shows a report for each report period. | ||||||
| 
 | 
 | ||||||
|  | The stats command also supports `-o/--output-file` | ||||||
|  | for controlling [output destination](#output-destination). | ||||||
|  | 
 | ||||||
| #### test | #### test | ||||||
| 
 | 
 | ||||||
| ```{.shell .right} | ```{.shell .right} | ||||||
|  | |||||||
| @ -23,13 +23,15 @@ import qualified Data.Map as Map | |||||||
| import Hledger | import Hledger | ||||||
| import Hledger.Cli.Options | import Hledger.Cli.Options | ||||||
| import Prelude hiding (putStr) | import Prelude hiding (putStr) | ||||||
| import Hledger.Utils.UTF8IOCompat (putStr) | import Hledger.Cli.Utils (writeOutput) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| statsmode = (defCommandMode $ ["stats"] ++ aliases) { | statsmode = (defCommandMode $ ["stats"] ++ aliases) { | ||||||
|   modeHelp = "show some journal statistics" `withAliases` aliases |   modeHelp = "show some journal statistics" `withAliases` aliases | ||||||
|  ,modeGroupFlags = Group { |  ,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 = [] |     ,groupHidden = [] | ||||||
|     ,groupNamed = [generalflagsgroup1] |     ,groupNamed = [generalflagsgroup1] | ||||||
|     } |     } | ||||||
| @ -39,7 +41,7 @@ statsmode = (defCommandMode $ ["stats"] ++ aliases) { | |||||||
| -- like Register.summarisePostings | -- like Register.summarisePostings | ||||||
| -- | Print various statistics for the journal. | -- | Print various statistics for the journal. | ||||||
| stats :: CliOpts -> Journal -> IO () | stats :: CliOpts -> Journal -> IO () | ||||||
| stats CliOpts{reportopts_=reportopts_} j = do | stats opts@CliOpts{reportopts_=reportopts_} j = do | ||||||
|   d <- getCurrentDay |   d <- getCurrentDay | ||||||
|   let q = queryFromOpts d reportopts_ |   let q = queryFromOpts d reportopts_ | ||||||
|       l = ledgerFromJournal q j |       l = ledgerFromJournal q j | ||||||
| @ -47,7 +49,7 @@ stats CliOpts{reportopts_=reportopts_} j = do | |||||||
|       intervalspans = splitSpan (intervalFromOpts reportopts_) reportspan |       intervalspans = splitSpan (intervalFromOpts reportopts_) reportspan | ||||||
|       showstats = showLedgerStats l d |       showstats = showLedgerStats l d | ||||||
|       s = intercalate "\n" $ map showstats intervalspans |       s = intercalate "\n" $ map showstats intervalspans | ||||||
|   putStr s |   writeOutput opts s | ||||||
| 
 | 
 | ||||||
| showLedgerStats :: Ledger -> Day -> DateSpan -> String | showLedgerStats :: Ledger -> Day -> DateSpan -> String | ||||||
| showLedgerStats l today span = | showLedgerStats l today span = | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user