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");