Make client-provided options an rc source
The client provides information about whether the terminal is a tty, and
which width the output should be formatted for. Passing this information
as explicit command-line arguments has the disadvantage that it overrides
any setting in configuration files. While usually there is no one-size-fits-all
value for terminal width, it doesn't make sense either to have an option
where the user cannot set a default. Fix this by providing the client options
as least imported rc-source.
This is a roll-forward of commit 044adedc70de040475443e52eb1a3c692159790e
--
MOS_MIGRATED_REVID=120338148
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc
index 0696b5a..3e2f662 100644
--- a/src/main/cpp/option_processor.cc
+++ b/src/main/cpp/option_processor.cc
@@ -424,6 +424,14 @@
// the command and the arguments. NB: Keep the options added here in sync with
// BlazeCommandDispatcher.INTERNAL_COMMAND_OPTIONS!
void OptionProcessor::AddRcfileArgsAndOptions(bool batch, const string& cwd) {
+ // Provide terminal options as coming from the least important rc file.
+ command_arguments_.push_back("--rc_source=client");
+ command_arguments_.push_back("--default_override=0:common=--isatty=" +
+ ToString(IsStandardTerminal()));
+ command_arguments_.push_back(
+ "--default_override=0:common=--terminal_columns=" +
+ ToString(GetTerminalColumns()));
+
// Push the options mapping .blazerc numbers to filenames.
for (int i_blazerc = 0; i_blazerc < blazercs_.size(); i_blazerc++) {
const RcFile* blazerc = blazercs_[i_blazerc];
@@ -442,17 +450,11 @@
for (int ii = 0; ii < it->second.size(); ii++) {
const RcOption& rcoption = it->second[ii];
command_arguments_.push_back(
- "--default_override=" + ToString(rcoption.rcfile_index()) + ":"
+ "--default_override=" + ToString(rcoption.rcfile_index() + 1) + ":"
+ it->first + "=" + rcoption.option());
}
}
- // Splice the terminal options.
- command_arguments_.push_back(
- "--isatty=" + ToString(IsStandardTerminal()));
- command_arguments_.push_back(
- "--terminal_columns=" + ToString(GetTerminalColumns()));
-
// Pass the client environment to the server in server mode.
if (batch) {
command_arguments_.push_back("--ignore_client_env");