From 19c8f8ac038d77d9f97629504d930d85471e47bb Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Mon, 24 Mar 2025 11:34:43 +0100 Subject: ArtifactDescription: support tree overlays ... that, like trees, are given by their identifier. --- src/buildtool/common/artifact_description.hpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/buildtool/common/artifact_description.hpp') diff --git a/src/buildtool/common/artifact_description.hpp b/src/buildtool/common/artifact_description.hpp index 6a4b3b9e..0f600846 100644 --- a/src/buildtool/common/artifact_description.hpp +++ b/src/buildtool/common/artifact_description.hpp @@ -35,9 +35,15 @@ class ArtifactDescription final { using Known = std::tuple>; using Action = std::pair; - using Tree = std::string; public: + struct Tree { + std::string tree; + }; + struct TreeOverlay { + std::string tree_overlay; + }; + [[nodiscard]] static auto CreateLocal(std::filesystem::path path, std::string repository) noexcept -> ArtifactDescription; @@ -55,6 +61,9 @@ class ArtifactDescription final { [[nodiscard]] static auto CreateTree(std::string tree_id) noexcept -> ArtifactDescription; + [[nodiscard]] static auto CreateTreeOverlay( + std::string tree_overlay_id) noexcept -> ArtifactDescription; + [[nodiscard]] auto Id() const& noexcept -> ArtifactIdentifier const& { return id_; } @@ -70,6 +79,10 @@ class ArtifactDescription final { return std::holds_alternative(data_); } + [[nodiscard]] auto IsTreeOverlay() const noexcept -> bool { + return std::holds_alternative(data_); + } + [[nodiscard]] static auto FromJson(HashFunction::Type hash_type, nlohmann::json const& json) noexcept -> std::optional; @@ -91,7 +104,7 @@ class ArtifactDescription final { } private: - std::variant data_; + std::variant data_; ArtifactIdentifier id_; template -- cgit v1.2.3