summaryrefslogtreecommitdiff
path: root/src/buildtool/file_system/file_root.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/file_system/file_root.hpp')
-rw-r--r--src/buildtool/file_system/file_root.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/buildtool/file_system/file_root.hpp b/src/buildtool/file_system/file_root.hpp
index 10b04c66..893b028c 100644
--- a/src/buildtool/file_system/file_root.hpp
+++ b/src/buildtool/file_system/file_root.hpp
@@ -421,6 +421,19 @@ class FileRoot {
return std::nullopt;
}
+ [[nodiscard]] auto ReadTree(std::string const& tree_id) const noexcept
+ -> std::optional<GitTree> {
+ if (std::holds_alternative<git_root_t>(root_)) {
+ try {
+ auto const& cas = std::get<git_root_t>(root_).cas;
+ return GitTree::Read(cas, tree_id);
+ } catch (...) {
+ return std::nullopt;
+ }
+ }
+ return std::nullopt;
+ }
+
// Create LOCAL or KNOWN artifact. Does not check existence for LOCAL.
// `file_path` must reference a blob.
[[nodiscard]] auto ToArtifactDescription(