SlHelpers
Loading...
Searching...
No Matches
Maintainers.h
1// SPDX-License-Identifier: GPL-2.0-only
2
3#pragma once
4
5#include <filesystem>
6#include <set>
7#include <string>
8#include <vector>
9
10#include "Stanza.h"
11
12namespace SlKernCVS {
13
20public:
22 using MaintainersType = std::vector<Stanza>;
23
33 Maintainers(const std::filesystem::path &SUSE,
34 const std::filesystem::path &linuxRepo,
35 const std::string &origin,
36 const Stanza::TranslateEmail &translateEmail) {
37 loadSUSE(SUSE, translateEmail);
38
39 if (!linuxRepo.empty())
40 loadUpstream(linuxRepo, origin, translateEmail);
41 }
42
48 const Stanza *findBestMatch(const std::set<std::filesystem::path> &paths) const {
49 return findBestMatchInMaintainers(m_maintainers, paths);
50 }
51
56 const Stanza *findBestMatchUpstream(const std::set<std::filesystem::path> &paths) const {
57 return findBestMatchInMaintainers(m_upstream_maintainers, paths);
58 }
59
64 const MaintainersType &maintainers() const { return m_maintainers; }
69 const MaintainersType &upstream_maintainers() const { return m_upstream_maintainers; }
74 const std::set<std::string> &suse_users() const { return m_suse_users; }
75private:
76 void loadSUSE(const std::filesystem::path &filename,
77 const Stanza::TranslateEmail &translateEmail);
78 void loadUpstream(const std::filesystem::path &lsource, const std::string &origin,
79 const Stanza::TranslateEmail &translateEmail);
80
81 static const Stanza *findBestMatchInMaintainers(const MaintainersType &sl,
82 const std::set<std::filesystem::path> &paths);
83
84 MaintainersType m_maintainers;
85 MaintainersType m_upstream_maintainers;
86 std::set<std::string> m_suse_users;
87};
88
89}
const MaintainersType & upstream_maintainers() const
Get all parsed Linux maintainers.
Definition Maintainers.h:69
const Stanza * findBestMatch(const std::set< std::filesystem::path > &paths) const
Find the best matched maintainer from the SUSE's MAINTAINERS file.
Definition Maintainers.h:48
Maintainers(const std::filesystem::path &SUSE, const std::filesystem::path &linuxRepo, const std::string &origin, const Stanza::TranslateEmail &translateEmail)
Load maintainers info.
Definition Maintainers.h:33
const std::set< std::string > & suse_users() const
Get all met SUSE users.
Definition Maintainers.h:74
const MaintainersType & maintainers() const
Get all parsed SUSE maintainers.
Definition Maintainers.h:64
const Stanza * findBestMatchUpstream(const std::set< std::filesystem::path > &paths) const
Find the best matched maintainer from the Linux's MAINTAINERS file.
Definition Maintainers.h:56
std::vector< Stanza > MaintainersType
Maintainers are a list of stanzas.
Definition Maintainers.h:22
Stanza (a subsystem) from MAINTAINERS file.
Definition Stanza.h:23
std::function< std::string(std::string_view sv)> TranslateEmail
Callback to translate an e-mail.
Definition Stanza.h:26