diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-06-15 14:51:03 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-06-20 17:40:44 +0200 |
commit | 9d5047bb2b6d1756385fc4fabf2a3d54d9e9ac93 (patch) | |
tree | 7963d227ddc056f65c544e0e086d4a1f34985687 /src/buildtool/common/repository_config.cpp | |
parent | 17f2cab4490f075a5cb9e975e4b92c06572270ca (diff) | |
download | justbuild-9d5047bb2b6d1756385fc4fabf2a3d54d9e9ac93.tar.gz |
Repository representation: also use string as name in bindings
In this way, we keep the repsitory description more close to a normal
multi-repository configuration. The only difference remaining is
the absence of repository locations for git-tree roots.
Diffstat (limited to 'src/buildtool/common/repository_config.cpp')
-rw-r--r-- | src/buildtool/common/repository_config.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/buildtool/common/repository_config.cpp b/src/buildtool/common/repository_config.cpp index eb72b1c6..ba45052a 100644 --- a/src/buildtool/common/repository_config.cpp +++ b/src/buildtool/common/repository_config.cpp @@ -83,7 +83,7 @@ auto RepositoryConfig::BuildGraphForRepository(std::string const& repo) const -> std::optional<nlohmann::json> { auto graph = nlohmann::json::object(); int id_counter{}; - std::unordered_map<std::string, int> repo_ids{}; + std::unordered_map<std::string, std::string> repo_ids{}; if (AddToGraphAndGetId(&graph, &id_counter, &repo_ids, repo)) { return graph; } @@ -98,8 +98,9 @@ auto RepositoryConfig::BuildGraphForRepository(std::string const& repo) const auto RepositoryConfig::AddToGraphAndGetId( gsl::not_null<nlohmann::json*> const& graph, gsl::not_null<int*> const& id_counter, - gsl::not_null<std::unordered_map<std::string, int>*> const& repo_ids, - std::string const& repo) const -> std::optional<int> { + gsl::not_null<std::unordered_map<std::string, std::string>*> const& + repo_ids, + std::string const& repo) const -> std::optional<std::string> { auto const& unique_repo = DeduplicateRepo(repo); auto repo_it = repo_ids->find(unique_repo); if (repo_it != repo_ids->end()) { @@ -110,7 +111,7 @@ auto RepositoryConfig::AddToGraphAndGetId( auto const* data = Data(unique_repo); if (data != nullptr and data->base_desc) { // Compute the unique id (traversal order) and store it - auto repo_id = (*id_counter)++; + auto repo_id = std::to_string((*id_counter)++); repo_ids->emplace(unique_repo, repo_id); // Compute repository description from content-fixed base @@ -123,11 +124,11 @@ auto RepositoryConfig::AddToGraphAndGetId( if (not global_id) { return std::nullopt; } - repo_desc["bindings"][local_name] = *global_id; + repo_desc["bindings"][local_name] = std::move(*global_id); } // Add repository description to graph with unique id as key - (*graph)[std::to_string(repo_id)] = std::move(repo_desc); + (*graph)[repo_id] = std::move(repo_desc); return repo_id; } return std::nullopt; |