help: allow substring matching
[ci skip]
This commit is contained in:
parent
5e69d6de84
commit
9938aa5e79
@ -6,6 +6,8 @@ The help command.
|
|||||||
--TODO rename manuals
|
--TODO rename manuals
|
||||||
--TODO substring matching
|
--TODO substring matching
|
||||||
|
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
|
|
||||||
module Hledger.Cli.Help (
|
module Hledger.Cli.Help (
|
||||||
|
|
||||||
helpmode
|
helpmode
|
||||||
@ -15,8 +17,11 @@ module Hledger.Cli.Help (
|
|||||||
|
|
||||||
import Prelude ()
|
import Prelude ()
|
||||||
import Prelude.Compat
|
import Prelude.Compat
|
||||||
|
import Data.Char
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
|
import Data.String.Here
|
||||||
|
import Safe
|
||||||
import System.Console.CmdArgs.Explicit
|
import System.Console.CmdArgs.Explicit
|
||||||
import System.Environment
|
import System.Environment
|
||||||
import System.IO
|
import System.IO
|
||||||
@ -54,6 +59,9 @@ help' opts = do
|
|||||||
interactive <- hIsTerminalDevice stdout
|
interactive <- hIsTerminalDevice stdout
|
||||||
let
|
let
|
||||||
args = take 1 $ listofstringopt "args" $ rawopts_ opts
|
args = take 1 $ listofstringopt "args" $ rawopts_ opts
|
||||||
|
topic = case args of
|
||||||
|
[pat] -> headMay [t | t <- docTopics, map toLower pat `isInfixOf` t]
|
||||||
|
_ -> Nothing
|
||||||
[info, man, pager, cat] =
|
[info, man, pager, cat] =
|
||||||
[runInfoForTopic, runManForTopic, runPagerForTopic pagerprog, printHelpForTopic]
|
[runInfoForTopic, runManForTopic, runPagerForTopic pagerprog, printHelpForTopic]
|
||||||
viewer
|
viewer
|
||||||
@ -66,7 +74,9 @@ help' opts = do
|
|||||||
| "man" `elem` exes = man
|
| "man" `elem` exes = man
|
||||||
| pagerprog `elem` exes = pager
|
| pagerprog `elem` exes = pager
|
||||||
| otherwise = cat
|
| otherwise = cat
|
||||||
case args of
|
case topic of
|
||||||
[t] -> viewer t
|
Nothing -> putStrLn $ [here|
|
||||||
_ -> putStrLn $ "Please choose a manual:\nhledger help " ++ intercalate "|" docTopics
|
Please choose a manual by typing "hledger help MANUAL" (any substring is ok).
|
||||||
|
Manuals:
|
||||||
|
|] ++ " " ++ intercalate " " docTopics
|
||||||
|
Just t -> viewer t
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user