diff --git a/src/util/argparser.cpp b/src/util/argparser.cpp index 3e362d8..27f78ad 100644 --- a/src/util/argparser.cpp +++ b/src/util/argparser.cpp @@ -59,6 +59,9 @@ void ArgParser::printError(const char* parameter, Error error, bool longName) else if (error == Error::ArgumentExtraOperand) { printf("%s: extra operand '%s'\n", m_name, parameter); } + else if (error == Error::ArgumentRequired) { + printf("%s: missing required argument '%s'\n", m_name, parameter); + } else if (error == Error::ArgumentInvalidType) { printf("%s: invalid argument type '%s'\n", m_name, parameter); } @@ -179,7 +182,6 @@ bool ArgParser::parseLongOption(std::string_view option, std::string_view next) return false; } - // FIXME: Figure out why providing a nullptr breaks the lambda here. result = foundOption->acceptValue(""); } else if (foundOption->requiresArgument == Required::Yes) { @@ -312,7 +314,7 @@ bool ArgParser::parse(int argc, const char* argv[]) Argument& currentArgument = m_arguments.at(m_argumentIndex); if (currentArgument.minValues > currentArgument.addedValues) { result = false; - // TODO: decide if and what to print here + printError(currentArgument.name ? currentArgument.name : "", Error::ArgumentRequired); } } diff --git a/src/util/argparser.h b/src/util/argparser.h index 1e08d65..f1f0b1a 100644 --- a/src/util/argparser.h +++ b/src/util/argparser.h @@ -30,6 +30,7 @@ public: OptionRequiresArgument, OptionInvalidArgumentType, ArgumentExtraOperand, + ArgumentRequired, ArgumentInvalidType, };