1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2024-09-20 11:11:03 -04:00

nix: Add --help-config flag

This commit is contained in:
Eelco Dolstra 2017-06-07 16:49:54 +02:00
parent b8283773bd
commit aa952d5f0b
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
3 changed files with 30 additions and 2 deletions

View file

@ -41,7 +41,7 @@ protected:
virtual bool processFlag(Strings::iterator & pos, Strings::iterator end); virtual bool processFlag(Strings::iterator & pos, Strings::iterator end);
void printFlags(std::ostream & out); virtual void printFlags(std::ostream & out);
/* Positional arguments. */ /* Positional arguments. */
struct ExpectedArg struct ExpectedArg

View file

@ -31,6 +31,8 @@ class Config
{ {
friend class AbstractSetting; friend class AbstractSetting;
public:
struct SettingData struct SettingData
{ {
bool isAlias; bool isAlias;
@ -40,7 +42,11 @@ class Config
{ } { }
}; };
std::map<std::string, SettingData> _settings; typedef std::map<std::string, SettingData> Settings;
private:
Settings _settings;
StringMap initials; StringMap initials;
@ -58,6 +64,8 @@ public:
StringMap getSettings(bool overridenOnly = false); StringMap getSettings(bool overridenOnly = false);
const Settings & _getSettings() { return _settings; }
void applyConfigFile(const Path & path, bool fatal = false); void applyConfigFile(const Path & path, bool fatal = false);
void resetOverriden(); void resetOverriden();

View file

@ -21,10 +21,30 @@ struct NixArgs : virtual MultiCommand, virtual MixCommonArgs
throw Exit(); throw Exit();
}); });
mkFlag(0, "help-config", "show configuration options", [=]() {
std::cout << "The following configuration options are available:\n\n";
Table2 tbl;
for (const auto & s : settings._getSettings())
if (!s.second.isAlias)
tbl.emplace_back(s.first, s.second.setting->description);
printTable(std::cout, tbl);
throw Exit();
});
mkFlag(0, "version", "show version information", std::bind(printVersion, programName)); mkFlag(0, "version", "show version information", std::bind(printVersion, programName));
settings.convertToArgs(*this); settings.convertToArgs(*this);
} }
void printFlags(std::ostream & out) override
{
Args::printFlags(out);
std::cout <<
"\n"
"In addition, most configuration settings can be overriden using --<name> <value>.\n"
"Boolean settings can be overriden using --<name> or --no-<name>. See nix\n"
"--help-config for a list of configuration settings.\n";
}
}; };
void mainWrapped(int argc, char * * argv) void mainWrapped(int argc, char * * argv)