hledger-1.32.1: Command-line interface for the hledger accounting system
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hledger.Cli

Description

This is the root module of the hledger package, providing hledger's command-line interface. The main function, commands, command-line options, and utilities useful to other hledger command-line programs are exported. It also re-exports hledger-lib:Hledger and cmdargs:System.Concole.CmdArgs.Explicit

See also:

About

hledger - a fast, reliable, user-friendly plain text accounting tool. Copyright (c) 2007-2023 Simon Michael simon@joyful.com and contributors Released under GPL version 3 or later.

hledger is a Haskell rewrite of John Wiegley's "ledger". It generates financial reports from a plain text general journal. You can use the command line:

$ hledger

or ghci:

$ make ghci
ghci> Right j <- runExceptT $ readJournalFile definputopts "examples/sample.journal"  -- or: j <- defaultJournal
ghci> :t j
j :: Journal
ghci> stats defcliopts j
Main file                : examples/sample.journal
Included files           : 
Transactions span        : 2008-01-01 to 2009-01-01 (366 days)
Last transaction         : 2008-12-31 (733772 days from now)
Transactions             : 5 (0.0 per day)
Transactions last 30 days: 0 (0.0 per day)
Transactions last 7 days : 0 (0.0 per day)
Payees/descriptions      : 5
Accounts                 : 8 (depth 3)
Commodities              : 1 ($)
Market prices            : 0 ()

Run time (throughput)    : 1695276900.00s (0 txns/s)
ghci> balance defcliopts j
                  $1  assets:bank:saving
                 $-2  assets:cash
                  $1  expenses:food
                  $1  expenses:supplies
                 $-1  income:gifts
                 $-1  income:salary
                  $1  liabilities:debts
--------------------
                   0  
ghci> 

etc.

Synopsis

Documentation

prognameandversion :: String Source #

The program name and version string for this build of the hledger tool, including any git info available at build time.

versionString :: ProgramName -> PackageVersion -> String Source #

