diff options
Diffstat (limited to 'src/buildtool/common/artifact_description.hpp')
-rw-r--r-- | src/buildtool/common/artifact_description.hpp | 17 |
1 files changed, 15 insertions, 2 deletions
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<ArtifactDigest, ObjectType, std::optional<std::string>>; using Action = std::pair<std::string, std::filesystem::path>; - 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<Tree>(data_); } + [[nodiscard]] auto IsTreeOverlay() const noexcept -> bool { + return std::holds_alternative<TreeOverlay>(data_); + } + [[nodiscard]] static auto FromJson(HashFunction::Type hash_type, nlohmann::json const& json) noexcept -> std::optional<ArtifactDescription>; @@ -91,7 +104,7 @@ class ArtifactDescription final { } private: - std::variant<Local, Known, Action, Tree> data_; + std::variant<Local, Known, Action, Tree, TreeOverlay> data_; ArtifactIdentifier id_; template <typename T> |