@@ -21,73 +21,88 @@ EnvironmentOptions* PerIsolateOptions::get_per_env_options() {
2121 return per_env.get ();
2222}
2323
24+ namespace options_parser {
25+
2426template <typename Options>
2527void OptionsParser<Options>::AddOption(const std::string& name,
28+ const std::string& help_text,
2629 bool Options::* field,
2730 OptionEnvvarSettings env_setting) {
28- options_.emplace (name, OptionInfo {
29- kBoolean ,
30- std::make_shared<SimpleOptionField<bool >>(field),
31- env_setting
32- });
31+ options_.emplace (name,
32+ OptionInfo{ kBoolean ,
33+ std::make_shared<SimpleOptionField<bool >>(field),
34+ env_setting,
35+ help_text });
3336}
3437
3538template <typename Options>
3639void OptionsParser<Options>::AddOption(const std::string& name,
40+ const std::string& help_text,
3741 int64_t Options::* field,
3842 OptionEnvvarSettings env_setting) {
39- options_.emplace (name, OptionInfo {
40- kInteger ,
41- std::make_shared<SimpleOptionField<int64_t >>(field),
42- env_setting
43- });
43+ options_.emplace (
44+ name,
45+ OptionInfo{kInteger ,
46+ std::make_shared<SimpleOptionField<int64_t >>(field),
47+ env_setting,
48+ help_text});
4449}
4550
4651template <typename Options>
4752void OptionsParser<Options>::AddOption(const std::string& name,
53+ const std::string& help_text,
4854 std::string Options::* field,
4955 OptionEnvvarSettings env_setting) {
50- options_.emplace (name, OptionInfo {
51- kString ,
52- std::make_shared<SimpleOptionField<std::string>>(field),
53- env_setting
54- });
56+ options_.emplace (
57+ name,
58+ OptionInfo{kString ,
59+ std::make_shared<SimpleOptionField<std::string>>(field),
60+ env_setting,
61+ help_text});
5562}
5663
5764template <typename Options>
5865void OptionsParser<Options>::AddOption(
5966 const std::string& name,
67+ const std::string& help_text,
6068 std::vector<std::string> Options::* field,
6169 OptionEnvvarSettings env_setting) {
6270 options_.emplace (name, OptionInfo {
6371 kStringList ,
6472 std::make_shared<SimpleOptionField<std::vector<std::string>>>(field),
65- env_setting
73+ env_setting,
74+ help_text
6675 });
6776}
6877
6978template <typename Options>
7079void OptionsParser<Options>::AddOption(const std::string& name,
80+ const std::string& help_text,
7181 HostPort Options::* field,
7282 OptionEnvvarSettings env_setting) {
73- options_.emplace (name, OptionInfo {
74- kHostPort ,
75- std::make_shared<SimpleOptionField<HostPort>>(field),
76- env_setting
77- });
83+ options_.emplace (
84+ name,
85+ OptionInfo{kHostPort ,
86+ std::make_shared<SimpleOptionField<HostPort>>(field),
87+ env_setting,
88+ help_text});
7889}
7990
8091template <typename Options>
81- void OptionsParser<Options>::AddOption(const std::string& name, NoOp no_op_tag,
92+ void OptionsParser<Options>::AddOption(const std::string& name,
93+ const std::string& help_text,
94+ NoOp no_op_tag,
8295 OptionEnvvarSettings env_setting) {
83- options_.emplace (name, OptionInfo { kNoOp , nullptr , env_setting });
96+ options_.emplace (name, OptionInfo{ kNoOp , nullptr , env_setting, help_text });
8497}
8598
8699template <typename Options>
87100void OptionsParser<Options>::AddOption(const std::string& name,
101+ const std::string& help_text,
88102 V8Option v8_option_tag,
89103 OptionEnvvarSettings env_setting) {
90- options_.emplace (name, OptionInfo { kV8Option , nullptr , env_setting });
104+ options_.emplace (name,
105+ OptionInfo{kV8Option , nullptr , env_setting, help_text});
91106}
92107
93108template <typename Options>
@@ -161,11 +176,10 @@ template <typename ChildOptions>
161176auto OptionsParser<Options>::Convert(
162177 typename OptionsParser<ChildOptions>::OptionInfo original,
163178 ChildOptions* (Options::* get_child)()) {
164- return OptionInfo {
165- original.type ,
166- Convert (original.field , get_child),
167- original.env_setting
168- };
179+ return OptionInfo{original.type ,
180+ Convert (original.field , get_child),
181+ original.env_setting ,
182+ original.help_text };
169183}
170184
171185template <typename Options>
@@ -385,24 +399,21 @@ void OptionsParser<Options>::Parse(
385399
386400 switch (info.type ) {
387401 case kBoolean :
388- *std::static_pointer_cast<OptionField<bool >>(info.field )
389- ->Lookup (options) = true ;
402+ *Lookup<bool >(info.field , options) = true ;
390403 break ;
391404 case kInteger :
392- *std::static_pointer_cast<OptionField<int64_t >>(info.field )
393- ->Lookup (options) = std::atoll (value.c_str ());
405+ *Lookup<int64_t >(info.field , options) = std::atoll (value.c_str ());
394406 break ;
395407 case kString :
396- *std::static_pointer_cast<OptionField<std::string>>(info.field )
397- ->Lookup (options) = value;
408+ *Lookup<std::string>(info.field , options) = value;
398409 break ;
399410 case kStringList :
400- std::static_pointer_cast<OptionField< std::vector<std::string>>>(
401- info. field )-> Lookup (options) ->emplace_back (std::move (value));
411+ Lookup< std::vector<std::string>>(info. field , options)
412+ ->emplace_back (std::move (value));
402413 break ;
403414 case kHostPort :
404- std::static_pointer_cast<OptionField< HostPort>> (info.field )
405- ->Lookup (options)-> Update (SplitHostPort (value, error));
415+ Lookup< HostPort>(info.field , options )
416+ ->Update (SplitHostPort (value, error));
406417 break ;
407418 case kNoOp :
408419 break ;
@@ -415,6 +426,7 @@ void OptionsParser<Options>::Parse(
415426 }
416427}
417428
429+ } // namespace options_parser
418430} // namespace node
419431
420432#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
0 commit comments