SNode.C
Loading...
Searching...
No Matches
utils::ConfigRoot Class Reference

#include <Config.h>

Inheritance diagram for utils::ConfigRoot:
Collaboration diagram for utils::ConfigRoot:

Public Member Functions

void * operator new (std::size_t)=delete
 ~ConfigRoot () override
Public Member Functions inherited from utils::SubCommand
 SubCommand (const SubCommand &)=delete
 SubCommand (SubCommand &&)=delete
SubCommandoperator= (const SubCommand &)=delete
SubCommandoperator= (SubCommand &&)=delete
virtual ~SubCommand ()
std::string getName () const
std::string version () const
CLI::Option * setConfig (const std::string &defaultConfigFile) const
CLI::Option * setLogFile (const std::string &defaultLogFile) const
CLI::Option * setVersionFlag (const std::string &version) const
bool hasParent () const
SubCommandgetParent () const
SubCommandallowExtras (bool allow=true)
SubCommandrequired (bool required=true, bool force=true)
SubCommandrequired (SubCommand *subCommand, bool required=true)
SubCommandrequired (CLI::Option *option, bool required=true)
bool getRequired () const
SubCommandneeds (SubCommand *subCommand, bool needs=true)
SubCommanddisabled (SubCommand *subCommand, bool disabled=true)
SubCommandsetRequireCallback (const std::function< void(void)> &callback)
SubCommandfinalCallback (const std::function< void()> &finalCallback)
std::string configToStr () const
std::string help (const CLI::App *helpApp, const CLI::AppFormatMode &mode) const
void addSubCommandApp (std::shared_ptr< utils::AppWithPtr > subCommand)
template<typename NewSubCommand, typename... Args>
NewSubCommand * newSubCommand (Args &&... args)
template<typename RequestedSubCommand>
RequestedSubCommand * getSubCommand ()
template<typename RequestedSubCommand>
RequestedSubCommand * getSubCommand () const
CLI::Option * getOption (const std::string &name) const
CLI::Option * addOption (const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const
template<typename ValueTypeT>
CLI::Option * addOption (const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &validator) const
template<typename ValueTypeT>
CLI::Option * addOptionVariable (const std::string &name, ValueTypeT &variable, const std::string &description, const std::string &typeName, const CLI::Validator &additionalValidator) const
template<typename ValueTypeT>
CLI::Option * addOptionVariable (const std::string &name, ValueTypeT &variable, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &additionalValidator) const
CLI::Option * addOptionFunction (const std::string &name, const std::function< void(const std::string &)> &callback, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const
template<typename ValueTypeT>
CLI::Option * addOptionFunction (const std::string &name, const std::function< void(const std::string &)> &callback, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &validator) const
CLI::Option * addFlag (const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const
template<typename ValueTypeT>
CLI::Option * addFlag (const std::string &name, const std::string &description, const std::string &typeName, ValueTypeT defaultValue, const CLI::Validator &validator) const
CLI::Option * addFlagFunction (const std::string &name, const std::function< void()> &callback, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const
CLI::Option * addFlagFunction (const std::string &name, const std::function< void()> &callback, const std::string &description, const std::string &typeName, const std::string &defaultValue, const CLI::Validator &validator) const

Private Member Functions

 ConfigRoot ()
ConfigRootaddRootOptions (const std::string &applicationName, const std::string &userName, const std::string &groupName, const std::string &configDirectory, const std::string &logDirectory, const std::string &pidDirectory)
bool parse1 (int argc, char *argv[])
bool bootstrap (int argc, char *argv[])
bool parse2 (int argc, char *argv[], bool parse1=false)
void terminate ()

Private Attributes

std::string applicationName
std::string pidDirectory
CLI::Option * daemonizeOpt = nullptr
CLI::Option * logFileOpt = nullptr
CLI::Option * monochromLogOpt = nullptr
CLI::Option * userNameOpt = nullptr
CLI::Option * groupNameOpt = nullptr
CLI::Option * enforceLogFileOpt = nullptr
CLI::Option * logLevelOpt = nullptr
CLI::Option * verboseLevelOpt = nullptr
CLI::Option * quietOpt = nullptr
CLI::Option * versionOpt = nullptr
CLI::Option * writeConfigOpt = nullptr
CLI::Option * killOpt = nullptr
CLI::Option * aliasOpt = nullptr

Friends

class Config

Additional Inherited Members

Protected Member Functions inherited from utils::SubCommand
 SubCommand (SubCommand *parent, std::shared_ptr< utils::AppWithPtr > appWithPtr, const std::string &group, bool final=false)
template<typename ConcretSubCommand>
 SubCommand (SubCommand *parent, ConcretSubCommand *concretSubCommand, const std::string &group, bool final=false)
void parse (int argc, char *argv[]) const
SubCommanddescription (const std::string &description)
SubCommandfooter (const std::string &footer)
void removeSubCommand ()
template<typename ValueTypeT>
CLI::Option * setDefaultValue (CLI::Option *option, const ValueTypeT &value, bool clear=true) const
CLI::Option * setConfigurable (CLI::Option *option, bool configurable) const
Static Protected Member Functions inherited from utils::SubCommand
static CLI::App * getHelpTriggerApp ()
static CLI::App * getShowConfigTriggerApp ()
static CLI::App * getCommandlineTriggerApp ()
Protected Attributes inherited from utils::SubCommand
CLI::Option * helpOpt = nullptr
Static Protected Attributes inherited from utils::SubCommand
static std::shared_ptr< CLI::Formatter > sectionFormatter = makeSectionFormatter()
static std::map< std::string, std::string > aliases
static CLI::App * helpTriggerApp = nullptr
static CLI::App * showConfigTriggerApp = nullptr
static CLI::App * commandlineTriggerApp = nullptr

Detailed Description

Definition at line 58 of file Config.h.

Constructor & Destructor Documentation

◆ ConfigRoot()

utils::ConfigRoot::ConfigRoot ( )
private

Definition at line 353 of file Config.cpp.

354 : utils::SubCommand(nullptr, std::make_shared<utils::AppWithPtr>("Root of config", "", this), "", false) {
356 }
static void init()
Definition Logger.cpp:193

References logger::Logger::init(), and utils::SubCommand::SubCommand().

Here is the call graph for this function:

◆ ~ConfigRoot()

utils::ConfigRoot::~ConfigRoot ( )
override

Definition at line 358 of file Config.cpp.

358 {
359 }

Member Function Documentation

◆ addRootOptions()

ConfigRoot * utils::ConfigRoot::addRootOptions ( const std::string & applicationName,
const std::string & userName,
const std::string & groupName,
const std::string & configDirectory,
const std::string & logDirectory,
const std::string & pidDirectory )
private

Definition at line 361 of file Config.cpp.

366 {
369
370 description("Configuration for Application '" + applicationName + "'");
371
372 footer("Application '" + applicationName +
373 "' powered by SNode.C\n"
374 "(C) 2020-2026 Volker Christian <me@vchrist.at>\n"
375 "https://github.com/SNodeC/snode.c");
376
377 setConfig(configDirectory + "/" + applicationName + ".conf");
378
380 "-w,--write-config",
381 "Write config file and exit",
382 "configfile",
383 configDirectory + "/" + applicationName + ".conf",
384 !CLI::ExistingDirectory),
385 false)
386 ->expected(0, 1);
387
388 killOpt = setConfigurable(addFlag("-k,--kill", "Kill running daemon", "", CLI::Validator()), false);
389
390 logLevelOpt = setConfigurable(addOption("--log-level", "Log level", "level", 4, CLI::Range(0, 6)), true);
391
392 verboseLevelOpt = setConfigurable(addOption("--verbose-level", "Verbose level", "level", 2, CLI::Range(0, 10)), true);
393
394 logFileOpt = setConfigurable(setLogFile(logDirectory + "/" + applicationName + ".log"), true);
395
397 "-m{true},--monochrom-logmonochromLogOption{true}",
398 [&monochromLogOpt = this->monochromLogOpt]() {
399 if (monochromLogOpt->as<bool>()) {
401 } else {
403 }
404 },
405 "Monochrom log output",
406 "bool",
407 logger::Logger::getDisableColor() ? "true" : "false",
408 CLI::IsMember({"true", "false"})),
409 true)
410 ->trigger_on_parse();
411
413 "-q{true},--quiet{true}",
414 "Quiet mode",
415 "bool",
416 "false",
417 CLI::IsMember({"true", "false"})),
418 true);
419
421 "-e{true},--enforce-log-file{true}",
422 "Enforce writing of logs to file for foreground applications",
423 "bool",
424 "false",
425 CLI::IsMember({"true", "false"})),
426 true);
427
429 "-d{true},--daemonize{true}",
430 "Start application as daemon",
431 "bool",
432 "false",
433 CLI::IsMember({"true", "false"})),
434 true);
435
437 "-u,--user-name",
438 "Run daemon under specific user permissions",
439 "username",
440 userName,
441 CLI::TypeValidator<std::string>()),
442 true);
443
445 "-g,--group-name",
446 "Run daemon under specific group permissions",
447 "groupname",
448 groupName,
449 CLI::TypeValidator<std::string>()),
450 true);
451
452 aliasOpt = setConfigurable(addOption("-a,--aliases",
453 "Make an instance also known as an alias in configuration files",
454 "instance=instance_alias [instance=instance_alias [...]]",
455 CLI::TypeValidator<std::string>()),
456 false);
457
458 versionOpt = setVersionFlag("1.0-rc1");
459
460 return this;
461 }
static void setDisableColor(bool disableColorLog=true)
Definition Logger.cpp:240
static bool getDisableColor()
Definition Logger.cpp:244
CLI::Option * enforceLogFileOpt
Definition Config.h:87
std::string pidDirectory
Definition Config.h:80
CLI::Option * logFileOpt
Definition Config.h:83
CLI::Option * versionOpt
Definition Config.h:91
CLI::Option * verboseLevelOpt
Definition Config.h:89
CLI::Option * killOpt
Definition Config.h:93
CLI::Option * aliasOpt
Definition Config.h:94
std::string applicationName
Definition Config.h:79
CLI::Option * userNameOpt
Definition Config.h:85
CLI::Option * daemonizeOpt
Definition Config.h:82
CLI::Option * monochromLogOpt
Definition Config.h:84
CLI::Option * writeConfigOpt
Definition Config.h:92
CLI::Option * groupNameOpt
Definition Config.h:86
CLI::Option * quietOpt
Definition Config.h:90
CLI::Option * logLevelOpt
Definition Config.h:88
CLI::Option * addFlagFunction(const std::string &name, const std::function< void()> &callback, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const
SubCommand * description(const std::string &description)
SubCommand * footer(const std::string &footer)
CLI::Option * setVersionFlag(const std::string &version) const
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const
CLI::Option * setConfig(const std::string &defaultConfigFile) const
CLI::Option * setLogFile(const std::string &defaultLogFile) const
CLI::Option * setConfigurable(CLI::Option *option, bool configurable) const
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName, const CLI::Validator &validator) const

