diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-09-10 15:19:47 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-09-11 14:52:07 +0200 |
commit | b81206fe9885ed9f6fb0426d91ac607f7d8393c3 (patch) | |
tree | b750095e20b003a9490b9e55150727a61c0f12b5 | |
parent | f0884e0cb131d50c02b322090a8b065fdde86e55 (diff) | |
download | justbuild-b81206fe9885ed9f6fb0426d91ac607f7d8393c3.tar.gz |
Use ArtifactDigestFactory in BlobTree
...to create ArtifactDigests.
-rw-r--r-- | src/buildtool/execution_api/common/TARGETS | 3 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/blob_tree.cpp | 22 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index 5965838b..4c9cfa81 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -95,6 +95,9 @@ [ ["src/buildtool/file_system", "git_repo"] , ["src/buildtool/file_system", "object_type"] , ["src/utils/cpp", "hex_string"] + , ["src/buildtool/common", "common"] + , ["src/buildtool/common", "artifact_digest_factory"] + , ["src/buildtool/crypto", "hash_function"] ] , "stage": ["src", "buildtool", "execution_api", "common"] } diff --git a/src/buildtool/execution_api/common/blob_tree.cpp b/src/buildtool/execution_api/common/blob_tree.cpp index 6e04d55f..daf2a87c 100644 --- a/src/buildtool/execution_api/common/blob_tree.cpp +++ b/src/buildtool/execution_api/common/blob_tree.cpp @@ -18,6 +18,9 @@ #include <variant> #include "src/buildtool/common/artifact.hpp" +#include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/common/artifact_digest_factory.hpp" +#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/file_system/git_repo.hpp" #include "src/buildtool/file_system/object_type.hpp" #include "src/utils/cpp/hex_string.hpp" @@ -61,13 +64,18 @@ auto BlobTree::FromDirectoryTree(DirectoryTreePtr const& tree, } } if (auto git_tree = GitRepo::CreateShallowTree(entries)) { - ArtifactDigest digest{ToHexString(git_tree->first), - git_tree->second.size(), - /*is_tree=*/true}; - return std::make_shared<BlobTree>(ArtifactBlob{std::move(digest), - git_tree->second, - /*is_exec=*/false}, - nodes); + auto digest = + ArtifactDigestFactory::Create(HashFunction::Type::GitSHA1, + ToHexString(git_tree->first), + git_tree->second.size(), + /*is_tree=*/true); + if (digest) { + return std::make_shared<BlobTree>( + ArtifactBlob{*std::move(digest), + git_tree->second, + /*is_exec=*/false}, + nodes); + } } } catch (...) { return std::nullopt; |