51 std::vector<ConfigParamSpec>
const& currentWorkflowOptions,
53 std::string
mode =
"full")
55 boost::program_options::options_description toplevel;
56 boost::program_options::options_description wo(
"Global workflow options");
60 std::string specOptionsDescription =
"Available data processors";
61 if (
mode ==
"short") {
62 specOptionsDescription +=
" (full info with '--help full')";
65 for (
const auto& spec : workflow) {
66 std::string
name =
"Data processor options: " + spec.name;
67 boost::program_options::options_description processorOptions(
name);
74 if (vetos.options().size() > 0) {
75 vetos.add(processorOptions);
78 specOptions.add(processorOptions);
79 }
else if (
mode == spec.name) {
80 toplevel.add(processorOptions);
84 if (
mode ==
"full" ||
mode ==
"short") {
87 help =
"Option groups by process name: --" + spec.name + R
"( "<processor options>")";
88 } else if (
mode ==
"short" && processorOptions.options().size() > 0) {
89 help =
"Use '--help " + spec.name +
"' to display processor options";
90 }
else if (
mode ==
"short" && processorOptions.options().size() == 0) {
91 help =
"No processor options";
93 specOptions.add_options()(spec.name.c_str(),
94 boost::program_options::value<std::string>(),
98 if (workflow.size() > 0 && (
mode ==
"full" ||
mode ==
"short")) {
99 toplevel.add(specOptions);
106 boost::program_options::options_description& options)
108 const char*
name = spec.
name.c_str();
111 if constexpr (isSimpleVariant<V>()) {
113 using BoostType =
typename std::conditional<V == VariantType::String, std::string, Type>::type;
114 auto value = boost::program_options::value<BoostType>();
121 options.add_options()(
name,
value, help);
122 }
else if constexpr (isArray<V>() || isArray2D<V>()) {
123 auto value = boost::program_options::value<std::string>();
128 options.add_options()(
name,
value, help);
131 using BoostType =
typename std::conditional<V == VariantType::String, std::string, Type>::type;
132 auto value = boost::program_options::value<BoostType>();
133 options.add_options()(
name,
value, help);