References utils::SubCommand::addFlag(), utils::SubCommand::addFlag(), utils::SubCommand::addFlagFunction(), utils::SubCommand::addOption(), utils::SubCommand::addOption(), aliasOpt, applicationName, daemonizeOpt, utils::SubCommand::description(), enforceLogFileOpt, utils::SubCommand::footer(), logger::Logger::getDisableColor(), groupNameOpt, killOpt, logFileOpt, logLevelOpt, monochromLogOpt, pidDirectory, quietOpt, utils::SubCommand::setConfig(), utils::SubCommand::setConfigurable(), logger::Logger::setDisableColor(), utils::SubCommand::setLogFile(), utils::SubCommand::setVersionFlag(), userNameOpt, verboseLevelOpt, versionOpt, and writeConfigOpt.

Referenced by utils::Config::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bootstrap()

bool utils::ConfigRoot::bootstrap ( int argc,
char * argv[] )
private

Definition at line 501 of file Config.cpp.

501 {
502 finalCallback([this]() {
503 if (daemonizeOpt->as<bool>() && helpTriggerApp == nullptr && showConfigTriggerApp == nullptr && writeConfigOpt->count() == 0 &&
504 commandlineTriggerApp == nullptr) {
505 std::cout << "Running as daemon (double fork)" << std::endl;
506
508 pidDirectory + "/" + applicationName + ".pid", userNameOpt->as<std::string>(), groupNameOpt->as<std::string>());
509
511
512 const std::string logFile = logFileOpt->as<std::string>();
513 if (!logFile.empty()) {
515 }
516 } else if (enforceLogFileOpt->as<bool>()) {
517 const std::string logFile = logFileOpt->as<std::string>();
518 if (!logFile.empty()) {
519 std::cout << "Writing logs to file " << logFile << std::endl;
520
522 }
523 }
524 });
525
526 bool proceed = parse2(argc, argv);
527
528 return proceed;
529 }
static void logToFile(const std::string &logFile)
Definition Logger.cpp:221
static void setQuiet(bool quiet=true)
Definition Logger.cpp:236
bool parse2(int argc, char *argv[], bool parse1=false)
Definition Config.cpp:552
static void startDaemon(const std::string &pidFileName, const std::string &userName, const std::string &groupName)
Definition Daemon.cpp:75
static CLI::App * showConfigTriggerApp
Definition SubCommand.h:245
SubCommand * finalCallback(const std::function< void()> &finalCallback)
static CLI::App * helpTriggerApp
Definition SubCommand.h:244
static CLI::App * commandlineTriggerApp
Definition SubCommand.h:246

