diff options
Diffstat (limited to 'src/buildtool/execution_api/local/local_storage.hpp')
-rw-r--r-- | src/buildtool/execution_api/local/local_storage.hpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/buildtool/execution_api/local/local_storage.hpp b/src/buildtool/execution_api/local/local_storage.hpp index 4560a859..4ffe2881 100644 --- a/src/buildtool/execution_api/local/local_storage.hpp +++ b/src/buildtool/execution_api/local/local_storage.hpp @@ -43,6 +43,11 @@ class LocalStorage { : cas_file_.StoreBlobFromBytes(bytes); } + [[nodiscard]] auto StoreTree(std::string const& bytes) const noexcept + -> std::optional<bazel_re::Digest> { + return cas_tree_.StoreBlobFromBytes(bytes); + } + /// \brief Obtain blob path from digest with x-bit. /// NOLINTNEXTLINE(misc-no-recursion) [[nodiscard]] auto BlobPath(bazel_re::Digest const& digest, @@ -53,6 +58,11 @@ class LocalStorage { return path ? path : TrySyncBlob(digest, is_executable); } + [[nodiscard]] auto TreePath(bazel_re::Digest const& digest) const noexcept + -> std::optional<std::filesystem::path> { + return cas_tree_.BlobPath(digest); + } + [[nodiscard]] auto StoreActionResult( bazel_re::Digest const& action_id, bazel_re::ActionResult const& result) const noexcept -> bool { @@ -70,13 +80,14 @@ class LocalStorage { -> std::optional<std::pair<std::vector<std::filesystem::path>, std::vector<Artifact::ObjectInfo>>>; - [[nodiscard]] auto DumpToStream( - Artifact::ObjectInfo const& info, - gsl::not_null<FILE*> const& stream) const noexcept -> bool; + [[nodiscard]] auto DumpToStream(Artifact::ObjectInfo const& info, + gsl::not_null<FILE*> const& stream, + bool raw_tree) const noexcept -> bool; private: LocalCAS<ObjectType::File> cas_file_{}; LocalCAS<ObjectType::Executable> cas_exec_{}; + LocalCAS<ObjectType::Tree> cas_tree_{}; LocalAC ac_{&cas_file_}; std::shared_ptr<LocalTreeMap> tree_map_; |