diff --git a/app/include/plasp-app/Command.h b/app/include/plasp-app/Command.h index d006fc4..5755ee3 100644 --- a/app/include/plasp-app/Command.h +++ b/app/include/plasp-app/Command.h @@ -48,12 +48,12 @@ class Command void parseOptions(int argc, char **argv) { - m_options.parse(argc, argv); + const auto parseResult = m_options.parse(argc, argv); forEach(m_optionGroups, [&](auto &optionGroup) { - optionGroup.parse(m_options); + optionGroup.read(parseResult); }); } diff --git a/app/include/plasp-app/OptionGroups.h b/app/include/plasp-app/OptionGroups.h index 885bf2d..29cf1ed 100644 --- a/app/include/plasp-app/OptionGroups.h +++ b/app/include/plasp-app/OptionGroups.h @@ -30,7 +30,7 @@ struct OptionGroupBasic static constexpr const auto Name = "basic"; void addTo(cxxopts::Options &options); - void parse(cxxopts::Options &options); + void read(const cxxopts::ParseResult &parseResult); bool help = false; bool version = false; @@ -44,7 +44,7 @@ struct OptionGroupOutput static constexpr const auto Name = "output"; void addTo(cxxopts::Options &options); - void parse(cxxopts::Options &options); + void read(const cxxopts::ParseResult &parseResult); colorlog::ColorStream::ColorPolicy colorPolicy = colorlog::ColorStream::ColorPolicy::Auto; colorlog::Priority logPriority = colorlog::Priority::Info; @@ -57,7 +57,7 @@ struct OptionGroupParser static constexpr const auto Name = "parser"; void addTo(cxxopts::Options &options); - void parse(cxxopts::Options &options); + void read(const cxxopts::ParseResult &parseResult); std::vector inputFiles; pddl::Mode parsingMode = pddl::Mode::Strict; diff --git a/app/src/plasp-app/OptionGroups.cpp b/app/src/plasp-app/OptionGroups.cpp index 4940f83..cea4f40 100644 --- a/app/src/plasp-app/OptionGroups.cpp +++ b/app/src/plasp-app/OptionGroups.cpp @@ -21,11 +21,11 @@ void OptionGroupBasic::addTo(cxxopts::Options &options) //////////////////////////////////////////////////////////////////////////////////////////////////// -void OptionGroupBasic::parse(cxxopts::Options &options) +void OptionGroupBasic::read(const cxxopts::ParseResult &parseResult) { - help = options["help"].as(); - version = options["version"].as(); - warningsAsErrors = options["warnings-as-errors"].as(); + help = (parseResult.count("help") > 0); + version = (parseResult.count("version") > 0); + warningsAsErrors = (parseResult.count("warnings-as-errors") > 0); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -44,9 +44,9 @@ void OptionGroupOutput::addTo(cxxopts::Options &options) //////////////////////////////////////////////////////////////////////////////////////////////////// -void OptionGroupOutput::parse(cxxopts::Options &options) +void OptionGroupOutput::read(const cxxopts::ParseResult &parseResult) { - const auto colorPolicyString = options["color"].as(); + const auto colorPolicyString = parseResult["color"].as(); if (colorPolicyString == "auto") colorPolicy = colorlog::ColorStream::ColorPolicy::Auto; @@ -57,7 +57,7 @@ void OptionGroupOutput::parse(cxxopts::Options &options) else throw OptionException("unknown color policy “" + colorPolicyString + "”"); - const auto logPriorityString = options["log-priority"].as(); + const auto logPriorityString = parseResult["log-priority"].as(); try { @@ -88,19 +88,19 @@ void OptionGroupParser::addTo(cxxopts::Options &options) //////////////////////////////////////////////////////////////////////////////////////////////////// -void OptionGroupParser::parse(cxxopts::Options &options) +void OptionGroupParser::read(const cxxopts::ParseResult &parseResult) { - const auto parsingModeString = options["parsing-mode"].as(); + const auto parsingModeString = parseResult["parsing-mode"].as(); if (parsingModeString == "compatibility") parsingMode = pddl::Mode::Compatibility; else if (parsingModeString != "strict") throw OptionException("unknown parsing mode “" + parsingModeString + "”"); - if (options.count("input")) - inputFiles = options["input"].as>(); + if (parseResult.count("input")) + inputFiles = parseResult["input"].as>(); - const auto languageName = options["language"].as(); + const auto languageName = parseResult["language"].as(); language = plasp::Language::fromString(languageName); if (language == plasp::Language::Type::Unknown) diff --git a/lib/cxxopts b/lib/cxxopts index 0b76869..8893afe 160000 --- a/lib/cxxopts +++ b/lib/cxxopts @@ -1 +1 @@ -Subproject commit 0b7686949d01f6475cc13ba0693725aefb76fc0c +Subproject commit 8893afe13cc47dd0be4f25b5ae491e652c146098