hledger/hledger/Hledger/Cli.hs
Stephen Morgan 83aa7324eb dev: cli: Move Template Haskell to get git hash from Hledger.Cli.Version
to Hledger.Cli.

Since the git hash changes whenever any file in the repository changes,
this means Hledger.Cli.Version needs to be recompiled all the time.
Since it is at the bottom of the module hierarchy, this means that the
whole hledger package needs to be recompiled. We instead move the
TemplateHaskell splice to one of the top modules, so much less needs to
be recompiled.

Note: Ghc seems to be able to get out of most of the recompiling a lot
of the time (due to caching?), but this makes things more reliable.
2021-08-30 15:57:33 -10:00

40 lines
1.3 KiB
Haskell

{-# LANGUAGE TemplateHaskell #-}
{-|
Hledger.Cli re-exports the options, utilities and commands provided by
the hledger command-line program. This module also aggregates the
built-in unit tests defined throughout hledger and hledger-lib, and
adds some more which are easier to define here.
-}
module Hledger.Cli (
module Hledger.Cli.CliOptions,
module Hledger.Cli.Commands,
module Hledger.Cli.DocFiles,
module Hledger.Cli.Utils,
module Hledger.Cli.Version,
module Hledger,
module System.Console.CmdArgs.Explicit,
prognameandversion,
versionStringForProgname
)
where
import GitHash (tGitInfoCwdTry)
import System.Console.CmdArgs.Explicit hiding (Name) -- don't clash with hledger-ui
import Hledger
import Hledger.Cli.CliOptions
import Hledger.Cli.Commands
import Hledger.Cli.DocFiles
import Hledger.Cli.Utils
import Hledger.Cli.Version
-- | The program name and the best version information we can obtain
-- from git describe or build variables.
prognameandversion = versionStringForProgname progname
versionStringForProgname = versionStringFor $$tGitInfoCwdTry
-- unit tests (tests_Hledger_Cli) are defined in Hledger.Cli.Commands