Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
nix::Config Class Reference

#include <config.hh>

Inheritance diagram for nix::Config:
nix::AbstractConfig DevelopSettings nix::ArchiveSettings nix::CompatibilitySettings nix::EvalSettings nix::ExperimentalFeatureSettings nix::FileTransferSettings nix::LoggerSettings nix::PluginSettings nix::RestoreSinkSettings nix::Settings nix::StoreDirConfig nix::fetchers::Settings nixC::MySettings

Classes

struct  SettingData
 

Public Types

using Settings = std::map<std::string, SettingData>
 

Public Member Functions

 Config (StringMap initials={})
 
bool set (const std::string &name, const std::string &value) override
 
void addSetting (AbstractSetting *setting)
 
void getSettings (std::map< std::string, SettingInfo > &res, bool overriddenOnly=false) override
 
void resetOverridden () override
 
nlohmann::json toJSON () override
 
std::string toKeyValue () override
 
void convertToArgs (Args &args, const std::string &category) override
 
- Public Member Functions inherited from nix::AbstractConfig
void applyConfig (const std::string &contents, const std::string &path="<unknown>")
 
void warnUnknownSettings ()
 
void reapplyUnknownSettings ()
 

Friends

class AbstractSetting
 

Additional Inherited Members

- Protected Member Functions inherited from nix::AbstractConfig
 AbstractConfig (StringMap initials={})
 
- Protected Attributes inherited from nix::AbstractConfig
StringMap unknownSettings
 

Detailed Description

A class to simplify providing configuration settings. The typical use is to inherit Config and add Setting<T> members:

class MyClass : private Config { Setting<int> foo{this, 123, "foo", "the number of foos to use"}; Setting<std::string> bar{this, "blabla", "bar", "the name of the bar"};

MyClass() : Config(readConfigFile("/etc/my-app.conf")) { std::cout << foo << "\n"; // will print 123 unless overridden } };

Member Function Documentation

◆ convertToArgs()

void nix::Config::convertToArgs ( Args & args,
const std::string & category )
overridevirtual

Converts settings to Args to be used on the command line interface

  • args: args to write to
  • category: category of the settings

Implements nix::AbstractConfig.

◆ getSettings()

void nix::Config::getSettings ( std::map< std::string, SettingInfo > & res,
bool overriddenOnly = false )
overridevirtual

Adds the currently known settings to the given result map res.

  • res: map to store settings in
  • overriddenOnly: when set to true only overridden settings will be added to res

Implements nix::AbstractConfig.

◆ resetOverridden()

void nix::Config::resetOverridden ( )
overridevirtual

Resets the overridden flag of all Settings

Implements nix::AbstractConfig.

◆ set()

bool nix::Config::set ( const std::string & name,
const std::string & value )
overridevirtual

Sets the value referenced by name to value. Returns true if the setting is known, false otherwise.

Implements nix::AbstractConfig.

◆ toJSON()

nlohmann::json nix::Config::toJSON ( )
overridevirtual

Outputs all settings to JSON

  • out: JSONObject to write the configuration to

Implements nix::AbstractConfig.

◆ toKeyValue()

std::string nix::Config::toKeyValue ( )
overridevirtual

Outputs all settings in a key-value pair format suitable to be used as nix.conf

Implements nix::AbstractConfig.

Friends And Related Symbol Documentation

◆ AbstractSetting

friend class AbstractSetting
friend

A class to simplify providing configuration settings. The typical use is to inherit Config and add Setting<T> members:

class MyClass : private Config { Setting<int> foo{this, 123, "foo", "the number of foos to use"}; Setting<std::string> bar{this, "blabla", "bar", "the name of the bar"};

MyClass() : Config(readConfigFile("/etc/my-app.conf")) { std::cout << foo << "\n"; // will print 123 unless overridden } };


The documentation for this class was generated from the following files: