diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-11-18 15:35:49 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-11-21 11:05:48 +0100 |
commit | 306408dc0b0e182dd78e2170b168e5bbefda7036 (patch) | |
tree | 2552e6764329e1e50dccb08f5ed6e4f7a2c77ac9 /src/buildtool/common/repository_config.cpp | |
parent | f669da058b501b479e8b687f563605287aec944e (diff) | |
download | justbuild-306408dc0b0e182dd78e2170b168e5bbefda7036.tar.gz |
RepositoryConfig: support setting a computed root
Diffstat (limited to 'src/buildtool/common/repository_config.cpp')
-rw-r--r-- | src/buildtool/common/repository_config.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/buildtool/common/repository_config.cpp b/src/buildtool/common/repository_config.cpp index 78f7b8a4..933d48b2 100644 --- a/src/buildtool/common/repository_config.cpp +++ b/src/buildtool/common/repository_config.cpp @@ -150,3 +150,28 @@ auto RepositoryConfig::AddToGraphAndGetId( } return std::nullopt; } + +void RepositoryConfig::SetComputedRoot(FileRoot::ComputedRoot const& root, + FileRoot const& value) { + for (auto const& [name, desc] : repos_) { + auto new_info = desc.info; + bool changed = false; + auto set_root_if_matching = + [&changed, &root, &value](auto* candidate_root) { + auto croot = candidate_root->GetComputedDescription(); + if (croot) { + if (*croot == root) { + *candidate_root = value; + changed = true; + } + } + }; + set_root_if_matching(&new_info.workspace_root); + set_root_if_matching(&new_info.target_root); + set_root_if_matching(&new_info.rule_root); + set_root_if_matching(&new_info.expression_root); + if (changed) { + SetInfo(name, std::move(new_info)); + } + } +} |