imp: ui, web, cli, all cli commands now show the general flags grouped

And cli/ui/web each have their own more specific help flags.
This commit is contained in:
Simon Michael 2024-05-28 23:34:12 -10:00
parent ffb52e3032
commit a366f3aeaa
23 changed files with 69 additions and 62 deletions

View File

@ -69,22 +69,31 @@ uiflags = [
-- ,flagNone ["no-elide"] (setboolopt "no-elide") "don't compress empty parent accounts on one line" -- ,flagNone ["no-elide"] (setboolopt "no-elide") "don't compress empty parent accounts on one line"
--uimode :: Mode RawOpts --uimode :: Mode RawOpts
uimode = (mode "hledger-ui" (setopt "command" "ui" def) uimode =
"browse accounts, postings and entries in a full-window TUI" (mode "hledger-ui" (setopt "command" "ui" def)
(argsFlag "[--cash|--bs|--is|--all|--register=ACCT] [QUERY]") []){ "browse accounts, postings and entries in a full-window TUI"
modeGroupFlags = Group { (argsFlag "[--cash|--bs|--is|--all|--register=ACCT] [QUERY]") [])
groupUnnamed = uiflags {modeGroupFlags = Group {
,groupHidden = hiddenflags groupUnnamed = uiflags
++ ,groupHidden = hiddenflags
[flagNone ["future"] (setboolopt "forecast") "old flag, use --forecast instead" ++
,flagNone ["menu"] (setboolopt "menu") "old flag, menu screen is now the default" [flagNone ["future"] (setboolopt "forecast") "old flag, use --forecast instead"
] ,flagNone ["menu"] (setboolopt "menu") "old flag, menu screen is now the default"
,groupNamed = [(generalflagsgroup1)] ]
} ,groupNamed = mkgeneralflagsgroups1 uihelpflags
,modeHelpSuffix=[ }
-- "Reads your ~/.hledger.journal file, or another specified by $LEDGER_FILE or -f, and starts the full-window TUI." ,modeHelpSuffix=[
] -- "Reads your ~/.hledger.journal file, or another specified by $LEDGER_FILE or -f, and starts the full-window TUI."
} ]
}
uihelpflags :: [Flag RawOpts]
uihelpflags = [
flagNone ["version"] (setboolopt "version") "show version information"
,flagNone ["help","h"] (setboolopt "help") "show command line help"
,flagNone ["man"] (setboolopt "man") "show the hledger-ui manual with man"
,flagNone ["info"] (setboolopt "info") "show the hledger-ui manual with info"
]
-- hledger-ui options, used in hledger-ui and above -- hledger-ui options, used in hledger-ui and above
data UIOpts = UIOpts data UIOpts = UIOpts

View File

@ -112,19 +112,20 @@ webmode =
{ modeGroupFlags = { modeGroupFlags =
Group Group
{ groupUnnamed = webflags { groupUnnamed = webflags
, groupHidden = , groupHidden = hiddenflags
hiddenflags , groupNamed = mkgeneralflagsgroups1 webhelpflags
-- ++
-- [ flagNone
-- ["binary-filename"]
-- (setboolopt "binary-filename")
-- "show the download filename for this executable, and exit"
-- ]
, groupNamed = [generalflagsgroup1]
} }
, modeHelpSuffix = [] , modeHelpSuffix = []
} }
webhelpflags :: [Flag RawOpts]
webhelpflags = [
flagNone ["version"] (setboolopt "version") "show version information"
,flagNone ["help","h"] (setboolopt "help") "show command line help"
,flagNone ["man"] (setboolopt "man") "show the hledger-web manual with man"
,flagNone ["info"] (setboolopt "info") "show the hledger-web manual with info"
]
-- hledger-web options, used in hledger-web and above -- hledger-web options, used in hledger-web and above
data WebOpts = WebOpts data WebOpts = WebOpts
{ serve_ :: !Bool { serve_ :: !Bool

View File

@ -108,9 +108,9 @@ import Hledger.Cli.Version
-- | The overall cmdargs mode describing hledger's command-line options and subcommands. -- | The overall cmdargs mode describing hledger's command-line options and subcommands.
mainmode addons = defMode { mainmode addons = defMode {
modeNames = [progname ++ " [CMD]"] modeNames = [progname ++ " [COMMAND]"]
,modeArgs = ([], Just $ argsFlag "[ARGS]") ,modeArgs = ([], Just $ argsFlag "[ARGS]")
,modeHelp = unlines ["hledger's main command line interface. Runs builtin commands and other hledger executables. Type \"hledger\" to list available commands."] ,modeHelp = unlines ["hledger's main command line interface. Run with no ARGS to list commands."]
,modeGroupModes = Group { ,modeGroupModes = Group {
-- subcommands in the unnamed group, shown first: -- subcommands in the unnamed group, shown first:
groupUnnamed = [ groupUnnamed = [
@ -122,12 +122,8 @@ mainmode addons = defMode {
,groupHidden = map fst builtinCommands ++ map addonCommandMode addons ,groupHidden = map fst builtinCommands ++ map addonCommandMode addons
} }
,modeGroupFlags = Group { ,modeGroupFlags = Group {
-- flags in named groups: -- flags in named groups: (keep synced with Hledger.Cli.CliOptions.highlightHelp)
groupNamed = [ groupNamed = cligeneralflagsgroups1
( "General input flags", inputflags)
,("\nGeneral reporting flags", reportflags)
,("\nGeneral help flags", helpflags)
]
-- flags in the unnamed group, shown last: -- flags in the unnamed group, shown last:
,groupUnnamed = [] ,groupUnnamed = []
-- flags handled but not shown in the help: -- flags handled but not shown in the help:
@ -135,15 +131,16 @@ mainmode addons = defMode {
[detailedversionflag] [detailedversionflag]
-- ++ inputflags -- included here so they'll not raise a confusing error if present with no COMMAND -- ++ inputflags -- included here so they'll not raise a confusing error if present with no COMMAND
} }
,modeHelpSuffix = "Examples:" : ,modeHelpSuffix = []
map (progname ++) [ -- "Examples:" :
" list commands" -- map (progname ++) [
," CMD [--] [OPTS] [ARGS] run a command (use -- with addon commands)" -- " list commands"
,"-CMD [OPTS] [ARGS] or run addon commands directly" -- ," CMD [--] [OPTS] [ARGS] run a command (use -- with addon commands)"
," -h show general usage" -- ,"-CMD [OPTS] [ARGS] or run addon commands directly"
," CMD -h show command usage" -- ," -h show general usage"
," help [MANUAL] show any of the hledger manuals in various formats" -- ," CMD -h show command usage"
] -- ," help [MANUAL] show any of the hledger manuals in various formats"
-- ]
} }
-- | Let's go! -- | Let's go!

View File

@ -48,7 +48,7 @@ accountsmode = hledgerCommandMode
++ flattreeflags False ++ ++ flattreeflags False ++
[flagReq ["drop"] (\s opts -> Right $ setopt "drop" s opts) "N" "flat mode: omit N leading account name parts"] [flagReq ["drop"] (\s opts -> Right $ setopt "drop" s opts) "N" "flat mode: omit N leading account name parts"]
) )
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -19,7 +19,7 @@ import Hledger.Cli.CliOptions
activitymode = hledgerCommandMode activitymode = hledgerCommandMode
$(embedFileRelative "Hledger/Cli/Commands/Activity.txt") $(embedFileRelative "Hledger/Cli/Commands/Activity.txt")
[] []
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -61,7 +61,7 @@ aregistermode = hledgerCommandMode
,outputFormatFlag ["txt","html","csv","tsv","json"] ,outputFormatFlag ["txt","html","csv","tsv","json"]
,outputFileFlag ,outputFileFlag
]) ])
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "ACCTPAT [QUERY]") ([], Just $ argsFlag "ACCTPAT [QUERY]")

