From ee56ad123c7d6eeec98c586df1976dfb6a624586 Mon Sep 17 00:00:00 2001 From: Sascha Roloff Date: Fri, 8 Jul 2022 10:13:29 +0200 Subject: Git tree can return its raw string data --- src/buildtool/file_system/git_tree.cpp | 8 ++++++++ src/buildtool/file_system/git_tree.hpp | 2 ++ 2 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/buildtool/file_system/git_tree.cpp b/src/buildtool/file_system/git_tree.cpp index 30c98261..d7a33f39 100644 --- a/src/buildtool/file_system/git_tree.cpp +++ b/src/buildtool/file_system/git_tree.cpp @@ -85,6 +85,10 @@ auto GitTree::Size() const noexcept -> std::optional { return std::nullopt; } +auto GitTree::RawData() const noexcept -> std::optional { + return cas_->ReadObject(raw_id_); +} + auto GitTreeEntry::Blob() const noexcept -> std::optional { if (not IsBlob()) { return std::nullopt; @@ -109,3 +113,7 @@ auto GitTreeEntry::Size() const noexcept -> std::optional { } return std::nullopt; } + +auto GitTreeEntry::RawData() const noexcept -> std::optional { + return cas_->ReadObject(raw_id_); +} diff --git a/src/buildtool/file_system/git_tree.hpp b/src/buildtool/file_system/git_tree.hpp index 25218634..fa4f83d6 100644 --- a/src/buildtool/file_system/git_tree.hpp +++ b/src/buildtool/file_system/git_tree.hpp @@ -48,6 +48,7 @@ class GitTree { [[nodiscard]] auto Hash() const noexcept { return ToHexString(raw_id_); } [[nodiscard]] auto RawHash() const noexcept { return raw_id_; } [[nodiscard]] auto Size() const noexcept -> std::optional; + [[nodiscard]] auto RawData() const noexcept -> std::optional; private: gsl::not_null cas_; @@ -101,6 +102,7 @@ class GitTreeEntry { // Use with care. Implementation might read entire object to obtain // size. Consider using Blob()->size() instead. [[nodiscard]] auto Size() const noexcept -> std::optional; + [[nodiscard]] auto RawData() const noexcept -> std::optional; private: gsl::not_null cas_; -- cgit v1.2.3