Add usage message to event_log_visualizer.
Bug: webrtc:10616
Change-Id: I1623175abc7e60c1a3cf29e3d99fdde0e4140b1f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146208
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28663}
diff --git a/rtc_tools/event_log_visualizer/main.cc b/rtc_tools/event_log_visualizer/main.cc
index 2e6a97b..29e96ce 100644
--- a/rtc_tools/event_log_visualizer/main.cc
+++ b/rtc_tools/event_log_visualizer/main.cc
@@ -21,6 +21,9 @@
#include "absl/algorithm/container.h"
#include "absl/flags/flag.h"
#include "absl/flags/parse.h"
+#include "absl/flags/usage.h"
+#include "absl/flags/usage_config.h"
+#include "absl/strings/match.h"
#include "logging/rtc_event_log/rtc_event_log.h"
#include "logging/rtc_event_log/rtc_event_log_parser.h"
#include "modules/audio_coding/neteq/include/neteq.h"
@@ -37,7 +40,8 @@
ABSL_FLAG(std::string,
plot,
"default",
- "A comma separated list of plot names. See below for valid options.");
+ "A comma separated list of plot names. See --list_plots for valid "
+ "options.");
ABSL_FLAG(
std::string,
@@ -92,6 +96,11 @@
false,
"Output charts as protobuf instead of python code.");
+ABSL_FLAG(bool,
+ list_plots,
+ false,
+ "List of registered plots (for use with the --plot flag)");
+
using webrtc::Plot;
namespace {
@@ -172,25 +181,23 @@
std::vector<PlotDeclaration> plots_;
};
+
+bool ContainsHelppackageFlags(absl::string_view filename) {
+ return absl::EndsWith(filename, "main.cc");
+}
+
} // namespace
int main(int argc, char* argv[]) {
- std::string program_name = argv[0];
- std::string usage =
+ absl::SetProgramUsageMessage(
"A tool for visualizing WebRTC event logs.\n"
- "Example usage:\n" +
- program_name + " <logfile> | python\n" + "Run " + program_name +
- " --help for a list of command line options\n";
-
+ "Example usage:\n"
+ "./event_log_visualizer <logfile> | python\n");
+ absl::FlagsUsageConfig config;
+ config.contains_help_flags = &ContainsHelppackageFlags;
+ absl::SetFlagsUsageConfig(config);
std::vector<char*> args = absl::ParseCommandLine(argc, argv);
- // TODO(bugs.webrtc.org/10616): Add program usage message when Abseil
- // flags supports it.
- if (args.size() != 2) {
- std::cerr << "TODO(bugs.webrtc.org/10616): Print flag list again when "
- "Abseil supports it.\n";
- }
-
// Flag replacements
std::map<std::string, std::vector<std::string>> flag_aliases = {
{"default",
@@ -529,32 +536,32 @@
}
}
- // if (argc != 2) {
- // // Print usage information.
- // std::cerr << usage;
- // if (FLAG_help) {
- // rtc::FlagList::Print(nullptr, false);
- // std::cerr << "List of registered plots (for use with the --plot flag):"
- // << std::endl;
- // for (const auto& plot : plots) {
- // // TODO(terelius): Also print a help text.
- // std::cerr << " " << plot.label << std::endl;
- // }
- // // The following flag doesn't fit the model used for the other plots.
- // std::cerr << "simulated_neteq_jitter_buffer_delay" << std::endl;
- // std::cerr << "List of plot aliases (for use with the --plot flag):"
- // << std::endl;
- // std::cerr << " all = every registered plot" << std::endl;
- // for (const auto& alias : flag_aliases) {
- // std::cerr << " " << alias.first << " = ";
- // for (const auto& replacement : alias.second) {
- // std::cerr << replacement << ",";
- // }
- // std::cerr << std::endl;
- // }
- // }
- // return 0;
- // }
+ if (absl::GetFlag(FLAGS_list_plots)) {
+ std::cerr << "List of registered plots (for use with the --plot flag):"
+ << std::endl;
+ for (const auto& plot : plots) {
+ // TODO(terelius): Also print a help text.
+ std::cerr << " " << plot.label << std::endl;
+ }
+ // The following flag doesn't fit the model used for the other plots.
+ std::cerr << "simulated_neteq_jitter_buffer_delay" << std::endl;
+ std::cerr << "List of plot aliases (for use with the --plot flag):"
+ << std::endl;
+ std::cerr << " all = every registered plot" << std::endl;
+ for (const auto& alias : flag_aliases) {
+ std::cerr << " " << alias.first << " = ";
+ for (const auto& replacement : alias.second) {
+ std::cerr << replacement << ",";
+ }
+ std::cerr << std::endl;
+ }
+ return 0;
+ }
+ if (args.size() != 2) {
+ // Print usage information.
+ std::cerr << absl::ProgramUsageMessage();
+ return 1;
+ }
for (const auto& plot : plots) {
if (plot.enabled) {