tag: first arg filters tag names, the rest filter transactions (#261)
This commit is contained in:
parent
bf234431ef
commit
24d8336728
@ -9,26 +9,34 @@ where
|
|||||||
|
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.String.Here
|
import Data.String.Here
|
||||||
import qualified Data.Text.IO as T
|
import qualified Data.Text as T
|
||||||
|
import Safe
|
||||||
import Hledger
|
import Hledger
|
||||||
import Hledger.Cli.CliOptions
|
import Hledger.Cli.CliOptions
|
||||||
|
|
||||||
tagsmode = hledgerCommandMode
|
tagsmode = hledgerCommandMode
|
||||||
[here| tags
|
[here| tags
|
||||||
List all the tag names in use.
|
List all the tag names used in the journal. With a TAGREGEX argument,
|
||||||
With a query, only matched transactions' tags are shown.
|
only tag names matching the regular expression (case insensitive) are shown.
|
||||||
|
With QUERY arguments, only transactions matching the query are considered.
|
||||||
Reads the default journal file, or another specified with -f.
|
Reads the default journal file, or another specified with -f.
|
||||||
FLAGS
|
FLAGS
|
||||||
|]
|
|]
|
||||||
[] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --
|
[] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --
|
||||||
[generalflagsgroup1]
|
[generalflagsgroup1]
|
||||||
[]
|
[]
|
||||||
([], Just $ argsFlag "[QUERY]")
|
([], Just $ argsFlag "[TAGREGEX [QUERY...]]")
|
||||||
|
|
||||||
tags CliOpts{rawopts_=_rawopts,reportopts_=ropts} j = do
|
tags CliOpts{rawopts_=rawopts,reportopts_=ropts} j = do
|
||||||
d <- getCurrentDay
|
d <- getCurrentDay
|
||||||
let
|
let
|
||||||
q = queryFromOpts d ropts
|
args = listofstringopt "args" rawopts
|
||||||
ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j
|
mtagpats = headMay args
|
||||||
tags = nub $ sort $ map fst $ concatMap transactionAllTags ts
|
queryargs = drop 1 args
|
||||||
mapM_ T.putStrLn tags
|
q = queryFromOpts d $ ropts{query_ = unwords queryargs}
|
||||||
|
txns = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j
|
||||||
|
tags =
|
||||||
|
nub $ sort $
|
||||||
|
(maybe id (filter . regexMatchesCI) mtagpats) $
|
||||||
|
map (T.unpack . fst) $ concatMap transactionAllTags txns
|
||||||
|
mapM_ putStrLn tags
|
||||||
|
|||||||
@ -766,7 +766,9 @@ The stats command also supports `-o/--output-file`
|
|||||||
for controlling [output destination](#output-destination).
|
for controlling [output destination](#output-destination).
|
||||||
|
|
||||||
## tags
|
## tags
|
||||||
List all the tag names in use.
|
List all the tag names used in the journal. With a TAGREGEX argument,
|
||||||
|
only tag names matching the regular expression (case insensitive) are shown.
|
||||||
|
With additional QUERY arguments, only transactions matching the query are considered.
|
||||||
|
|
||||||
## test
|
## test
|
||||||
Run built-in unit tests.
|
Run built-in unit tests.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user