run: support --man, --info, --tldr

This commit is contained in:
Dmitry Astapov 2025-03-06 21:35:45 +00:00 committed by Simon Michael
parent 7fdb2f7fe6
commit 758335daf0

View File

@ -33,11 +33,13 @@ import Control.Monad.IO.Class (liftIO)
import Control.Monad.Extra (concatMapM) import Control.Monad.Extra (concatMapM)
import System.Exit (ExitCode) import System.Exit (ExitCode)
import System.Console.CmdArgs.Explicit (expandArgsAt, modeNames)
import System.IO (stdin, hIsTerminalDevice, hIsOpen) import System.IO (stdin, hIsTerminalDevice, hIsOpen)
import System.IO.Unsafe (unsafePerformIO) import System.IO.Unsafe (unsafePerformIO)
import System.Console.Haskeline import System.Console.Haskeline
import Safe (headMay) import Safe (headMay)
import Hledger.Cli.DocFiles (runTldrForPage, runInfoForTopic, runManForTopic)
import Hledger.Cli.Utils (journalTransform) import Hledger.Cli.Utils (journalTransform)
-- | Command line options for this command. -- | Command line options for this command.
@ -139,6 +141,19 @@ runCommand defaultJournalOverride findBuiltinCommand cmdline = do
args' <- replaceNumericFlags <$> expandArgsAt args args' <- replaceNumericFlags <$> expandArgsAt args
dbg1IO "runCommand final args" (cmdname,args') dbg1IO "runCommand final args" (cmdname,args')
opts <- getHledgerCliOpts' cmdmode args' opts <- getHledgerCliOpts' cmdmode args'
let
rawopts = rawopts_ opts
mmodecmdname = headMay $ modeNames cmdmode
helpFlag = boolopt "help" rawopts
tldrFlag = boolopt "tldr" rawopts
infoFlag = boolopt "info" rawopts
manFlag = boolopt "man" rawopts
if
| helpFlag -> runPager $ showModeUsage cmdmode ++ "\n"
| tldrFlag -> runTldrForPage $ maybe "hledger" (("hledger-"<>)) mmodecmdname
| infoFlag -> runInfoForTopic "hledger" mmodecmdname
| manFlag -> runManForTopic "hledger" mmodecmdname
| otherwise -> do
withJournalCached (Just defaultJournalOverride) opts $ \(j,key) -> do withJournalCached (Just defaultJournalOverride) opts $ \(j,key) -> do
if cmdname == "run" -- allow "run" to call "run" if cmdname == "run" -- allow "run" to call "run"
then run (Just key) findBuiltinCommand opts then run (Just key) findBuiltinCommand opts