View File

@ -336,7 +336,7 @@ balancemode = hledgerCommandMode
,outputFileFlag ,outputFileFlag
] ]
) )
[generalflagsgroup1] cligeneralflagsgroups1
(hiddenflags ++ (hiddenflags ++
[ flagNone ["commodity-column"] (setboolopt "commodity-column") [ flagNone ["commodity-column"] (setboolopt "commodity-column")
"show commodity symbols in a separate column, amounts as bare numbers, one row per commodity" "show commodity symbols in a separate column, amounts as bare numbers, one row per commodity"

View File

@ -22,7 +22,7 @@ checkmode :: Mode RawOpts
checkmode = hledgerCommandMode checkmode = hledgerCommandMode
$(embedFileRelative "Hledger/Cli/Commands/Check.txt") $(embedFileRelative "Hledger/Cli/Commands/Check.txt")
[] []
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[CHECKS]") ([], Just $ argsFlag "[CHECKS]")

View File

@ -53,7 +53,7 @@ closemode = hledgerCommandMode
,flagReq ["open-acct"] (\s opts -> Right $ setopt "open-acct" s opts) "ACCT" "set opening transaction's source account" ,flagReq ["open-acct"] (\s opts -> Right $ setopt "open-acct" s opts) "ACCT" "set opening transaction's source account"
,roundFlag ,roundFlag
] ]
[generalflagsgroup1] cligeneralflagsgroups1
(hiddenflags (hiddenflags
++ -- keep supporting old flag names for compatibility ++ -- keep supporting old flag names for compatibility
[flagNone ["closing"] (setboolopt "close") "old spelling of --close" [flagNone ["closing"] (setboolopt "close") "old spelling of --close"

View File

@ -26,7 +26,7 @@ import Hledger.Cli.CliOptions
codesmode = hledgerCommandMode codesmode = hledgerCommandMode
$(embedFileRelative "Hledger/Cli/Commands/Codes.txt") $(embedFileRelative "Hledger/Cli/Commands/Codes.txt")
[] []
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -25,7 +25,7 @@ import Hledger.Cli.CliOptions
descriptionsmode = hledgerCommandMode descriptionsmode = hledgerCommandMode
$(embedFileRelative "Hledger/Cli/Commands/Descriptions.txt") $(embedFileRelative "Hledger/Cli/Commands/Descriptions.txt")
[] []
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -24,7 +24,7 @@ importmode = hledgerCommandMode
[flagNone ["catchup"] (setboolopt "catchup") "just mark all transactions as already imported" [flagNone ["catchup"] (setboolopt "catchup") "just mark all transactions as already imported"
,flagNone ["dry-run"] (setboolopt "dry-run") "just show the transactions to be imported" ,flagNone ["dry-run"] (setboolopt "dry-run") "just show the transactions to be imported"
] ]
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "FILE [...]") ([], Just $ argsFlag "FILE [...]")

View File

@ -26,7 +26,7 @@ import Hledger.Cli.CliOptions
notesmode = hledgerCommandMode notesmode = hledgerCommandMode
$(embedFileRelative "Hledger/Cli/Commands/Notes.txt") $(embedFileRelative "Hledger/Cli/Commands/Notes.txt")
[] []
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -28,7 +28,7 @@ payeesmode = hledgerCommandMode
[flagNone ["declared"] (setboolopt "declared") "show payees declared with payee directives" [flagNone ["declared"] (setboolopt "declared") "show payees declared with payee directives"
,flagNone ["used"] (setboolopt "used") "show payees referenced by transactions" ,flagNone ["used"] (setboolopt "used") "show payees referenced by transactions"
] ]
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -22,7 +22,7 @@ pricesmode = hledgerCommandMode
[flagNone ["show-reverse"] (setboolopt "show-reverse") [flagNone ["show-reverse"] (setboolopt "show-reverse")
"also show the prices inferred by reversing known prices" "also show the prices inferred by reversing known prices"
] ]
[generalflagsgroup1] cligeneralflagsgroups1
(hiddenflags ++ (hiddenflags ++
[flagNone ["costs"] (setboolopt "infer-market-prices") "deprecated, use --infer-market-prices instead" [flagNone ["costs"] (setboolopt "infer-market-prices") "deprecated, use --infer-market-prices instead"
,flagNone ["inverted-costs"] (setboolopt "show-reverse") "deprecated, use --show-reverse instead" ,flagNone ["inverted-costs"] (setboolopt "show-reverse") "deprecated, use --show-reverse instead"

View File

@ -51,7 +51,7 @@ printmode = hledgerCommandMode
,outputFormatFlag ["txt","beancount","csv","tsv","json","sql"] ,outputFormatFlag ["txt","beancount","csv","tsv","json","sql"]
,outputFileFlag ,outputFileFlag
]) ])
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -62,7 +62,7 @@ registermode = hledgerCommandMode
,outputFormatFlag ["txt","csv","tsv","json"] ,outputFormatFlag ["txt","csv","tsv","json"]
,outputFileFlag ,outputFileFlag
]) ])
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -29,7 +29,7 @@ rewritemode = hledgerCommandMode
"add a posting to ACCT, which may be parenthesised. AMTEXPR is either a literal amount, or *N which means the transaction's first matched amount multiplied by N (a decimal number). Two spaces separate ACCT and AMTEXPR." "add a posting to ACCT, which may be parenthesised. AMTEXPR is either a literal amount, or *N which means the transaction's first matched amount multiplied by N (a decimal number). Two spaces separate ACCT and AMTEXPR."
,flagNone ["diff"] (setboolopt "diff") "generate diff suitable as an input for patch tool" ,flagNone ["diff"] (setboolopt "diff") "generate diff suitable as an input for patch tool"
] ]
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY] --add-posting \"ACCT AMTEXPR\" ...") ([], Just $ argsFlag "[QUERY] --add-posting \"ACCT AMTEXPR\" ...")

