{-| The @files@ command lists included files. -} {-# LANGUAGE OverloadedStrings #-} module Hledger.Cli.Commands.Files ( filesmode ,files ) where import Data.List -- import Data.Text (Text) import Safe import System.Console.CmdArgs.Explicit as C import Hledger import Prelude hiding (putStrLn) import Hledger.Utils.UTF8IOCompat (putStrLn) import Hledger.Cli.CliOptions -- | Command line options for this command. filesmode = (defCommandMode $ ["files"] ) { modeHelp = "show names of included files" ,modeHelpSuffix = [ "This command lists names of all files included in the parsed journal(s)." ,"With REGEX argument will list only files matching regular expression (case sensitive)." ] ,modeGroupFlags = C.Group { groupUnnamed = [] ,groupHidden = [] ,groupNamed = [generalflagsgroup2] } ,modeArgs= ([], Just $ argsFlag "[REGEX]") } -- | The files command. files :: CliOpts -> Journal -> IO () files CliOpts{rawopts_=rawopts} j = do let args = listofstringopt "args" rawopts regex = headMay args files = (maybe id (filter . regexMatches) regex) $ map fst $ jfiles j mapM_ putStrLn files