summaryrefslogtreecommitdiff
path: root/src/buildtool/common/artifact_blob.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-02-28 16:59:32 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-03-24 09:33:46 +0100
commit538c7f3e180a5f121c6819ad5d9b14f843512f60 (patch)
treeeb496a15d8c9f29e443ab107d35ff0a9990ba4e0 /src/buildtool/common/artifact_blob.cpp
parent4fbbb6977d73af9958e38bb07e096dee773c9e61 (diff)
downloadjustbuild-538c7f3e180a5f121c6819ad5d9b14f843512f60.tar.gz
ArtifactBlob: Return file path
Diffstat (limited to 'src/buildtool/common/artifact_blob.cpp')
-rw-r--r--src/buildtool/common/artifact_blob.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/buildtool/common/artifact_blob.cpp b/src/buildtool/common/artifact_blob.cpp
index 8c48d34e..c46e54c6 100644
--- a/src/buildtool/common/artifact_blob.cpp
+++ b/src/buildtool/common/artifact_blob.cpp
@@ -15,7 +15,6 @@
#include "src/buildtool/common/artifact_blob.hpp"
#include <exception>
-#include <optional>
#include "fmt/core.h"
#include "src/buildtool/common/artifact_digest_factory.hpp"
@@ -202,6 +201,21 @@ auto ArtifactBlob::ReadIncrementally(std::size_t chunk_size) const& noexcept
}
}
+auto ArtifactBlob::GetFilePath() const& noexcept
+ -> std::optional<std::filesystem::path> {
+ using Result = std::optional<std::filesystem::path>;
+ static constexpr InPlaceVisitor kVisitor{
+ [](InMemory const&) -> Result { return std::nullopt; },
+ [](InFile const& value) -> Result { return value; },
+ [](InTempFile const& value) -> Result { return value->GetPath(); },
+ };
+ try {
+ return std::visit(kVisitor, content_);
+ } catch (...) {
+ return std::nullopt;
+ }
+}
+
namespace std {
auto hash<ArtifactBlob>::operator()(ArtifactBlob const& blob) const noexcept
-> std::size_t {