mirror of https://gitee.com/bigwinds/arangodb
allow or disallow overriding options
This commit is contained in:
parent
a0cec69852
commit
1dc877db5d
|
@ -105,9 +105,15 @@ class ProgramOptions {
|
||||||
ProcessingResult& processingResult() { return _processingResult; }
|
ProcessingResult& processingResult() { return _processingResult; }
|
||||||
|
|
||||||
// seal the options
|
// seal the options
|
||||||
// tryin to add an option or a section after sealing will throw an error
|
// trying to add an option or a section after sealing will throw an error
|
||||||
void seal() { _sealed = true; }
|
void seal() { _sealed = true; }
|
||||||
|
|
||||||
|
// allow or disallow overriding already set options
|
||||||
|
bool allowOverride(bool value) {
|
||||||
|
checkIfSealed();
|
||||||
|
_overrideOptions = value;
|
||||||
|
}
|
||||||
|
|
||||||
// set context for error reporting
|
// set context for error reporting
|
||||||
void setContext(std::string const& value) { _context = value; }
|
void setContext(std::string const& value) { _context = value; }
|
||||||
|
|
||||||
|
@ -260,6 +266,11 @@ class ProgramOptions {
|
||||||
|
|
||||||
// sets a value for an option
|
// sets a value for an option
|
||||||
bool setValue(std::string const& name, std::string const& value) {
|
bool setValue(std::string const& name, std::string const& value) {
|
||||||
|
if (!_overrideOptions && _processingResult.touched(name)) {
|
||||||
|
// option already set. don't override it
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
auto parts = Option::splitName(name);
|
auto parts = Option::splitName(name);
|
||||||
auto it = _sections.find(parts.first);
|
auto it = _sections.find(parts.first);
|
||||||
|
|
||||||
|
@ -463,6 +474,8 @@ class ProgramOptions {
|
||||||
ProcessingResult _processingResult;
|
ProcessingResult _processingResult;
|
||||||
// whether or not the program options setup is still mutable
|
// whether or not the program options setup is still mutable
|
||||||
bool _sealed;
|
bool _sealed;
|
||||||
|
// allow or disallow overriding already set options
|
||||||
|
bool _overrideOptions;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue