diff options
Diffstat (limited to 'src/buildtool/execution_api/local')
-rw-r--r-- | src/buildtool/execution_api/local/TARGETS | 1 | ||||
-rw-r--r-- | src/buildtool/execution_api/local/local_api.hpp | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/local/TARGETS b/src/buildtool/execution_api/local/TARGETS index b9e056b8..1ea94d69 100644 --- a/src/buildtool/execution_api/local/TARGETS +++ b/src/buildtool/execution_api/local/TARGETS @@ -43,6 +43,7 @@ , "config" , ["src/buildtool/common", "common"] , ["src/buildtool/common", "bazel_types"] + , ["src/buildtool/file_system", "file_system_manager"] ] } } diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index d699ad4f..e0de1598 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -31,6 +31,7 @@ #include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_api/git/git_api.hpp" #include "src/buildtool/execution_api/local/local_action.hpp" +#include "src/buildtool/file_system/file_system_manager.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/buildtool/storage/storage.hpp" @@ -237,6 +238,27 @@ class LocalApi final : public IExecutionApi { return api->Upload(container, /*skip_find_missing=*/true); } + [[nodiscard]] auto RetrieveToMemory( + Artifact::ObjectInfo const& artifact_info) + -> std::optional<std::string> override { + std::optional<std::filesystem::path> location{}; + if (IsTreeObject(artifact_info.type)) { + location = storage_->CAS().TreePath(artifact_info.digest); + } + else { + location = storage_->CAS().BlobPath( + artifact_info.digest, IsExecutableObject(artifact_info.type)); + } + if (not location) { + return std::nullopt; + } + auto const content = FileSystemManager::ReadFile(*location); + if (not content) { + return std::nullopt; + } + return *content; + } + [[nodiscard]] auto Upload(BlobContainer const& blobs, bool /*skip_find_missing*/) noexcept -> bool final { |