blob: d54c8b61f6fe7591aa30406f8520de7c70aab2cf [file] [log] [blame]
Alexei Strots1bf05be2023-04-21 11:07:37 -07001#include "aos/events/logging/file_operations.h"
2
Stephan Pleines5ecc8f12024-05-31 20:35:21 -07003#include <algorithm>
4#include <ostream>
5
Alexei Strots1bf05be2023-04-21 11:07:37 -07006#include "absl/strings/match.h"
7#include "glog/logging.h"
8
9namespace aos::logger::internal {
10
11bool IsValidFilename(std::string_view filename) {
12 return absl::EndsWith(filename, ".bfbs") ||
13 absl::EndsWith(filename, ".bfbs.xz") ||
14 absl::EndsWith(filename, ".bfbs.sz");
15}
16
Austin Schuh95460cc2023-06-26 11:53:10 -070017void LocalFileOperations::FindLogs(std::vector<File> *files) {
18 auto MaybeAddFile = [&files](std::string_view filename, size_t size) {
Alexei Strots1bf05be2023-04-21 11:07:37 -070019 if (!IsValidFilename(filename)) {
20 VLOG(1) << "Ignoring " << filename << " with invalid extension.";
21 } else {
22 VLOG(1) << "Found log " << filename;
Austin Schuh95460cc2023-06-26 11:53:10 -070023 files->emplace_back(File{
24 .name = std::string(filename),
25 .size = size,
26 });
Alexei Strots1bf05be2023-04-21 11:07:37 -070027 }
28 };
29 if (std::filesystem::is_directory(filename_)) {
30 VLOG(1) << "Searching in " << filename_;
31 for (const auto &file :
32 std::filesystem::recursive_directory_iterator(filename_)) {
33 if (!file.is_regular_file()) {
34 VLOG(1) << file << " is not file.";
35 continue;
36 }
Austin Schuh95460cc2023-06-26 11:53:10 -070037 MaybeAddFile(file.path().string(), file.file_size());
Alexei Strots1bf05be2023-04-21 11:07:37 -070038 }
39 } else {
Austin Schuh95460cc2023-06-26 11:53:10 -070040 MaybeAddFile(filename_, std::filesystem::file_size(filename_));
Alexei Strots1bf05be2023-04-21 11:07:37 -070041 }
42}
43
44} // namespace aos::logger::internal