added application info
This commit is contained in:
parent
3aaed563df
commit
f159952090
|
@ -19,6 +19,11 @@ using namespace std::placeholders;
|
||||||
*/
|
*/
|
||||||
namespace ApplicationUtilities {
|
namespace ApplicationUtilities {
|
||||||
|
|
||||||
|
const char *applicationName = nullptr;
|
||||||
|
const char *applicationAuthor = nullptr;
|
||||||
|
const char *applicationVersion = nullptr;
|
||||||
|
const char *applicationUrl = nullptr;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \class ApplicationUtilities::Argument
|
* \class ApplicationUtilities::Argument
|
||||||
* \brief The Argument class is a wrapper for command line argument information.
|
* \brief The Argument class is a wrapper for command line argument information.
|
||||||
|
@ -306,12 +311,26 @@ void ArgumentParser::setMainArguments(const ArgumentInitializerList &mainArgumen
|
||||||
*/
|
*/
|
||||||
void ArgumentParser::printHelp(ostream &os) const
|
void ArgumentParser::printHelp(ostream &os) const
|
||||||
{
|
{
|
||||||
if(!m_mainArgs.size()) {
|
if(applicationName && *applicationName) {
|
||||||
return;
|
os << applicationName;
|
||||||
|
if(applicationVersion && *applicationVersion) {
|
||||||
|
os << ',' << ' ';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
os << "Available arguments:\n";
|
if(applicationVersion && *applicationVersion) {
|
||||||
for(const Argument *arg : m_mainArgs) {
|
os << "version " << applicationVersion;
|
||||||
arg->printInfo(os);
|
}
|
||||||
|
if((applicationName && *applicationName) || (applicationVersion && *applicationVersion)) {
|
||||||
|
os << '\n' << '\n';
|
||||||
|
}
|
||||||
|
if(!m_mainArgs.empty()) {
|
||||||
|
os << "Available arguments:\n";
|
||||||
|
for(const Argument *arg : m_mainArgs) {
|
||||||
|
arg->printInfo(os);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(applicationUrl && *applicationUrl) {
|
||||||
|
os << "\nProject website: " << applicationUrl << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,18 @@
|
||||||
|
|
||||||
namespace ApplicationUtilities {
|
namespace ApplicationUtilities {
|
||||||
|
|
||||||
class Argument;
|
extern const char *applicationName;
|
||||||
|
extern const char *applicationAuthor;
|
||||||
|
extern const char *applicationVersion;
|
||||||
|
extern const char *applicationUrl;
|
||||||
|
|
||||||
|
#define SET_APPLICATION_INFO \
|
||||||
|
::ApplicationUtilities::applicationName = APP_NAME; \
|
||||||
|
::ApplicationUtilities::applicationAuthor = APP_AUTHOR; \
|
||||||
|
::ApplicationUtilities::applicationVersion = APP_VERSION; \
|
||||||
|
::ApplicationUtilities::applicationUrl = APP_URL
|
||||||
|
|
||||||
|
class Argument;
|
||||||
class ArgumentParser;
|
class ArgumentParser;
|
||||||
|
|
||||||
typedef std::initializer_list<Argument *> ArgumentInitializerList;
|
typedef std::initializer_list<Argument *> ArgumentInitializerList;
|
||||||
|
|
Loading…
Reference in New Issue