References applicationName, utils::SubCommand::commandlineTriggerApp, daemonizeOpt, enforceLogFileOpt, utils::SubCommand::finalCallback(), groupNameOpt, utils::SubCommand::helpTriggerApp, logFileOpt, logger::Logger::logToFile(), parse2(), pidDirectory, logger::Logger::setQuiet(), utils::SubCommand::showConfigTriggerApp, utils::Daemon::startDaemon(), userNameOpt, and writeConfigOpt.

Referenced by utils::Config::bootstrap().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator new()

void * utils::ConfigRoot::operator new ( std::size_t )
delete

◆ parse1()

bool utils::ConfigRoot::parse1 ( int argc,
char * argv[] )
private

Definition at line 463 of file Config.cpp.

463 {
464 allowExtras(true);
465
466 helpOpt->get_validator()->active(false);
467
468 bool proceed = parse2(argc, argv, true);
469
470 helpOpt->get_validator()->active(true);
471
472 if (proceed) {
473 if (killOpt->count() > 0) {
474 try {
475 const pid_t daemonPid =
476 utils::Daemon::stopDaemon(pidDirectory + "/" + std::string(std::filesystem::path(argv[0]).filename()) + ".pid");
477 std::cout << "Daemon terminated: Pid = " << daemonPid << std::endl;
478 } catch (const DaemonError& e) {
479 std::cout << "DaemonError: " << e.what() << std::endl;
480 } catch (const DaemonFailure& e) {
481 std::cout << "DaemonFailure: " << e.what() << std::endl;
482 }
483
484 proceed = false;
485 } else {
486 if (helpTriggerApp == nullptr && showConfigTriggerApp == nullptr && commandlineTriggerApp == nullptr &&
487 versionOpt->count() == 0 && writeConfigOpt->count() == 0) {
490 }
491
493
494 allowExtras(false);
495 }
496 }
497
498 return proceed;
499 }
static void setVerboseLevel(int level)
Definition Logger.cpp:217
static void setLogLevel(int level)
Definition Logger.cpp:213
static pid_t stopDaemon(const std::string &pidFileName)
Definition Daemon.cpp:160
SubCommand * allowExtras(bool allow=true)
CLI::Option * helpOpt
Definition SubCommand.h:261

