mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-26 03:42:25 +03:00
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.Rewrite
|
||||
,module Hledger.Cli.Commands.Stats
|
||||
,module Hledger.Cli.Commands.Tags
|
||||
)
|
||||
where
|
||||
|
||||
@ -66,6 +67,7 @@ import Hledger.Cli.Commands.Register
|
||||
import Hledger.Cli.Commands.Registermatch
|
||||
import Hledger.Cli.Commands.Rewrite
|
||||
import Hledger.Cli.Commands.Stats
|
||||
import Hledger.Cli.Commands.Tags
|
||||
|
||||
|
||||
-- | 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)
|
||||
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`
|
||||
for controlling [output destination](#output-destination).
|
||||
|
||||
## tags
|
||||
List all the tag names in use.
|
||||
|
||||
## test
|
||||
Run built-in unit tests.
|
||||
|
||||
|
@ -97,6 +97,7 @@ library
|
||||
, cmdargs >=0.10 && <0.11
|
||||
, csv
|
||||
, data-default >=0.5
|
||||
, Diff
|
||||
, hashable >=1.2.4
|
||||
, haskeline >=0.6 && <=0.8
|
||||
, HUnit
|
||||
@ -139,7 +140,9 @@ library
|
||||
Hledger.Cli.Commands.Printunique
|
||||
Hledger.Cli.Commands.Register
|
||||
Hledger.Cli.Commands.Registermatch
|
||||
Hledger.Cli.Commands.Rewrite
|
||||
Hledger.Cli.Commands.Stats
|
||||
Hledger.Cli.Commands.Tags
|
||||
Hledger.Cli.CompoundBalanceCommand
|
||||
Text.Tabular.AsciiWide
|
||||
other-modules:
|
||||
|
@ -122,6 +122,7 @@ library:
|
||||
- Hledger.Cli.Commands.Registermatch
|
||||
- Hledger.Cli.Commands.Rewrite
|
||||
- Hledger.Cli.Commands.Stats
|
||||
- Hledger.Cli.Commands.Tags
|
||||
- Hledger.Cli.CompoundBalanceCommand
|
||||
- Text.Tabular.AsciiWide
|
||||
dependencies:
|
||||
|
Loading…
Reference in New Issue
Block a user