mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2025-02-16 15:17:18 +02:00
Merge pull request #11037 from fricklerhandwerk/document-config-parsing
use self-descriptive name for config file parser, document
This commit is contained in:
commit
ff9b6d0e1f
1 changed files with 10 additions and 3 deletions
|
@ -91,7 +91,14 @@ void Config::getSettings(std::map<std::string, SettingInfo> & res, bool overridd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void applyConfigInner(const std::string & contents, const std::string & path, std::vector<std::pair<std::string, std::string>> & parsedContents) {
|
/**
|
||||||
|
* Parse configuration in `contents`, and also the configuration files included from there, with their location specified relative to `path`.
|
||||||
|
*
|
||||||
|
* `contents` and `path` represent the file that is being parsed.
|
||||||
|
* The result is only an intermediate list of key-value pairs of strings.
|
||||||
|
* More parsing according to the settings-specific semantics is being done by `loadConfFile` in `libstore/globals.cc`.
|
||||||
|
*/
|
||||||
|
static void parseConfigFiles(const std::string & contents, const std::string & path, std::vector<std::pair<std::string, std::string>> & parsedContents) {
|
||||||
unsigned int pos = 0;
|
unsigned int pos = 0;
|
||||||
|
|
||||||
while (pos < contents.size()) {
|
while (pos < contents.size()) {
|
||||||
|
@ -125,7 +132,7 @@ static void applyConfigInner(const std::string & contents, const std::string & p
|
||||||
if (pathExists(p)) {
|
if (pathExists(p)) {
|
||||||
try {
|
try {
|
||||||
std::string includedContents = readFile(p);
|
std::string includedContents = readFile(p);
|
||||||
applyConfigInner(includedContents, p, parsedContents);
|
parseConfigFiles(includedContents, p, parsedContents);
|
||||||
} catch (SystemError &) {
|
} catch (SystemError &) {
|
||||||
// TODO: Do we actually want to ignore this? Or is it better to fail?
|
// TODO: Do we actually want to ignore this? Or is it better to fail?
|
||||||
}
|
}
|
||||||
|
@ -153,7 +160,7 @@ static void applyConfigInner(const std::string & contents, const std::string & p
|
||||||
void AbstractConfig::applyConfig(const std::string & contents, const std::string & path) {
|
void AbstractConfig::applyConfig(const std::string & contents, const std::string & path) {
|
||||||
std::vector<std::pair<std::string, std::string>> parsedContents;
|
std::vector<std::pair<std::string, std::string>> parsedContents;
|
||||||
|
|
||||||
applyConfigInner(contents, path, parsedContents);
|
parseConfigFiles(contents, path, parsedContents);
|
||||||
|
|
||||||
// First apply experimental-feature related settings
|
// First apply experimental-feature related settings
|
||||||
for (const auto & [name, value] : parsedContents)
|
for (const auto & [name, value] : parsedContents)
|
||||||
|
|
Loading…
Add table
Reference in a new issue