m_description(paramDescription),
m_hasDefault(true)
{}
+ PARAM_ACTION(RESETABLE<T> & param)
+ : m_param(param),
+ m_hasDefault(false)
+ {}
PARAM_ACTION(RESETABLE<T> & param,
const std::string & paramDescription)
: m_param(param),
return PARSER_STATE(false, --argc, ++argv);
}
+template <>
+inline
+PARSER_STATE PARAM_ACTION<bool>::Parse(int argc, char ** argv, void * /*data*/)
+{
+m_param = true;
+return PARSER_STATE(false, argc, argv);
+}
+
template <typename T>
inline
void PARAM_ACTION<T>::ParseValue(const std::string & stringValue)
return new PARAM_ACTION<T>(param, defaultValue, paramDescription);
}
+template <typename T>
+inline
+PARAM_ACTION<T> * MakeParamAction(RESETABLE<T> & param)
+{
+return new PARAM_ACTION<T>(param);
+}
+
template <typename T>
inline
PARAM_ACTION<T> * MakeParamAction(RESETABLE<T> & param,
RESETABLE<uint16_t> localPort;
RESETABLE<std::string> userName;
RESETABLE<std::string> userPass;
+ RESETABLE<bool> showConfig;
CONFIG & operator=(const CONFIG & rhs)
{
userName = rhs.userName;
if (!rhs.userPass.empty())
userPass = rhs.userPass;
+ if (!rhs.showConfig.empty())
+ showConfig = rhs.showConfig;
return *this;
}
std::string Serialize() const
{
- std::string res("{ ");
+ std::string res;
if (!configFile.empty())
- res += "configFile: '" + configFile.data() + "',";
+ res += "configFile: '" + configFile.data() + "'\n";
if (!server.empty())
- res += " server: '" + server.data() + "',";
+ res += "server: '" + server.data() + "'\n";
if (!port.empty())
- res += " port: " + x2str(port.data()) + ",";
+ res += "port: " + x2str(port.data()) + "\n";
if (!localAddress.empty())
- res += " local address: '" + localAddress.data() + "',";
+ res += "local address: '" + localAddress.data() + "'\n";
if (!localPort.empty())
- res += " local port: " + x2str(localPort.data()) + ",";
+ res += "local port: " + x2str(localPort.data()) + "\n";
if (!userName.empty())
- res += " userName: '" + userName.data() + "',";
+ res += "userName: '" + userName.data() + "'\n";
if (!userPass.empty())
- res += " userPass: '" + userPass.data() + "'";
- return res + " }";
+ res += "userPass: '" + userPass.data() + "\n";
+ return res;
}
};
.Add("u", "username", SGCONF::MakeParamAction(config.userName, std::string("admin"), "<username>"), "\tadministrative login")
.Add("w", "userpass", SGCONF::MakeParamAction(config.userPass, "<password>"), "\tpassword for the administrative login")
.Add("a", "address", SGCONF::MakeParamAction(config, "<connection string>"), "connection params as a single string in format: <login>:<password>@<host>:<port>");
+blocks.Add("Debug options")
+ .Add("show-config", SGCONF::MakeParamAction(config.showConfig), "\t\tshow config and exit");
SGCONF::AppendXMLOptionBlock(commands, blocks);
SGCONF::AppendAdminsOptionBlock(commands, blocks);
SGCONF::AppendTariffsOptionBlock(commands, blocks);
config = configOverride;
-std::cerr << "Config: " << config.Serialize() << std::endl;
+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)