cli/argumentParser: improve formatting of description

This commit is contained in:
Vaxry 2025-11-24 14:54:18 +00:00
parent 5e1a14bc29
commit 0168583075
Signed by: vaxry
GPG key ID: 665806380871D640
2 changed files with 16 additions and 12 deletions

View file

@ -253,12 +253,16 @@ std::string CArgumentParserImpl::getDescription(const std::string_view& header,
rolling += pad(maxArgWidth - lenUsed);
lenUsed = maxArgWidth;
rolling += " -" + v.abbrev;
lenUsed += 2 + v.abbrev.size();
rolling += " ";
rolling += TYPE_STRS[v.argType];
lenUsed += std::string_view{TYPE_STRS[v.argType]}.length() + 1;
rolling += pad(maxArgWidth + maxShortWidth - lenUsed);
if (!v.abbrev.empty()) {
rolling += " -" + v.abbrev;
lenUsed += 2 + v.abbrev.size();
rolling += " ";
rolling += TYPE_STRS[v.argType];
lenUsed += std::string_view{TYPE_STRS[v.argType]}.length() + 1;
rolling += pad(maxArgWidth + maxShortWidth - lenUsed);
} else
rolling += pad(maxShortWidth);
lenUsed = maxArgWidth + maxShortWidth;
rolling += " | ";
@ -275,7 +279,7 @@ std::string CArgumentParserImpl::getDescription(const std::string_view& header,
for (size_t i = 1; i < ROWS.size(); ++i) {
lenUsed = LEN_START_DESC;
rolling += "";
rolling += "";
rolling += pad(LEN_START_DESC);
rolling += ROWS[i];
lenUsed += ROWS[i].size();

View file

@ -10,12 +10,12 @@ using namespace Hyprutils;
constexpr const char* DESC_TEST = R"#(┏ My description
--hello -h | Says hello
--hello2 -e | Says hello 2
--hello2 | Says hello 2
--value -v [float] | Sets a valueeeeeee
--longlonglonglongintopt -l [int] | Long long
maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaan maaan man maaan man maaan
man maaan man
maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaan maaan man maaan man maaan
man maaan man
)#";
@ -25,7 +25,7 @@ TEST(CLI, ArgumentParser) {
CArgumentParser parser(argv);
EXPECT_TRUE(parser.registerBoolOption("hello", "h", "Says hello"));
EXPECT_TRUE(parser.registerBoolOption("hello2", "e", "Says hello 2"));
EXPECT_TRUE(parser.registerBoolOption("hello2", "", "Says hello 2"));
EXPECT_TRUE(parser.registerFloatOption("value", "v", "Sets a valueeeeeee"));
EXPECT_TRUE(parser.registerIntOption("longlonglonglongintopt", "l", "Long long maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan maaan man maaan man maaan man maaan man"));