diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-28 16:59:32 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-03-24 09:33:46 +0100 |
commit | 538c7f3e180a5f121c6819ad5d9b14f843512f60 (patch) | |
tree | eb496a15d8c9f29e443ab107d35ff0a9990ba4e0 /src/buildtool/common/artifact_blob.cpp | |
parent | 4fbbb6977d73af9958e38bb07e096dee773c9e61 (diff) | |
download | justbuild-538c7f3e180a5f121c6819ad5d9b14f843512f60.tar.gz |
ArtifactBlob: Return file path
Diffstat (limited to 'src/buildtool/common/artifact_blob.cpp')
-rw-r--r-- | src/buildtool/common/artifact_blob.cpp | 16 |
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 { |