1
0
Fork 0
mirror of https://github.com/KingDuckZ/dindexer.git synced 2025-02-17 11:45:50 +00:00

Hack to retrieve the wrong value from boost's exception.

This commit is contained in:
King_DuckZ 2015-12-12 16:53:16 +00:00
parent 8a4afa241e
commit 0373743b61
2 changed files with 20 additions and 2 deletions

View file

@ -23,6 +23,16 @@
namespace po = boost::program_options;
namespace din {
ValidationError::ValidationError (const po::validation_error& parOther) :
po::validation_error(parOther)
{
}
const std::string& ValidationError::raw_value() const {
auto it_ret = m_substitutions.find("value");
return it_ret->second;
}
bool parse_commandline (int parArgc, char* parArgv[], po::variables_map& parVarMap) {
po::options_description set_options(ACTION_NAME " options");
//set_options.add_options()
@ -44,8 +54,8 @@ namespace din {
try {
po::store(po::command_line_parser(parArgc, parArgv).options(all)/*.positional(pd)*/.run(), parVarMap);
}
catch (const po::unknown_option& err) {
throw std::invalid_argument(err.what());
catch (const po::validation_error& err) {
throw ValidationError(err);
}
po::notify(parVarMap);

View file

@ -23,6 +23,14 @@
#include "dindexer-common/mediatypes.hpp"
namespace din {
class ValidationError : boost::program_options::validation_error {
public:
explicit ValidationError ( const boost::program_options::validation_error& parOther );
~ValidationError ( void ) noexcept = default;
const std::string& raw_value ( void ) const;
};
bool parse_commandline ( int parArgc, char* parArgv[], boost::program_options::variables_map& parVarMap );
} //namespace din