summaryrefslogtreecommitdiff
path: root/src/other_tools/just_mr/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/other_tools/just_mr/utils.cpp')
-rw-r--r--src/other_tools/just_mr/utils.cpp111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/other_tools/just_mr/utils.cpp b/src/other_tools/just_mr/utils.cpp
index 6bce59a9..57ef6830 100644
--- a/src/other_tools/just_mr/utils.cpp
+++ b/src/other_tools/just_mr/utils.cpp
@@ -16,7 +16,6 @@
#include "src/buildtool/file_system/file_storage.hpp"
#include "src/buildtool/storage/storage.hpp"
-#include "src/other_tools/just_mr/exit_codes.hpp"
#include "src/utils/cpp/path.hpp"
namespace JustMR::Utils {
@@ -137,114 +136,4 @@ auto ResolveRepo(ExpressionPtr const& repo_desc,
}
}
-void ReachableRepositories(
- ExpressionPtr const& repos,
- std::string const& main,
- std::shared_ptr<JustMR::SetupRepos> const& setup_repos) {
- // use temporary sets to avoid duplicates
- std::unordered_set<std::string> include_repos_set{};
- if (repos->IsMap()) {
- // traversal of bindings
- std::function<void(std::string const&)> traverse =
- [&](std::string const& repo_name) {
- if (not include_repos_set.contains(repo_name)) {
- // if not found, add it and repeat for its bindings
- include_repos_set.insert(repo_name);
- // check bindings
- auto repos_repo_name =
- repos->Get(repo_name, Expression::none_t{});
- if (not repos_repo_name.IsNotNull()) {
- return;
- }
- auto bindings =
- repos_repo_name->Get("bindings", Expression::none_t{});
- if (bindings.IsNotNull() and bindings->IsMap()) {
- for (auto const& bound : bindings->Map().Values()) {
- if (bound.IsNotNull() and bound->IsString()) {
- traverse(bound->String());
- }
- }
- }
- }
- };
- traverse(main); // traverse all bindings of main repository
-
- // Add overlay repositories
- std::unordered_set<std::string> setup_repos_set{include_repos_set};
- for (auto const& repo : include_repos_set) {
- auto repos_repo = repos->Get(repo, Expression::none_t{});
- if (repos_repo.IsNotNull()) {
- // copy over any present alternative root dirs
- for (auto const& layer : kAltDirs) {
- auto layer_val =
- repos_repo->Get(layer, Expression::none_t{});
- if (layer_val.IsNotNull() and layer_val->IsString()) {
- auto repo_name = layer_val->String();
- setup_repos_set.insert(repo_name);
- }
- }
- }
- }
-
- // copy to vectors
- setup_repos->to_setup.clear();
- setup_repos->to_setup.reserve(setup_repos_set.size());
- std::copy(
- setup_repos_set.begin(),
- setup_repos_set.end(),
- std::inserter(setup_repos->to_setup, setup_repos->to_setup.end()));
- setup_repos->to_include.clear();
- setup_repos->to_include.reserve(include_repos_set.size());
- std::copy(include_repos_set.begin(),
- include_repos_set.end(),
- std::inserter(setup_repos->to_include,
- setup_repos->to_include.end()));
- }
-}
-
-void DefaultReachableRepositories(
- ExpressionPtr const& repos,
- std::shared_ptr<JustMR::SetupRepos> const& setup_repos) {
- if (repos.IsNotNull() and repos->IsMap()) {
- setup_repos->to_setup = repos->Map().Keys();
- setup_repos->to_include = setup_repos->to_setup;
- }
-}
-
-auto ReadConfiguration(
- std::optional<std::filesystem::path> const& config_file_opt) noexcept
- -> std::shared_ptr<Configuration> {
- if (not config_file_opt) {
- Logger::Log(LogLevel::Error, "Cannot find repository configuration.");
- std::exit(kExitConfigError);
- }
- auto const& config_file = *config_file_opt;
-
- std::shared_ptr<Configuration> config{nullptr};
- if (not FileSystemManager::IsFile(config_file)) {
- Logger::Log(LogLevel::Error,
- "Cannot read config file {}.",
- config_file.string());
- std::exit(kExitConfigError);
- }
- try {
- std::ifstream fs(config_file);
- auto map = Expression::FromJson(nlohmann::json::parse(fs));
- if (not map->IsMap()) {
- Logger::Log(LogLevel::Error,
- "Config file {} does not contain a JSON object.",
- config_file.string());
- std::exit(kExitConfigError);
- }
- config = std::make_shared<Configuration>(map);
- } catch (std::exception const& e) {
- Logger::Log(LogLevel::Error,
- "Parsing config file {} failed with error:\n{}",
- config_file.string(),
- e.what());
- std::exit(kExitConfigError);
- }
- return config;
-}
-
} // namespace JustMR::Utils