Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
6137-stdlib-Fix-argparse-format_help-for-sub-co...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 6137-stdlib-Fix-argparse-format_help-for-sub-commands.patch of Package erlang
From 1aa91e7359656129629c5b1c05c56aba1d36abfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janusz=20Wo=C5=BAniak?= <jasewo@gmail.com> Date: Tue, 3 Sep 2024 22:06:12 +0200 Subject: [PATCH] stdlib: Fix argparse:format_help for sub-commands Use sub-command's 'help' for formatting instead of command's one when possible. --- lib/stdlib/src/argparse.erl | 10 +++++++++- lib/stdlib/test/argparse_SUITE.erl | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/stdlib/src/argparse.erl b/lib/stdlib/src/argparse.erl index c546c30f16..3536bec696 100644 --- a/lib/stdlib/src/argparse.erl +++ b/lib/stdlib/src/argparse.erl @@ -1628,7 +1628,7 @@ format_help({ProgName, Root}, Format) -> %% usage line has hardcoded format for now Usage = [ProgName, ShortCmd, FlagsForm, Opts, Args], %% format usage according to help template - Template0 = maps:get(help, Root, ""), + Template0 = get_help(Root, Nested), %% when there is no help defined for the command, or help is a string, %% use the default format (original argparse behaviour) Template = @@ -1659,6 +1659,14 @@ collect_options(CmdName, Command, [Cmd|Tail], Args) -> SubCmd = maps:get(Cmd, Sub), collect_options(CmdName ++ " " ++ Cmd, SubCmd, Tail, Args ++ maps:get(arguments, Command, [])). +%% gets help for sub-command +get_help(Command, []) -> + maps:get(help, Command, ""); +get_help(Command, [Cmd|Tail]) -> + Sub = maps:get(commands, Command), + SubCmd = maps:get(Cmd, Sub), + get_help(SubCmd, Tail). + %% conditionally adds text and empty lines maybe_add(_ToAdd, [], _Element, Template) -> Template; diff --git a/lib/stdlib/test/argparse_SUITE.erl b/lib/stdlib/test/argparse_SUITE.erl index a4a6b21a5e..f0cd7c39f7 100644 --- a/lib/stdlib/test/argparse_SUITE.erl +++ b/lib/stdlib/test/argparse_SUITE.erl @@ -751,6 +751,8 @@ usage(Config) when is_list(Config) -> " [-t <t>] ---maybe-req -y <y> --yyy <y> [-u <u>] [-c <choice>] [-q <fc>]\n" " [-w <ac>] [--unsafe <au>] [--safe <as>] [-foobar <long>] <server> [<optpos>]\n" "\n" + "verifies configuration and starts server\n" + "\n" "Subcommands:\n" " crawler controls crawler behaviour\n" " doze dozes a bit\n\n" @@ -799,6 +801,8 @@ usage(Config) when is_list(Config) -> #{progname => erl}))), CrawlerStatus = "Usage:\n erl status crawler [-rfv] [--force] [-i <interval>] [--req <weird>]\n" " [--float <float>] [---extra <extra>]\n\n" + "crawler status\n" + "\n" "Optional arguments:\n" " -r recursive\n" " -f, --force force\n" -- 2.43.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor