diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/other_tools/utils/parse_precomputed_root.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/other_tools/utils/parse_precomputed_root.cpp b/src/other_tools/utils/parse_precomputed_root.cpp index 0b176450..a27c7989 100644 --- a/src/other_tools/utils/parse_precomputed_root.cpp +++ b/src/other_tools/utils/parse_precomputed_root.cpp @@ -60,6 +60,15 @@ namespace { ? config->ToJson() : nlohmann::json::object()}; } + +[[nodiscard]] auto ParseTreeStructureRoot(ExpressionPtr const& repository) + -> expected<TreeStructureRoot, std::string> { + auto const repo = repository->Get("repo", Expression::none_t{}); + if (not repo.IsNotNull()) { + return unexpected<std::string>{"Mandatory key \"repo\" is missing"}; + } + return TreeStructureRoot{.repository = repo->String()}; +} } // namespace auto ParsePrecomputedRoot(ExpressionPtr const& repository) @@ -85,6 +94,13 @@ auto ParsePrecomputedRoot(ExpressionPtr const& repository) } return PrecomputedRoot{*std::move(computed)}; } + if (type_marker == TreeStructureRoot::kMarker) { + auto tree_structure = ParseTreeStructureRoot(repository); + if (not tree_structure) { + return unexpected{std::move(tree_structure).error()}; + } + return PrecomputedRoot{*std::move(tree_structure)}; + } return unexpected{ fmt::format("Unknown type {} of precomputed repository", type_marker)}; } |