diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2023-05-25 12:18:34 +0200 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2023-05-31 15:21:02 +0200 |
commit | c5f89b54c65e7ad5f1cda8ba924600d8061ab1a7 (patch) | |
tree | 8fb5771b2eb1d7cd339d4bf8dd0d886bf0ef035a /src/other_tools/root_maps/fpath_git_map.hpp | |
parent | 9d30f04f8fb16643b470248b252654846a7126f7 (diff) | |
download | justbuild-c5f89b54c65e7ad5f1cda8ba924600d8061ab1a7.tar.gz |
file repos: Add option for ignore-special root
Diffstat (limited to 'src/other_tools/root_maps/fpath_git_map.hpp')
-rw-r--r-- | src/other_tools/root_maps/fpath_git_map.hpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/other_tools/root_maps/fpath_git_map.hpp b/src/other_tools/root_maps/fpath_git_map.hpp index 9b209163..9c78b868 100644 --- a/src/other_tools/root_maps/fpath_git_map.hpp +++ b/src/other_tools/root_maps/fpath_git_map.hpp @@ -17,10 +17,22 @@ #include "nlohmann/json.hpp" #include "src/other_tools/ops_maps/import_to_git_map.hpp" +#include "src/utils/cpp/hash_combine.hpp" #include "src/utils/cpp/path_hash.hpp" +struct FpathInfo { + std::filesystem::path fpath{}; /* key */ + // create root that ignores symlinks + bool ignore_special{}; /* key */ + + [[nodiscard]] auto operator==(const FpathInfo& other) const noexcept + -> bool { + return fpath == other.fpath and ignore_special == other.ignore_special; + } +}; + /// \brief Maps the path to a repo on the file system to its Git tree WS root. -using FilePathGitMap = AsyncMapConsumer<std::filesystem::path, nlohmann::json>; +using FilePathGitMap = AsyncMapConsumer<FpathInfo, nlohmann::json>; [[nodiscard]] auto CreateFilePathGitMap( std::optional<std::string> const& current_subcmd, @@ -28,4 +40,17 @@ using FilePathGitMap = AsyncMapConsumer<std::filesystem::path, nlohmann::json>; gsl::not_null<ImportToGitMap*> const& import_to_git_map, std::size_t jobs) -> FilePathGitMap; +namespace std { +template <> +struct hash<FpathInfo> { + [[nodiscard]] auto operator()(FpathInfo const& ct) const noexcept + -> std::size_t { + size_t seed{}; + hash_combine<std::filesystem::path>(&seed, ct.fpath); + hash_combine<bool>(&seed, ct.ignore_special); + return seed; + } +}; +} // namespace std + #endif // INCLUDED_SRC_OTHER_TOOLS_ROOT_MAPS_FPATH_GIT_MAP_HPP |