References utils::SubCommand::allowExtras(), utils::SubCommand::commandlineTriggerApp, utils::SubCommand::helpOpt, utils::SubCommand::helpTriggerApp, killOpt, logLevelOpt, parse2(), pidDirectory, quietOpt, logger::Logger::setLogLevel(), logger::Logger::setQuiet(), logger::Logger::setVerboseLevel(), utils::SubCommand::showConfigTriggerApp, utils::Daemon::stopDaemon(), verboseLevelOpt, versionOpt, and writeConfigOpt.

Referenced by utils::Config::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse2()

bool utils::ConfigRoot::parse2 ( int argc,
char * argv[],
bool parse1 = false )
private

Definition at line 552 of file Config.cpp.

552 {
553 bool proceed = false;
554
555 try {
556 try {
557 try {
558 aliases.clear();
559
560 helpTriggerApp = nullptr;
561 showConfigTriggerApp = nullptr;
562 commandlineTriggerApp = nullptr;
563
564 parse(argc, argv);
565
566 if (!parse1) {
567 if (showConfigTriggerApp != nullptr) {
568 std::cout << getConfig(showConfigTriggerApp);
569 } else if (commandlineTriggerApp != nullptr) {
571 } else if (getOption("--write-config")->count() > 0) {
572 std::cout << doWriteConfig(this);
573 } else {
574 proceed = true;
575 }
576 } else {
577 proceed = true;
578 }
579 } catch (const CLI::Success&) {
580 if (!parse1) {
581 throw;
582 }
583
584 proceed = true;
585 } catch (const CLI::ParseError& e) {
586 if (helpTriggerApp != nullptr || showConfigTriggerApp != nullptr || commandlineTriggerApp != nullptr ||
587 versionOpt->count() > 0) {
588 std::cout << std::string{"["} << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT << "] " << e.what()
589 << std::endl
590 << std::endl;
591
592 if (versionOpt->count() > 0) {
593 throw CLI::CallForVersion();
594 }
595 if (helpTriggerApp != nullptr) {
596 throw CLI::CallForHelp();
597 }
598 if (showConfigTriggerApp != nullptr) {
599 std::cout << getConfig(showConfigTriggerApp);
600 } else if (commandlineTriggerApp != nullptr) {
602 }
603 } else {
605 throw;
606 }
607 }
608 } catch (const DaemonError& e) {
609 std::cout << std::string{"["} << Color::Code::FG_RED << "Error" << Color::Code::FG_DEFAULT << "] Daemonize: " << e.what()
610 << " ... exiting" << std::endl;
611 } catch (const DaemonFailure& e) {
612 std::cout << std::string{"["} << Color::Code::FG_RED << "Failure" << Color::Code::FG_DEFAULT << "] Daemonize: " << e.what()
613 << " ... exiting" << std::endl;
614 } catch (const DaemonSignaled& e) {
615 std::cout << "Pid: " << getpid() << ", child pid: " << e.getPid() << ": " << e.what() << std::endl;
616 } catch (const CLI::CallForHelp&) {
617 std::cout << getHelp(this, helpTriggerApp);
618 } catch (const CLI::CallForVersion&) {
619 std::cout << version() << std::endl << std::endl;
620 } catch (const CLI::ConversionError& e) {
621 std::cout << std::string{"["} << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT << "] " << e.what()
622 << std::endl;
623 throw;
624 } catch (const CLI::ArgumentMismatch& e) {
625 std::cout << std::string{"["} << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT << "] " << e.what()
626 << std::endl;
627 throw;
628 } catch (const CLI::ConfigError& e) {
629 std::cout << std::string{"["} << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT << "] " << e.what()
630 << std::endl;
631 std::cout << " Adding '-w' on the command line may solve this problem" << std::endl;
632 throw;
633 } catch (const CLI::ParseError& e) {
634 const std::string what = e.what();
635 if (what.find("[Option Group: ") != std::string::npos) { // If CLI11 throws that error it means for us there are
636 // unconfigured anonymous instances
637 std::cout << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT
638 << " Anonymous instance(s) not configured in source code " << std::endl;
639 } else {
640 std::cout << std::string{"["} << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT << "] " << what
641 << std::endl;
642 }
643 throw;
644 }
645 } catch ([[maybe_unused]] const CLI::ParseError& e) {
646 std::cout << std::endl << "Append -h or --help to your command line for more information." << std::endl;
647 } catch (const CLI::Error& e) {
648 std::cout << std::string{"["} << Color::Code::FG_RED << e.get_name() << Color::Code::FG_DEFAULT << "] " << e.what()
649 << std::endl;
650
651 std::cout << std::endl << "Append -h or --help to your command line for more information." << std::endl;
652 }
653
654 return proceed;
655 }
bool parse1(int argc, char *argv[])
Definition Config.cpp:463
std::string version() const
void parse(int argc, char *argv[]) const
CLI::Option * getOption(const std::string &name) const
static std::map< std::string, std::string > aliases
Definition SubCommand.h:242
@ FG_DEFAULT
Definition Logger.h:58
static std::string doWriteConfig(utils::SubCommand *subCommand)
Definition Config.cpp:304
static std::string getHelp(utils::SubCommand *subCommand, CLI::App *helpTriggerApp)
Definition Config.cpp:329
static std::string getConfig(CLI::App *configTriggeredApp)
Definition Config.cpp:291
static std::string getCommandLine(CLI::App *commandlineTriggerApp)
Definition Config.cpp:246