A helper to generate the best version string we can from the given program name and package version strings, current os and architecture, and any git info available at build time (commit hash, commit date, branch name, patchlevel since latest release tag for that program's package). Typically called for programs "hledger", "hledger-ui", or "hledger-web".

The git info changes whenever any file in the repository changes. Keeping this template haskell call here and not down in Hledger.Cli.Version helps reduce the number of modules recompiled.

main :: IO () Source #

Let's go!

mainmode :: [Name] -> Mode RawOpts Source #

The overall cmdargs mode describing hledger's command-line options and subcommands.

argsToCliOpts :: [String] -> [String] -> IO CliOpts Source #

Parse hledger CLI options from these command line arguments and add-on command names, or raise any error.

Re-exports

System.Console.CmdArgs.Explicit

type Help = String #

data Group a #

Constructors

Group 

Fields

Instances

Instances details
Functor Group 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

fmap :: (a -> b) -> Group a -> Group b #

(<$) :: a -> Group b -> Group a #

Monoid (Group a) 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

mempty :: Group a

mappend :: Group a -> Group a -> Group a

mconcat :: [Group a] -> Group a

Semigroup (Group a) 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

(<>) :: Group a -> Group a -> Group a

sconcat :: NonEmpty (Group a) -> Group a

stimes :: Integral b => b -> Group a -> Group a

Show a => Show (Group a) 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

showsPrec :: Int -> Group a -> ShowS

show :: Group a -> String

showList :: [Group a] -> ShowS

data Complete #

Constructors

CompleteValue String 
CompleteFile String FilePath 
CompleteDir String FilePath 

Instances

Instances details
Show Complete 
Instance details

Defined in System.Console.CmdArgs.Explicit.Complete

Methods

showsPrec :: Int -> Complete -> ShowS

show :: Complete -> String

showList :: [Complete] -> ShowS

Eq Complete 
Instance details

Defined in System.Console.CmdArgs.Explicit.Complete

Methods

(==) :: Complete -> Complete -> Bool

(/=) :: Complete -> Complete -> Bool

Ord Complete 
Instance details

Defined in System.Console.CmdArgs.Explicit.Complete

Methods

compare :: Complete -> Complete -> Ordering #

(<) :: Complete -> Complete -> Bool #

(<=) :: Complete -> Complete -> Bool #

(>) :: Complete -> Complete -> Bool #

(>=) :: Complete -> Complete -> Bool #

max :: Complete -> Complete -> Complete #

min :: Complete -> Complete -> Complete #

data Arg a #

Constructors

Arg 

Fields

Instances

Instances details
Remap Arg 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> Arg a -> Arg b #

data Flag a #

Constructors

Flag 

Instances

Instances details
Remap Flag 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> Flag a -> Flag b #

type FlagHelp = String #

data Mode a #

Constructors

Mode 

Fields

Instances

Instances details
Remap Mode 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> Mode a -> Mode b #

data HelpFormat #

Instances

Instances details
Bounded HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

Enum HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

Read HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

Methods

readsPrec :: Int -> ReadS HelpFormat

readList :: ReadS [HelpFormat]

readPrec :: ReadPrec HelpFormat

readListPrec :: ReadPrec [HelpFormat]

Show HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

Methods

showsPrec :: Int -> HelpFormat -> ShowS

show :: HelpFormat -> String

showList :: [HelpFormat] -> ShowS

Default HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

Methods

def :: HelpFormat

Eq HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

Methods

(==) :: HelpFormat -> HelpFormat -> Bool

(/=) :: HelpFormat -> HelpFormat -> Bool

Ord HelpFormat 
Instance details

Defined in System.Console.CmdArgs.Explicit.Help

data FlagInfo #

Constructors

FlagReq 
FlagOpt String 
FlagOptRare String 
FlagNone 

Instances

Instances details
Show FlagInfo 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

showsPrec :: Int -> FlagInfo -> ShowS

show :: FlagInfo -> String

showList :: [FlagInfo] -> ShowS

Eq FlagInfo 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

(==) :: FlagInfo -> FlagInfo -> Bool

(/=) :: FlagInfo -> FlagInfo -> Bool

Ord FlagInfo 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

compare :: FlagInfo -> FlagInfo -> Ordering #

(<) :: FlagInfo -> FlagInfo -> Bool #

(<=) :: FlagInfo -> FlagInfo -> Bool #

(>) :: FlagInfo -> FlagInfo -> Bool #

(>=) :: FlagInfo -> FlagInfo -> Bool #

max :: FlagInfo -> FlagInfo -> FlagInfo #

min :: FlagInfo -> FlagInfo -> FlagInfo #

class Remap (m :: Type -> Type) where #

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> m a -> m b #

Instances

Instances details
Remap Arg 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> Arg a -> Arg b #

Remap Flag 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> Flag a -> Flag b #

Remap Mode 
Instance details

Defined in System.Console.CmdArgs.Explicit.Type

Methods

remap :: (a -> b) -> (b -> (a, a -> b)) -> Mode a -> Mode b #

type Update a = String -> a -> Either String a #

process :: Mode a -> [String] -> Either String a #

flagNone :: [Name] -> (a -> a) -> Help -> Flag a #

flagReq :: [Name] -> Update a -> FlagHelp -> Help -> Flag a #

mode :: Name -> a -> Help -> Arg a -> [Flag a] -> Mode a #

flagOpt :: String -> [Name] -> Update a -> FlagHelp -> Help -> Flag a #

flagArg :: Update a -> FlagHelp -> Arg a #

toGroup :: [a] -> Group a #

helpText :: [String] -> HelpFormat -> Mode a -> [Text] #

expandArgsAt :: [String] -> IO [String] #

modes :: String -> a -> Help -> [Mode a] -> Mode a #

complete :: Mode a -> [String] -> (Int, Int) -> [Complete] #

joinArgs :: [String] -> String #

splitArgs :: String -> [String] #

checkMode :: Mode a -> Maybe String #

flagBool :: [Name] -> (Bool -> a -> a) -> Help -> Flag a #

fromFlagOpt :: FlagInfo -> String #

fromGroup :: Group a -> [a] #

modeEmpty :: a -> Mode a #

modeFlags :: Mode a -> [Flag a] #

modeModes :: Mode a -> [Mode a] #

parseBool :: String -> Maybe Bool #

remap2 :: Remap m => (a -> b) -> (b -> a) -> m a -> m b #

remapUpdate :: (a -> b) -> (b -> (a, a -> b)) -> Update a -> Update b #

flagHelpFormat :: (HelpFormat -> TextFormat -> a -> a) -> Flag a #

flagHelpSimple :: (a -> a) -> Flag a #

flagNumericVersion :: (a -> a) -> Flag a #

flagVersion :: (a -> a) -> Flag a #

flagsVerbosity :: (Verbosity -> a -> a) -> [Flag a] #

processArgs :: Mode a -> IO a #

processValue :: Mode a -> [String] -> a #

processValueIO :: Mode a -> [String] -> IO a #