View File

@ -44,7 +44,7 @@ roimode = hledgerCommandMode
,flagReq ["profit-loss","pnl"] (\s opts -> Right $ setopt "pnl" s opts) "QUERY" ,flagReq ["profit-loss","pnl"] (\s opts -> Right $ setopt "pnl" s opts) "QUERY"
"query to select profit-and-loss or appreciation/valuation transactions" "query to select profit-and-loss or appreciation/valuation transactions"
] ]
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -43,7 +43,7 @@ statsmode = hledgerCommandMode
[ flagNone ["verbose","v"] (setboolopt "verbose") "show more detailed output" [ flagNone ["verbose","v"] (setboolopt "verbose") "show more detailed output"
,flagReq ["output-file","o"] (\s opts -> Right $ setopt "output-file" s opts) "FILE" "write output to FILE." ,flagReq ["output-file","o"] (\s opts -> Right $ setopt "output-file" s opts) "FILE" "write output to FILE."
] ]
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[QUERY]") ([], Just $ argsFlag "[QUERY]")

View File

@ -21,7 +21,7 @@ tagsmode = hledgerCommandMode
[flagNone ["values"] (setboolopt "values") "list tag values instead of tag names" [flagNone ["values"] (setboolopt "values") "list tag values instead of tag names"
,flagNone ["parsed"] (setboolopt "parsed") "show tags/values in the order they were parsed, including duplicates" ,flagNone ["parsed"] (setboolopt "parsed") "show tags/values in the order they were parsed, including duplicates"
] ]
[generalflagsgroup1] cligeneralflagsgroups1
hiddenflags hiddenflags
([], Just $ argsFlag "[TAGREGEX [QUERY...]]") ([], Just $ argsFlag "[TAGREGEX [QUERY...]]")

View File

@ -97,7 +97,7 @@ compoundBalanceCommandMode CompoundBalanceCommandSpec{..} =
,outputFormatFlag ["txt","html","csv","tsv","json"] ,outputFormatFlag ["txt","html","csv","tsv","json"]
,outputFileFlag ,outputFileFlag
]) ])
[generalflagsgroup1] cligeneralflagsgroups1
(hiddenflags ++ (hiddenflags ++
[ flagNone ["commodity-column"] (setboolopt "commodity-column") [ flagNone ["commodity-column"] (setboolopt "commodity-column")
"show commodity symbols in a separate column, amounts as bare numbers, one row per commodity" "show commodity symbols in a separate column, amounts as bare numbers, one row per commodity"

View File

@ -83,7 +83,7 @@ $ hledger -f somefile
# ** 6. with -h, and possibly other common flags present, show general usage # ** 6. with -h, and possibly other common flags present, show general usage
$ hledger -h --version -f /dev/null $ hledger -h --version -f /dev/null
> /^hledger \[CMD\]/ > /^hledger \[COMMAND\]/
# ** 7. with -h before a COMMAND, show command usage # ** 7. with -h before a COMMAND, show command usage
$ hledger -h balance --cost $ hledger -h balance --cost