You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mp...@apache.org on 2015/09/19 16:39:48 UTC
mesos git commit: Made command-line flags take precedence over
environment variables.
Repository: mesos
Updated Branches:
refs/heads/master ed7de0410 -> 704eee5ad
Made command-line flags take precedence over environment variables.
Review: https://reviews.apache.org/r/38259
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/704eee5a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/704eee5a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/704eee5a
Branch: refs/heads/master
Commit: 704eee5ad98831ff6f4a47d3044b0b092908a497
Parents: ed7de04
Author: Klaus Ma <kl...@cguru.net>
Authored: Sat Sep 19 04:50:23 2015 -0400
Committer: Michael Park <mp...@apache.org>
Committed: Sat Sep 19 04:55:20 2015 -0400
----------------------------------------------------------------------
.../stout/include/stout/flags/flags.hpp | 30 ++++++++++++--------
.../3rdparty/stout/tests/flags_tests.cpp | 9 +++---
2 files changed, 23 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/704eee5a/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp
index 9da213f..b91318c 100644
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp
+++ b/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp
@@ -555,13 +555,14 @@ inline Try<Nothing> FlagsBase::load(
bool unknowns,
bool duplicates)
{
- std::map<std::string, Option<std::string>> values;
+ std::map<std::string, Option<std::string>> envValues;
+ std::map<std::string, Option<std::string>> cmdValues;
// Grab the program name from argv[0].
programName_ = argc > 0 ? Path(argv[0]).basename() : "";
if (prefix.isSome()) {
- values = extract(prefix.get());
+ envValues = extract(prefix.get());
}
// Read flags from the command line.
@@ -594,16 +595,18 @@ inline Try<Nothing> FlagsBase::load(
name = strings::lower(name);
if (!duplicates) {
- if (values.count(name) > 0 ||
- (name.find("no-") == 0 && values.count(name.substr(3)) > 0)) {
+ if (cmdValues.count(name) > 0 ||
+ (name.find("no-") == 0 && cmdValues.count(name.substr(3)) > 0)) {
return Error("Duplicate flag '" + name + "' on command line");
}
}
- values[name] = value;
+ cmdValues[name] = value;
}
- return load(values, unknowns);
+ cmdValues.insert(envValues.begin(), envValues.end());
+
+ return load(cmdValues, unknowns);
}
@@ -614,10 +617,11 @@ inline Try<Nothing> FlagsBase::load(
bool unknowns,
bool duplicates)
{
- std::map<std::string, Option<std::string>> values;
+ std::map<std::string, Option<std::string>> envValues;
+ std::map<std::string, Option<std::string>> cmdValues;
if (prefix.isSome()) {
- values = extract(prefix.get());
+ envValues = extract(prefix.get());
}
// Grab the program name from argv, without removing it.
@@ -661,16 +665,18 @@ inline Try<Nothing> FlagsBase::load(
name = strings::lower(name);
if (!duplicates) {
- if (values.count(name) > 0 ||
- (name.find("no-") == 0 && values.count(name.substr(3)) > 0)) {
+ if (cmdValues.count(name) > 0 ||
+ (name.find("no-") == 0 && cmdValues.count(name.substr(3)) > 0)) {
return Error("Duplicate flag '" + name + "' on command line");
}
}
- values[name] = value;
+ cmdValues[name] = value;
}
- Try<Nothing> result = load(values, unknowns);
+ cmdValues.insert(envValues.begin(), envValues.end());
+
+ Try<Nothing> result = load(cmdValues, unknowns);
// Update 'argc' and 'argv' if we successfully loaded the flags.
if (!result.isError()) {
http://git-wip-us.apache.org/repos/asf/mesos/blob/704eee5a/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp b/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp
index 43c09f3..0c7e5e3 100644
--- a/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp
+++ b/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp
@@ -403,9 +403,10 @@ TEST(FlagsTest, DuplicatesFromEnvironment)
};
Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv);
- EXPECT_ERROR(load);
+ EXPECT_SOME(load);
- EXPECT_EQ("Duplicate flag 'name1' on command line", load.error());
+ // The environment variables are overwritten by command line flags.
+ EXPECT_EQ(flags.name1, "billy joel");
os::unsetenv("FLAGSTEST_name1");
}
@@ -421,10 +422,10 @@ TEST(FlagsTest, DuplicatesFromCommandLine)
"--name1=ben folds"
};
+ // TODO(klaus1982): Simply checking for the error. Once typed errors are
+ // introduced, capture it within the type system.
Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv);
EXPECT_ERROR(load);
-
- EXPECT_EQ("Duplicate flag 'name1' on command line", load.error());
}