Fix empty option name in OptionException
This commit is contained in:
parent
4b63c333a8
commit
09c08271ca
@ -456,7 +456,7 @@ namespace cxxopts
|
||||
public:
|
||||
explicit option_has_no_value_exception(const std::string& option)
|
||||
: OptionException(
|
||||
option.empty() ?
|
||||
!option.empty() ?
|
||||
("Option " + LQUOTE + option + RQUOTE + " has no value") :
|
||||
"Option has no value")
|
||||
{
|
||||
@ -1122,6 +1122,12 @@ namespace cxxopts
|
||||
m_value->parse();
|
||||
}
|
||||
|
||||
void
|
||||
parse_no_value(const std::shared_ptr<const OptionDetails>& details)
|
||||
{
|
||||
m_long_name = &details->long_name();
|
||||
}
|
||||
|
||||
CXXOPTS_NODISCARD
|
||||
size_t
|
||||
count() const noexcept
|
||||
@ -1354,6 +1360,9 @@ namespace cxxopts
|
||||
void
|
||||
parse_default(const std::shared_ptr<OptionDetails>& details);
|
||||
|
||||
void
|
||||
parse_no_value(const std::shared_ptr<OptionDetails>& details);
|
||||
|
||||
private:
|
||||
|
||||
void finalise_aliases();
|
||||
@ -1751,6 +1760,14 @@ OptionParser::parse_default(const std::shared_ptr<OptionDetails>& details)
|
||||
store.parse_default(details);
|
||||
}
|
||||
|
||||
inline
|
||||
void
|
||||
OptionParser::parse_no_value(const std::shared_ptr<OptionDetails>& details)
|
||||
{
|
||||
auto& store = m_parsed[details->hash()];
|
||||
store.parse_no_value(details);
|
||||
}
|
||||
|
||||
inline
|
||||
void
|
||||
OptionParser::parse_option
|
||||
@ -2002,8 +2019,13 @@ OptionParser::parse(int argc, const char** argv)
|
||||
|
||||
auto& store = m_parsed[detail->hash()];
|
||||
|
||||
if(value.has_default() && !store.count() && !store.has_default()){
|
||||
parse_default(detail);
|
||||
if (value.has_default()) {
|
||||
if (!store.count() && !store.has_default()) {
|
||||
parse_default(detail);
|
||||
}
|
||||
}
|
||||
else {
|
||||
parse_no_value(detail);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user