{-# 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