diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-12-19 11:35:25 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-12-20 11:36:17 +0100 |
commit | 5e2fe74d3e5798ef73b3eef98d84577d881aad9a (patch) | |
tree | 76e0531c07d63cc0a1a55c70d524f6ae8e8bf522 /src/other_tools/repo_map | |
parent | 1e9080be33a18dd672d2cb035a18ba1d1aba0fb6 (diff) | |
download | justbuild-5e2fe74d3e5798ef73b3eef98d84577d881aad9a.tar.gz |
TreeStructure: Unify parsing of precomputed roots in just-mr
Diffstat (limited to 'src/other_tools/repo_map')
-rw-r--r-- | src/other_tools/repo_map/TARGETS | 2 | ||||
-rw-r--r-- | src/other_tools/repo_map/repos_to_setup_map.cpp | 60 |
2 files changed, 28 insertions, 34 deletions
diff --git a/src/other_tools/repo_map/TARGETS b/src/other_tools/repo_map/TARGETS index af80fa2f..f6362327 100644 --- a/src/other_tools/repo_map/TARGETS +++ b/src/other_tools/repo_map/TARGETS @@ -30,8 +30,8 @@ , ["src/other_tools/ops_maps", "content_cas_map"] , ["src/other_tools/ops_maps", "git_tree_fetch_map"] , ["src/other_tools/utils", "parse_archive"] - , ["src/other_tools/utils", "parse_computed_root"] , ["src/other_tools/utils", "parse_git_tree"] + , ["src/other_tools/utils", "parse_precomputed_root"] , ["src/utils/cpp", "expected"] , ["src/utils/cpp", "path"] ] diff --git a/src/other_tools/repo_map/repos_to_setup_map.cpp b/src/other_tools/repo_map/repos_to_setup_map.cpp index 779406b4..4a8498c5 100644 --- a/src/other_tools/repo_map/repos_to_setup_map.cpp +++ b/src/other_tools/repo_map/repos_to_setup_map.cpp @@ -33,8 +33,8 @@ #include "src/other_tools/ops_maps/content_cas_map.hpp" #include "src/other_tools/ops_maps/git_tree_fetch_map.hpp" #include "src/other_tools/utils/parse_archive.hpp" -#include "src/other_tools/utils/parse_computed_root.hpp" #include "src/other_tools/utils/parse_git_tree.hpp" +#include "src/other_tools/utils/parse_precomputed_root.hpp" #include "src/utils/cpp/expected.hpp" #include "src/utils/cpp/path.hpp" @@ -637,45 +637,39 @@ void GitTreeCheckout(ExpressionPtr const& repo_desc, }); } -void ComputedRootCheckout(ExpressionPtr const& repo_desc, - ExpressionPtr&& repos, - std::string const& repo_name, - ReposToSetupMap::SetterPtr const& setter, - ReposToSetupMap::SubCallerPtr const& subcaller, - ReposToSetupMap::LoggerPtr const& logger) { - auto const parser = ComputedRootParser::Create(&repo_desc); - if (not parser) { - (*logger)( - fmt::format("ComputedRootCheckout: Not a computed repository: {}", - nlohmann::json(repo_name).dump()), - /*fatal=*/true); - return; - } - auto result_root = parser->GetResult(); - if (not result_root) { - (*logger)(fmt::format("ComputedRootCheckout: parsing repository {} " - "failed with:\n{}", +void PrecomputedRootCheckout(ExpressionPtr const& repo_desc, + ExpressionPtr&& repos, + std::string const& repo_name, + ReposToSetupMap::SetterPtr const& setter, + ReposToSetupMap::SubCallerPtr const& subcaller, + ReposToSetupMap::LoggerPtr const& logger) { + auto precomputed = ParsePrecomputedRoot(repo_desc); + if (not precomputed) { + (*logger)(fmt::format("Checkout of precomputed root {} failed:\n{}", nlohmann::json(repo_name).dump(), - std::move(result_root).error()), + std::move(precomputed).error()), /*fatal=*/true); return; } - std::string target_repo = result_root->repository; + + std::string target_repo = precomputed->GetReferencedRepository(); (*subcaller)( {std::move(target_repo)}, [setter, repos = std::move(repos), repo_name, - result = *std::move(result_root)](auto const& /*unused*/) { + result = *std::move(precomputed)](auto const& /*unused*/) { nlohmann::json cfg{}; auto& ws_root = cfg["workspace_root"]; SetReposTakeOver(&cfg, repos, repo_name); - ws_root.push_back("computed"); - ws_root.push_back(result.repository); - ws_root.push_back(result.target_module); - ws_root.push_back(result.target_name); - ws_root.push_back(result.config); + if (auto computed = result.AsComputed()) { + ws_root.push_back(ComputedRoot::kMarker); + ws_root.push_back(computed->repository); + ws_root.push_back(computed->target_module); + ws_root.push_back(computed->target_name); + ws_root.push_back(computed->config); + } std::invoke(*setter, std::move(cfg)); }, logger); @@ -867,12 +861,12 @@ auto CreateReposToSetupMap( break; } case CheckoutType::Computed: { - ComputedRootCheckout(*resolved_repo_desc, - std::move(repos), - key, - setter, - subcaller, - wrapped_logger); + PrecomputedRootCheckout(*resolved_repo_desc, + std::move(repos), + key, + setter, + subcaller, + wrapped_logger); break; } } |