diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-09-03 13:20:22 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-09-09 13:07:13 +0200 |
commit | 4cecbc2873cd4ce464a8bf3b3c529830fcd29d0d (patch) | |
tree | 1061aeb5c73f18331ff0817b30da9cb0f2d5667b /src/buildtool/execution_api/local/local_cas_reader.cpp | |
parent | c04a25e02be349d36d95edb9df2bed390c352a7d (diff) | |
download | justbuild-4cecbc2873cd4ce464a8bf3b3c529830fcd29d0d.tar.gz |
Use ArtifactDigestFactory casts in readers
Diffstat (limited to 'src/buildtool/execution_api/local/local_cas_reader.cpp')
-rw-r--r-- | src/buildtool/execution_api/local/local_cas_reader.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/buildtool/execution_api/local/local_cas_reader.cpp b/src/buildtool/execution_api/local/local_cas_reader.cpp index 3e5ebe7b..2da3bc00 100644 --- a/src/buildtool/execution_api/local/local_cas_reader.cpp +++ b/src/buildtool/execution_api/local/local_cas_reader.cpp @@ -23,6 +23,7 @@ #include <vector> #include "gsl/gsl" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" @@ -52,6 +53,7 @@ auto LocalCasReader::ReadDirectory(ArtifactDigest const& digest) const noexcept auto LocalCasReader::MakeTree(ArtifactDigest const& root) const noexcept -> std::optional<bazel_re::Tree> { + auto const hash_type = cas_.GetHashFunction().GetType(); try { std::unordered_map<ArtifactDigest, bazel_re::Directory> directories; @@ -70,7 +72,12 @@ auto LocalCasReader::MakeTree(ArtifactDigest const& root) const noexcept return std::nullopt; } for (auto const& node : read_dir->directories()) { - to_check.push(ArtifactDigest{node.digest()}); + auto digest = + ArtifactDigestFactory::FromBazel(hash_type, node.digest()); + if (not digest) { + return std::nullopt; + } + to_check.push(*std::move(digest)); } directories.insert_or_assign(std::move(current), *std::move(read_dir)); |