mirror of
https://github.com/hyprwm/hyprutils.git
synced 2025-12-20 07:00:10 +01:00
cli/argumentParser: allow empty short
This commit is contained in:
parent
bc9803c4b8
commit
5e1a14bc29
2 changed files with 7 additions and 0 deletions
|
|
@ -96,12 +96,17 @@ CArgumentParserImpl::CArgumentParserImpl(const std::span<const char*>& args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<SArgumentKey>::iterator CArgumentParserImpl::getValue(const std::string_view& sv) {
|
std::vector<SArgumentKey>::iterator CArgumentParserImpl::getValue(const std::string_view& sv) {
|
||||||
|
if (sv.empty())
|
||||||
|
return m_values.end();
|
||||||
auto it = std::ranges::find_if(m_values, [&sv](const auto& e) { return e.full == sv || e.abbrev == sv; });
|
auto it = std::ranges::find_if(m_values, [&sv](const auto& e) { return e.full == sv || e.abbrev == sv; });
|
||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::expected<void, std::string> CArgumentParserImpl::registerOption(const std::string_view& name, const std::string_view& abbrev, const std::string_view& description,
|
std::expected<void, std::string> CArgumentParserImpl::registerOption(const std::string_view& name, const std::string_view& abbrev, const std::string_view& description,
|
||||||
eArgumentType type) {
|
eArgumentType type) {
|
||||||
|
if (name.empty())
|
||||||
|
return std::unexpected("Name cannot be empty");
|
||||||
|
|
||||||
if (getValue(name) != m_values.end() || getValue(abbrev) != m_values.end())
|
if (getValue(name) != m_values.end() || getValue(abbrev) != m_values.end())
|
||||||
return std::unexpected("Value already exists");
|
return std::unexpected("Value already exists");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@ TEST(CLI, ArgumentParser) {
|
||||||
EXPECT_TRUE(parser2.registerBoolOption("hello2", "e", "Says hello 2"));
|
EXPECT_TRUE(parser2.registerBoolOption("hello2", "e", "Says hello 2"));
|
||||||
EXPECT_TRUE(parser2.registerFloatOption("value", "v", "Sets a valueeeeeee"));
|
EXPECT_TRUE(parser2.registerFloatOption("value", "v", "Sets a valueeeeeee"));
|
||||||
EXPECT_TRUE(parser2.registerIntOption("longlonglonglongintopt", "l", "Long long maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan maaan man maaan man maaan man maaan man"));
|
EXPECT_TRUE(parser2.registerIntOption("longlonglonglongintopt", "l", "Long long maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan maaan man maaan man maaan man maaan man"));
|
||||||
|
EXPECT_TRUE(parser2.registerFloatOption("value2", "", "Sets a valueeeeeee 2"));
|
||||||
|
EXPECT_TRUE(!parser2.registerFloatOption("", "a", "Sets a valueeeeeee 2"));
|
||||||
|
|
||||||
auto result2 = parser2.parse();
|
auto result2 = parser2.parse();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue