summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/common/TARGETS3
-rw-r--r--src/buildtool/execution_api/common/blob_tree.cpp22
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;