summaryrefslogtreecommitdiff
path: root/src/other_tools/utils/parse_computed_root.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-12-19 11:35:25 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2024-12-20 11:36:17 +0100
commit5e2fe74d3e5798ef73b3eef98d84577d881aad9a (patch)
tree76e0531c07d63cc0a1a55c70d524f6ae8e8bf522 /src/other_tools/utils/parse_computed_root.cpp
parent1e9080be33a18dd672d2cb035a18ba1d1aba0fb6 (diff)
downloadjustbuild-5e2fe74d3e5798ef73b3eef98d84577d881aad9a.tar.gz
TreeStructure: Unify parsing of precomputed roots in just-mr
Diffstat (limited to 'src/other_tools/utils/parse_computed_root.cpp')
-rw-r--r--src/other_tools/utils/parse_computed_root.cpp86
1 files changed, 0 insertions, 86 deletions
diff --git a/src/other_tools/utils/parse_computed_root.cpp b/src/other_tools/utils/parse_computed_root.cpp
deleted file mode 100644
index 540f43c0..00000000
--- a/src/other_tools/utils/parse_computed_root.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "src/other_tools/utils/parse_computed_root.hpp"
-
-#include "fmt/core.h"
-#include "nlohmann/json.hpp"
-#include "src/buildtool/build_engine/expression/expression.hpp"
-
-auto ComputedRootParser::Create(
- gsl::not_null<ExpressionPtr const*> const& repository) noexcept
- -> std::optional<ComputedRootParser> {
- if (not repository->IsNotNull() or not(*repository)->IsMap()) {
- return std::nullopt;
- }
- try {
- auto const type = (*repository)->Get("type", Expression::none_t{});
- if (type.IsNotNull() and type->IsString() and
- type->String() == "computed") {
- return ComputedRootParser{repository};
- }
- } catch (...) {
- return std::nullopt;
- }
- return std::nullopt;
-}
-
-auto ComputedRootParser::GetTargetRepository() const
- -> expected<std::string, std::string> {
- auto const repo = repository_->Get("repo", Expression::none_t{});
- if (not repo.IsNotNull()) {
- return unexpected<std::string>{"Mandatory key \"repo\" is missing"};
- }
- if (not repo->IsString()) {
- return unexpected{fmt::format("Unsupported value {} for key \"repo\".",
- repo->ToString())};
- }
- return repo->String();
-}
-
-auto ComputedRootParser::GetResult() const
- -> expected<ComputedRoot, std::string> {
- auto const repo = GetTargetRepository();
- if (not repo) {
- return unexpected{repo.error()};
- }
-
- auto const target = repository_->Get("target", Expression::none_t{});
- if (not target.IsNotNull()) {
- return unexpected<std::string>{"Mandatory key \"target\" is missing"};
- }
- if (not target->IsList() or target->List().size() != 2) {
- return unexpected{fmt::format("Unsupported value {} for key \"target\"",
- target->ToString())};
- }
- auto const& target_list = target->List();
- auto const target_module = target_list.at(0);
- auto const target_name = target_list.at(1);
- if (not target_module->IsString() or not target_name->IsString()) {
- return unexpected{fmt::format(
- "Unsupported format {} for key \"target\"", target->ToString())};
- }
-
- auto const config = repository_->Get("config", Expression::none_t{});
- if (config.IsNotNull() and not config->IsMap()) {
- return unexpected{fmt::format("Unsupported value {} for key \"config\"",
- config->ToString())};
- }
- return ComputedRoot{.repository = *repo,
- .target_module = target_module->String(),
- .target_name = target_module->String(),
- .config = config.IsNotNull()
- ? config->ToJson()
- : nlohmann::json::object()};
-}