cli: make tags a builtin command
This commit is contained in:
		
							parent
							
								
									d2d7dbbce0
								
							
						
					
					
						commit
						e3902ebc6f
					
				| @ -1,42 +0,0 @@ | |||||||
| #!/usr/bin/env stack |  | ||||||
| {- stack runghc --verbosity info |  | ||||||
|    --package hledger-lib |  | ||||||
|    --package hledger |  | ||||||
|    --package here |  | ||||||
|    --package text |  | ||||||
| -} |  | ||||||
| 
 |  | ||||||
| {-# OPTIONS_GHC -Wno-missing-signatures -Wno-name-shadowing #-} |  | ||||||
| {-# LANGUAGE QuasiQuotes #-} |  | ||||||
| 
 |  | ||||||
| import Data.List |  | ||||||
| import Data.String.Here |  | ||||||
| import qualified Data.Text.IO as T |  | ||||||
| import Hledger |  | ||||||
| import Hledger.Cli |  | ||||||
| 
 |  | ||||||
| ------------------------------------------------------------------------------ |  | ||||||
| cmdmode = hledgerCommandMode |  | ||||||
|   [here| tags |  | ||||||
| List all the tag names in use. |  | ||||||
| With a query, only matched transactions' tags are shown. |  | ||||||
| Reads the default journal file, or another specified with -f. |  | ||||||
| FLAGS |  | ||||||
|   |] |  | ||||||
|   [] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --  |  | ||||||
|   [generalflagsgroup1] |  | ||||||
|   [] |  | ||||||
|   ([], Just $ argsFlag "[QUERY]") |  | ||||||
| ------------------------------------------------------------------------------ |  | ||||||
| 
 |  | ||||||
| main :: IO () |  | ||||||
| main = do |  | ||||||
|   opts <- getHledgerCliOpts cmdmode |  | ||||||
|   withJournalDo opts $ |  | ||||||
|    \CliOpts{rawopts_=_rawopts,reportopts_=ropts} j -> do |  | ||||||
|     d <- getCurrentDay |  | ||||||
|     let |  | ||||||
|       q = queryFromOpts d ropts |  | ||||||
|       ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j |  | ||||||
|       tags = nub $ sort $ map fst $ concatMap transactionAllTags ts |  | ||||||
|     mapM_ T.putStrLn tags |  | ||||||
| @ -30,6 +30,7 @@ module Hledger.Cli.Commands ( | |||||||
|   ,module Hledger.Cli.Commands.Registermatch |   ,module Hledger.Cli.Commands.Registermatch | ||||||
|   ,module Hledger.Cli.Commands.Rewrite |   ,module Hledger.Cli.Commands.Rewrite | ||||||
|   ,module Hledger.Cli.Commands.Stats |   ,module Hledger.Cli.Commands.Stats | ||||||
|  |   ,module Hledger.Cli.Commands.Tags | ||||||
| )  | )  | ||||||
| where | where | ||||||
| 
 | 
 | ||||||
| @ -66,6 +67,7 @@ import Hledger.Cli.Commands.Register | |||||||
| import Hledger.Cli.Commands.Registermatch | import Hledger.Cli.Commands.Registermatch | ||||||
| import Hledger.Cli.Commands.Rewrite | import Hledger.Cli.Commands.Rewrite | ||||||
| import Hledger.Cli.Commands.Stats | import Hledger.Cli.Commands.Stats | ||||||
|  | import Hledger.Cli.Commands.Tags | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| -- | The cmdargs subcommand mode and IO action for each builtin command. | -- | The cmdargs subcommand mode and IO action for each builtin command. | ||||||
|  | |||||||
							
								
								
									
										34
									
								
								hledger/Hledger/Cli/Commands/Tags.hs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								hledger/Hledger/Cli/Commands/Tags.hs
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | {-# LANGUAGE OverloadedStrings #-} | ||||||
|  | {-# LANGUAGE QuasiQuotes #-} | ||||||
|  | 
 | ||||||
|  | module Hledger.Cli.Commands.Tags ( | ||||||
|  |   tagsmode | ||||||
|  |  ,tags | ||||||
|  | )  | ||||||
|  | where | ||||||
|  | 
 | ||||||
|  | import Data.List | ||||||
|  | import Data.String.Here | ||||||
|  | import qualified Data.Text.IO as T | ||||||
|  | import Hledger | ||||||
|  | import Hledger.Cli.CliOptions | ||||||
|  | 
 | ||||||
|  | tagsmode = hledgerCommandMode | ||||||
|  |   [here| tags | ||||||
|  | List all the tag names in use. | ||||||
|  | With a query, only matched transactions' tags are shown. | ||||||
|  | Reads the default journal file, or another specified with -f. | ||||||
|  | FLAGS | ||||||
|  |   |] | ||||||
|  |   [] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --  | ||||||
|  |   [generalflagsgroup1] | ||||||
|  |   [] | ||||||
|  |   ([], Just $ argsFlag "[QUERY]") | ||||||
|  | 
 | ||||||
|  | tags CliOpts{rawopts_=_rawopts,reportopts_=ropts} j = do | ||||||
|  |   d <- getCurrentDay | ||||||
|  |   let | ||||||
|  |     q = queryFromOpts d ropts | ||||||
|  |     ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j | ||||||
|  |     tags = nub $ sort $ map fst $ concatMap transactionAllTags ts | ||||||
|  |   mapM_ T.putStrLn tags | ||||||
| @ -89,8 +89,3 @@ is an old pie chart generator, in need of some love. | |||||||
| [hledger-check.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check.hs) | [hledger-check.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-check.hs) | ||||||
| checks more powerful account balance assertions. | checks more powerful account balance assertions. | ||||||
| 
 | 
 | ||||||
| ### tags |  | ||||||
| 
 |  | ||||||
| [hledger-tags.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-tags.hs) |  | ||||||
| Lists tag names in use. |  | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -715,6 +715,9 @@ it shows a report for each report period. | |||||||
| The stats command also supports `-o/--output-file` | The stats command also supports `-o/--output-file` | ||||||
| for controlling [output destination](#output-destination). | for controlling [output destination](#output-destination). | ||||||
| 
 | 
 | ||||||
|  | ## tags | ||||||
|  | List all the tag names in use. | ||||||
|  | 
 | ||||||
| ## test | ## test | ||||||
| Run built-in unit tests. | Run built-in unit tests. | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -97,6 +97,7 @@ library | |||||||
|     , cmdargs >=0.10 && <0.11 |     , cmdargs >=0.10 && <0.11 | ||||||
|     , csv |     , csv | ||||||
|     , data-default >=0.5 |     , data-default >=0.5 | ||||||
|  |     , Diff | ||||||
|     , hashable >=1.2.4 |     , hashable >=1.2.4 | ||||||
|     , haskeline >=0.6 && <=0.8 |     , haskeline >=0.6 && <=0.8 | ||||||
|     , HUnit |     , HUnit | ||||||
| @ -139,7 +140,9 @@ library | |||||||
|       Hledger.Cli.Commands.Printunique |       Hledger.Cli.Commands.Printunique | ||||||
|       Hledger.Cli.Commands.Register |       Hledger.Cli.Commands.Register | ||||||
|       Hledger.Cli.Commands.Registermatch |       Hledger.Cli.Commands.Registermatch | ||||||
|  |       Hledger.Cli.Commands.Rewrite | ||||||
|       Hledger.Cli.Commands.Stats |       Hledger.Cli.Commands.Stats | ||||||
|  |       Hledger.Cli.Commands.Tags | ||||||
|       Hledger.Cli.CompoundBalanceCommand |       Hledger.Cli.CompoundBalanceCommand | ||||||
|       Text.Tabular.AsciiWide |       Text.Tabular.AsciiWide | ||||||
|   other-modules: |   other-modules: | ||||||
|  | |||||||
| @ -122,6 +122,7 @@ library: | |||||||
|   - Hledger.Cli.Commands.Registermatch |   - Hledger.Cli.Commands.Registermatch | ||||||
|   - Hledger.Cli.Commands.Rewrite |   - Hledger.Cli.Commands.Rewrite | ||||||
|   - Hledger.Cli.Commands.Stats |   - Hledger.Cli.Commands.Stats | ||||||
|  |   - Hledger.Cli.Commands.Tags | ||||||
|   - Hledger.Cli.CompoundBalanceCommand |   - Hledger.Cli.CompoundBalanceCommand | ||||||
|   - Text.Tabular.AsciiWide |   - Text.Tabular.AsciiWide | ||||||
|   dependencies: |   dependencies: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user