References utils::SubCommand::aliases, utils::SubCommand::commandlineTriggerApp, utils::doWriteConfig(), Color::FG_DEFAULT, Color::FG_RED, utils::getCommandLine(), utils::getConfig(), utils::getHelp(), utils::SubCommand::getOption(), utils::DaemonSignaled::getPid(), utils::SubCommand::helpTriggerApp, utils::SubCommand::parse(), logger::Logger::setQuiet(), utils::SubCommand::showConfigTriggerApp, utils::SubCommand::version(), and versionOpt.

Referenced by bootstrap(), and parse1().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ terminate()

void utils::ConfigRoot::terminate ( )
private

Definition at line 531 of file Config.cpp.

531 {
532 if (daemonizeOpt->as<bool>()) {
533 std::ifstream pidFile(pidDirectory + "/" + applicationName + ".pid", std::ifstream::in);
534
535 if (pidFile.good()) {
536 pid_t pid = 0;
537 pidFile >> pid;
538
539 if (getpid() == pid) {
541 }
542 }
543 } else if (fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK) >= 0) {
544 char buf[1024];
545 while (read(STDIN_FILENO, buf, 1024) > 0) {
546 }
547 }
548
550 }
static void erasePidFile(const std::string &pidFileName)
Definition Daemon.cpp:202
ssize_t read(int fd, void *buf, std::size_t count)
Definition unistd.cpp:57

