SlHelpers
Loading...
Searching...
No Matches
CollectConfigs.h
1// SPDX-License-Identifier: GPL-2.0-only
2
3#pragma once
4
5#include <functional>
6#include <string>
7
8namespace SlGit {
9class Commit;
10class Repo;
11class TreeEntry;
12}
13
14namespace SlKernCVS {
15
21public:
23 enum ConfigValue : char {
24 Disabled = 'n',
25 BuiltIn = 'y',
26 Module = 'm',
27 WithValue = 'v',
28 };
29
31 using InsertArchFlavor = std::function<bool (const std::string &, const std::string &)>;
33 using InsertConfig = std::function<bool (const std::string &, const std::string &,
34 const std::string &, const ConfigValue &)>;
35
42 CollectConfigs(const SlGit::Repo &repo, InsertArchFlavor insertArchFlavor,
43 InsertConfig insertConfig) : repo(repo),
44 insertArchFlavor(std::move(insertArchFlavor)),
45 insertConfig(std::move(insertConfig)) {}
46
52 bool collectConfigs(const SlGit::Commit &commit) noexcept;
53
54private:
55 bool processFlavor(const std::string &arch, const std::string &flavor,
56 const SlGit::TreeEntry &treeEntry) noexcept;
57 bool processConfigFile(const std::string &arch, const std::string &flavor,
58 std::string_view configFile) noexcept;
59 bool processConfig(const std::string &arch, const std::string &flavor,
60 std::string_view line) noexcept;
61 const SlGit::Repo &repo;
62 const InsertArchFlavor insertArchFlavor;
63 const InsertConfig insertConfig;
64};
65
66}
Commit is a representation of a git commit.
Definition Commit.h:21
The most important Git class.
Definition Repo.h:45
The TreeEntry represents one git tree entry.
Definition Tree.h:107
ConfigValue
Value for a config.
Definition CollectConfigs.h:23
std::function< bool(const std::string &, const std::string &)> InsertArchFlavor
A callback invoked for arch and flavor.
Definition CollectConfigs.h:31
bool collectConfigs(const SlGit::Commit &commit) noexcept
The real work function of this class.
CollectConfigs(const SlGit::Repo &repo, InsertArchFlavor insertArchFlavor, InsertConfig insertConfig)
CollectConfigs constructor.
Definition CollectConfigs.h:42
std::function< bool(const std::string &, const std::string &, const std::string &, const ConfigValue &)> InsertConfig
A callback invoked for arch, flavor, config, and its value.
Definition CollectConfigs.h:33