Simplify log_edit's usage
Passing in both the log file path and the header all the time was
redundant and error prone. Automation to the win!
Change-Id: Iceac4e384c99e883edbb478c295999e616301e10
diff --git a/aos/events/logging/log_edit.cc b/aos/events/logging/log_edit.cc
index 9961bd8..02a1402 100644
--- a/aos/events/logging/log_edit.cc
+++ b/aos/events/logging/log_edit.cc
@@ -15,47 +15,48 @@
"If true, replace the header on the log file with the JSON header.");
DEFINE_string(
header, "",
- "If provided, this is the path to the JSON with the log file header.");
+ "If provided, this is the path to the JSON with the log file header. If "
+ "not provided, _header.json will be appended to --logfile.");
int main(int argc, char **argv) {
gflags::SetUsageMessage(R"(This tool lets us manipulate log files.)");
aos::InitGoogle(&argc, &argv);
- if (!FLAGS_header.empty()) {
- if (FLAGS_replace) {
- const ::std::string header_json =
- aos::util::ReadFileToStringOrDie(FLAGS_header);
- flatbuffers::FlatBufferBuilder fbb;
- fbb.ForceDefaults(true);
- flatbuffers::Offset<aos::logger::LogFileHeader> header =
- aos::JsonToFlatbuffer<aos::logger::LogFileHeader>(header_json, &fbb);
+ std::string header =
+ FLAGS_header.empty() ? (FLAGS_logfile + "_header.json") : FLAGS_header;
- fbb.FinishSizePrefixed(header);
+ if (FLAGS_replace) {
+ const ::std::string header_json = aos::util::ReadFileToStringOrDie(header);
+ flatbuffers::FlatBufferBuilder fbb;
+ fbb.ForceDefaults(true);
+ flatbuffers::Offset<aos::logger::LogFileHeader> header =
+ aos::JsonToFlatbuffer<aos::logger::LogFileHeader>(header_json, &fbb);
- const std::string orig_path = FLAGS_logfile + ".orig";
- PCHECK(rename(FLAGS_logfile.c_str(), orig_path.c_str()) == 0);
+ fbb.FinishSizePrefixed(header);
- aos::logger::SpanReader span_reader(orig_path);
- CHECK(!span_reader.ReadMessage().empty()) << ": Empty header, aborting";
+ const std::string orig_path = FLAGS_logfile + ".orig";
+ PCHECK(rename(FLAGS_logfile.c_str(), orig_path.c_str()) == 0);
- aos::logger::DetachedBufferWriter buffer_writer(
- FLAGS_logfile, std::make_unique<aos::logger::DummyEncoder>());
- buffer_writer.QueueSizedFlatbuffer(&fbb);
+ aos::logger::SpanReader span_reader(orig_path);
+ CHECK(!span_reader.ReadMessage().empty()) << ": Empty header, aborting";
- while (true) {
- absl::Span<const uint8_t> msg_data = span_reader.ReadMessage();
- if (msg_data == absl::Span<const uint8_t>()) {
- break;
- }
+ aos::logger::DetachedBufferWriter buffer_writer(
+ FLAGS_logfile, std::make_unique<aos::logger::DummyEncoder>());
+ buffer_writer.QueueSizedFlatbuffer(&fbb);
- buffer_writer.QueueSpan(msg_data);
+ while (true) {
+ absl::Span<const uint8_t> msg_data = span_reader.ReadMessage();
+ if (msg_data == absl::Span<const uint8_t>()) {
+ break;
}
- } else {
- aos::logger::MessageReader reader(FLAGS_logfile);
- aos::util::WriteStringToFileOrDie(
- FLAGS_header, aos::FlatbufferToJson(reader.log_file_header(),
- {.multi_line = true}));
+
+ buffer_writer.QueueSpan(msg_data);
}
+ } else {
+ aos::logger::MessageReader reader(FLAGS_logfile);
+ aos::util::WriteStringToFileOrDie(
+ header,
+ aos::FlatbufferToJson(reader.log_file_header(), {.multi_line = true}));
}
return 0;