From 47661042b997c507350fcc70f2e634702aeb76e5 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 16 Dec 2021 15:47:30 +0100 Subject: [PATCH] fix(cli): make emqx_ctl aware of max width --- apps/emqx/src/emqx_ctl.erl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/emqx/src/emqx_ctl.erl b/apps/emqx/src/emqx_ctl.erl index 3ca8174fe..42baf9854 100644 --- a/apps/emqx/src/emqx_ctl.erl +++ b/apps/emqx/src/emqx_ctl.erl @@ -160,18 +160,28 @@ format(Format, Args) -> -spec(format_usage([cmd_usage()]) -> [string()]). format_usage(UsageList) -> + Width = lists:foldl(fun({CmdStr, _}, W) -> + max(iolist_size(CmdStr), W) + end, 0, UsageList), lists:map( fun({CmdParams, Desc}) -> - format_usage(CmdParams, Desc) + format_usage(CmdParams, Desc, Width) end, UsageList). -spec(format_usage(cmd_params(), cmd_descr()) -> string()). format_usage(CmdParams, Desc) -> + format_usage(CmdParams, Desc, 0). + +format_usage(CmdParams, Desc, 0) -> + format_usage(CmdParams, Desc, iolist_size(CmdParams)); +format_usage(CmdParams, Desc, Width) -> CmdLines = split_cmd(CmdParams), DescLines = split_cmd(Desc), + Zipped = zip_cmd(CmdLines, DescLines), + Fmt = "~-" ++ integer_to_list(Width + 1) ++ "s# ~ts~n", lists:foldl(fun({CmdStr, DescStr}, Usage) -> - Usage ++ format("~-70s# ~ts~n", [CmdStr, DescStr]) - end, "", zip_cmd(CmdLines, DescLines)). + Usage ++ format(Fmt, [CmdStr, DescStr]) + end, "", Zipped). %%-------------------------------------------------------------------- %% gen_server callbacks