References applicationName, daemonizeOpt, utils::Daemon::erasePidFile(), pidDirectory, and utils::SubCommand::removeSubCommand().

Referenced by utils::Config::terminate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Config

friend class Config
friend

Definition at line 96 of file Config.h.

Member Data Documentation

◆ aliasOpt

CLI::Option* utils::ConfigRoot::aliasOpt = nullptr
private

Definition at line 94 of file Config.h.

Referenced by addRootOptions().

◆ applicationName

std::string utils::ConfigRoot::applicationName
private

Definition at line 79 of file Config.h.

Referenced by addRootOptions(), bootstrap(), and terminate().

◆ daemonizeOpt

CLI::Option* utils::ConfigRoot::daemonizeOpt = nullptr
private

Definition at line 82 of file Config.h.

Referenced by addRootOptions(), bootstrap(), and terminate().

◆ enforceLogFileOpt

CLI::Option* utils::ConfigRoot::enforceLogFileOpt = nullptr
private

Definition at line 87 of file Config.h.

Referenced by addRootOptions(), and bootstrap().

◆ groupNameOpt

CLI::Option* utils::ConfigRoot::groupNameOpt = nullptr
private

Definition at line 86 of file Config.h.

Referenced by addRootOptions(), and bootstrap().

◆ killOpt

CLI::Option* utils::ConfigRoot::killOpt = nullptr
private

Definition at line 93 of file Config.h.

Referenced by addRootOptions(), and parse1().

◆ logFileOpt

CLI::Option* utils::ConfigRoot::logFileOpt = nullptr
private

Definition at line 83 of file Config.h.

Referenced by addRootOptions(), and bootstrap().

◆ logLevelOpt

CLI::Option* utils::ConfigRoot::logLevelOpt = nullptr
private

Definition at line 88 of file Config.h.

Referenced by addRootOptions(), utils::Config::getLogLevel(), and parse1().

◆ monochromLogOpt

CLI::Option* utils::ConfigRoot::monochromLogOpt = nullptr
private

Definition at line 84 of file Config.h.

Referenced by addRootOptions().

◆ pidDirectory

std::string utils::ConfigRoot::pidDirectory
private

Definition at line 80 of file Config.h.

Referenced by addRootOptions(), bootstrap(), parse1(), and terminate().

◆ quietOpt

CLI::Option* utils::ConfigRoot::quietOpt = nullptr
private

Definition at line 90 of file Config.h.

Referenced by addRootOptions(), and parse1().

◆ userNameOpt

CLI::Option* utils::ConfigRoot::userNameOpt = nullptr
private

Definition at line 85 of file Config.h.

Referenced by addRootOptions(), and bootstrap().

◆ verboseLevelOpt

CLI::Option* utils::ConfigRoot::verboseLevelOpt = nullptr
private

Definition at line 89 of file Config.h.

Referenced by addRootOptions(), utils::Config::getVerboseLevel(), and parse1().

◆ versionOpt

CLI::Option* utils::ConfigRoot::versionOpt = nullptr
private

Definition at line 91 of file Config.h.

Referenced by addRootOptions(), parse1(), and parse2().

◆ writeConfigOpt

CLI::Option* utils::ConfigRoot::writeConfigOpt = nullptr
private

Definition at line 92 of file Config.h.

Referenced by addRootOptions(), bootstrap(), and parse1().


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