diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-12-16 17:59:07 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-12-19 16:37:59 +0100 |
commit | bd606d1355afe1276675ac1c0077d44bb484b363 (patch) | |
tree | 0d282e083b06e722f6dd14c414fbea4788bd0686 /src/buildtool/common/repository_config.cpp | |
parent | d4955ca35cf160d32a68d262904cf2806e3a5910 (diff) | |
download | justbuild-bd606d1355afe1276675ac1c0077d44bb484b363.tar.gz |
Support substitution of precomputed roots in RepositoryConfig
Diffstat (limited to 'src/buildtool/common/repository_config.cpp')
-rw-r--r-- | src/buildtool/common/repository_config.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/buildtool/common/repository_config.cpp b/src/buildtool/common/repository_config.cpp index 933d48b2..9561f10b 100644 --- a/src/buildtool/common/repository_config.cpp +++ b/src/buildtool/common/repository_config.cpp @@ -14,6 +14,8 @@ #include "src/buildtool/common/repository_config.hpp" +#include <initializer_list> + #include "src/utils/automata/dfa_minimizer.hpp" auto RepositoryConfig::RepositoryInfo::BaseContentDescription() const @@ -151,6 +153,26 @@ auto RepositoryConfig::AddToGraphAndGetId( return std::nullopt; } +void RepositoryConfig::SetPrecomputedRoot(PrecomputedRoot const& root, + FileRoot const& value) { + for (auto const& [name, desc] : repos_) { + auto new_info = desc.info; + bool changed = false; + for (gsl::not_null<FileRoot*> candidate : {&new_info.workspace_root, + &new_info.target_root, + &new_info.rule_root, + &new_info.expression_root}) { + if (candidate->GetPrecomputedDescription() == root) { + *candidate = value; + changed = true; + } + } + if (changed) { + SetInfo(name, std::move(new_info)); + } + } +} + void RepositoryConfig::SetComputedRoot(FileRoot::ComputedRoot const& root, FileRoot const& value) { for (auto const& [name, desc] : repos_) { |