Permalink
Browse files

applyOverrides: add messages after overrides

  • Loading branch information...
taiyu-len authored and pbeckingham committed Nov 15, 2018
1 parent 306c628 commit 8514071f19c114c26378a7f3a0fc639a26157fbb
Showing with 28 additions and 29 deletions.
  1. +28 −29 src/CLI2.cpp
@@ -272,36 +272,35 @@ void CLI2::getDataLocation (int argc, const char** argv, Path& data)
// Static method.
void CLI2::applyOverrides (int argc, const char** argv)
{
for (int i = 0; i < argc; ++i)
auto& context = Context::getContext ();
auto last = std::find (argv, argv + argc, std::string ("--"));
auto is_override = [] (const std::string& s)
{

// Don't process any arguments after a '--'
std::string raw = argv[i];
if (raw == "--")
break;

// Overrides always start with 'rc.'
if (raw.length () > 3 &&
raw.substr (0, 3) == "rc.")
{

// Our separator can either be '=' or ':', so try and find both.
auto sep = raw.find ('=', 3);
if (sep == std::string::npos)
sep = raw.find (':', 3);

// Process our override if well-formed
if (sep != std::string::npos)
{
std::string name = raw.substr (3, sep - 3);
std::string value = raw.substr (sep + 1);
Context::getContext ().config.set (name, value);

if (Context::getContext ().verbose("override"))
Context::getContext ().footnote (format ("Configuration override rc.{1}:{2}", name, value));
}
}
}
return s.compare (0, 3, "rc.") == 0;
};
auto get_sep = [&] (const std::string& s)
{
if (is_override (s))
return s.find_first_of (":=", 3);
return std::string::npos;
};
auto override_settings = [&] (std::string raw)
{
auto sep = get_sep (raw);
if (sep == std::string::npos)
return;
std::string name = raw.substr (3, sep - 3);
std::string value = raw.substr (sep + 1);
context.config.set (name, value);
};
auto display_overrides = [&] (std::string raw)
{
if (is_override (raw))
context.footnote (format ("Configuration override {1}", raw));
};
std::for_each (argv, last, override_settings);
if (context.verbose ("override"))
std::for_each (argv, last, display_overrides);
}

////////////////////////////////////////////////////////////////////////////////

0 comments on commit 8514071

Please sign in to comment.