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/archive_utils.h b/src/main/cpp/archive_utils.h
index 694900b..23aef1f 100644
--- a/src/main/cpp/archive_utils.h
+++ b/src/main/cpp/archive_utils.h
@@ -35,6 +35,11 @@
const std::string &expected_install_md5,
const std::string &output_dir);
+// Retrieves the build label (version string) from `archive_path` into
+// `build_label`.
+void ExtractBuildLabel(const std::string &archive_path,
+ const std::string &product_name,
+ std::string *build_label);
} // namespace blaze
#endif // BAZEL_SRC_MAIN_CPP_ARCHIVE_UTILS_H_