summaryrefslogtreecommitdiff
path: root/src/buildtool/storage/config.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/storage/config.hpp')
-rw-r--r--src/buildtool/storage/config.hpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/buildtool/storage/config.hpp b/src/buildtool/storage/config.hpp
index a5d96e90..ff7c7710 100644
--- a/src/buildtool/storage/config.hpp
+++ b/src/buildtool/storage/config.hpp
@@ -151,6 +151,20 @@ struct StorageConfig final {
class StorageConfig::Builder final {
public:
+ explicit Builder() = default;
+
+ /// \brief Create a configurable builder from an existing config.
+ /// Useful, for example, to make a copy of an existing config and change
+ /// the hash type.
+ [[nodiscard]] static auto Rebuild(StorageConfig const& config) noexcept
+ -> Builder {
+ return Builder{}
+ .SetBuildRoot(config.build_root)
+ .SetNumGenerations(config.num_generations)
+ .SetHashType(config.hash_function.GetType())
+ .SetBackendDescription(config.backend_description);
+ }
+
auto SetBuildRoot(std::filesystem::path value) noexcept -> Builder& {
build_root_ = std::move(value);
return *this;