SlHelpers
CollectConfigs.h
1 // SPDX-License-Identifier: GPL-2.0-only
2 
3 #pragma once
4 
5 #include <functional>
6 #include <string>
7 
8 namespace SlGit {
9 class Commit;
10 class Repo;
11 class TreeEntry;
12 }
13 
14 namespace SlKernCVS {
15 
21 public:
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 
54 private:
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 }
Definition: Blob.h:11
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:34
Class to walk the KernCVS repository and report arch, flavor and configs via callbacks passed to the ...
Definition: CollectConfigs.h:20
The most important Git class.
Definition: Repo.h:45
Commit is a representation of a git commit.
Definition: Commit.h:21
std::function< bool(const std::string &, const std::string &)> InsertArchFlavor
A callback invoked for arch and flavor.
Definition: CollectConfigs.h:31
Definition: Branches.h:15
The TreeEntry represents one git tree entry.
Definition: Tree.h:107
ConfigValue
Value for a config.
Definition: CollectConfigs.h:23
bool collectConfigs(const SlGit::Commit &commit) noexcept
The real work function of this class.