Adds ability to determine product version without starting a server When `bazel --version` is run with no other args the client short-circuits processing and returns the same info that `version --gnu_format` would return, without the side-effect of starting the server daemon. This makes figuring out the version of an arbitrary binary a much lighter-weight process than it previously was. The command itself is implemented by inspecting the `build-label.txt` file which is derived from the server jar's build label and packed into the dist archive. Right now we rely on `--version` with no other args. In the future it may be sensible to fold this into the option processor - I opted to skip this step for now in interest of getting something functional out without needing to get too deep into all of the flag parsing semantics. When/if we wind up folding --version activation into the option processor it should be backwards compatible with the functionality added in this change. In the archive_processor code, I factored out the whole "run the zip processor" step to simplify things. The only downside to this is the error messages might be slightly different from before, but they shouldn't be terribly far off... PiperOrigin-RevId: 249701614
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc index bef8f5d..a7428e7 100644 --- a/src/main/cpp/option_processor.cc +++ b/src/main/cpp/option_processor.cc
@@ -67,10 +67,13 @@ parse_options_called_(false), system_bazelrc_path_(system_bazelrc_path) {} +std::string OptionProcessor::GetLowercaseProductName() const { + return startup_options_->GetLowercaseProductName(); +} + std::unique_ptr<CommandLine> OptionProcessor::SplitCommandLine( vector<string> args, string* error) const { - const string lowercase_product_name = - startup_options_->GetLowercaseProductName(); + const string lowercase_product_name = GetLowercaseProductName(); if (args.empty()) { blaze_util::StringPrintf(error,