X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/7766e753fefb962209f1898a234053f8c7bbe59d..130cfddff1a69ee69e5edf98e80f0634ce25819a:/projects/sgconf/main.cpp?ds=inline diff --git a/projects/sgconf/main.cpp b/projects/sgconf/main.cpp index 73917852..97e46d1b 100644 --- a/projects/sgconf/main.cpp +++ b/projects/sgconf/main.cpp @@ -35,9 +35,10 @@ #include #include // getenv -#include // basename +#include // str* #include // access +#include // basename namespace { @@ -119,7 +120,7 @@ return CONST_METHOD1_ADAPTER(func, obj); void Version(const std::string & self) { -std::cout << self << ", version: 2.0.0-alpha.\n"; +std::cout << self << ", version: 2.0.0.\n"; } void ReadUserConfigFile(SGCONF::OPTION_BLOCK & block) @@ -163,7 +164,7 @@ class CONFIG_ACTION : public ACTION virtual std::string ParamDescription() const { return m_description; } virtual std::string DefaultDescription() const { return ""; } virtual OPTION_BLOCK & Suboptions() { return m_suboptions; } - virtual PARSER_STATE Parse(int argc, char ** argv); + virtual PARSER_STATE Parse(int argc, char ** argv, void * /*data*/); private: SGCONF::CONFIG & m_config; @@ -175,7 +176,7 @@ class CONFIG_ACTION : public ACTION }; -PARSER_STATE CONFIG_ACTION::Parse(int argc, char ** argv) +PARSER_STATE CONFIG_ACTION::Parse(int argc, char ** argv, void * /*data*/) { if (argc == 0 || argv == NULL || @@ -250,9 +251,13 @@ blocks.Add("General options") SGCONF::OPTION_BLOCK & block = blocks.Add("Connection options") .Add("s", "server", SGCONF::MakeParamAction(config.server, std::string("localhost"), "
"), "\t\thost to connect") .Add("p", "port", SGCONF::MakeParamAction(config.port, uint16_t(5555), ""), "\t\tport to connect") + .Add("local-address", SGCONF::MakeParamAction(config.localAddress, std::string(""), "
"), "\tlocal address to bind") + .Add("local-port", SGCONF::MakeParamAction(config.localPort, uint16_t(0), ""), "\t\tlocal port to bind") .Add("u", "username", SGCONF::MakeParamAction(config.userName, std::string("admin"), ""), "\tadministrative login") .Add("w", "userpass", SGCONF::MakeParamAction(config.userPass, ""), "\tpassword for the administrative login") .Add("a", "address", SGCONF::MakeParamAction(config, ""), "connection params as a single string in format: :@:"); +blocks.Add("Debug options") + .Add("show-config", SGCONF::MakeParamAction(config.showConfig), "\tshow config and exit"); SGCONF::AppendXMLOptionBlock(commands, blocks); SGCONF::AppendAdminsOptionBlock(commands, blocks); SGCONF::AppendTariffsOptionBlock(commands, blocks); @@ -298,15 +303,19 @@ else } config = configOverride; + +if (!config.showConfig.empty() && config.showConfig.data()) + { + std::cout << config.Serialize() << std::endl; + return 0; + } +return commands.Execute(config) ? 0 : -1; } catch (const std::exception& ex) { std::cerr << ex.what() << "\n"; return -1; } - -std::cerr << "Config: " << config.Serialize() << std::endl; -return commands.Execute(config) ? 0 : -1; } //-----------------------------------------------------------------------------