mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-19 10:17:35 +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.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