Commit 5506fcad1f26fca7401ebd5b88990d1c6a9ae298
1 parent
add5f336
Add GApplication::need_help() method that notifies the client application that t…
…he --help option has been specified on the command line (#572).
Showing
3 changed files
with
52 additions
and
17 deletions
include/GApplication.hpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * GApplication.hpp - GammaLib application base class * | 2 | * GApplication.hpp - GammaLib application base class * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2014 by Juergen Knoedlseder * | 4 | + * copyright (C) 2010-2015 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -83,6 +83,7 @@ public: | @@ -83,6 +83,7 @@ public: | ||
| 83 | void log_header(void); | 83 | void log_header(void); |
| 84 | void log_trailer(void); | 84 | void log_trailer(void); |
| 85 | void log_parameters(void); | 85 | void log_parameters(void); |
| 86 | + const bool& need_help(void) const; | ||
| 86 | std::string print(const GChatter& chatter = NORMAL) const; | 87 | std::string print(const GChatter& chatter = NORMAL) const; |
| 87 | 88 | ||
| 88 | // Public members | 89 | // Public members |
| @@ -105,6 +106,7 @@ protected: | @@ -105,6 +106,7 @@ protected: | ||
| 105 | std::time_t m_tstart; //!< Calendar start time of execution | 106 | std::time_t m_tstart; //!< Calendar start time of execution |
| 106 | std::clock_t m_cstart; //!< Clock start time of execution | 107 | std::clock_t m_cstart; //!< Clock start time of execution |
| 107 | GApplicationPars m_pars; //!< Application parameters | 108 | GApplicationPars m_pars; //!< Application parameters |
| 109 | + bool m_need_help; //!< --help specified | ||
| 108 | }; | 110 | }; |
| 109 | 111 | ||
| 110 | 112 | ||
| @@ -209,4 +211,17 @@ const std::string& GApplication::log_filename(void) const | @@ -209,4 +211,17 @@ const std::string& GApplication::log_filename(void) const | ||
| 209 | return (m_logfile); | 211 | return (m_logfile); |
| 210 | } | 212 | } |
| 211 | 213 | ||
| 214 | + | ||
| 215 | +/***********************************************************************//** | ||
| 216 | + * @brief Signals if --help option has been specified | ||
| 217 | + * | ||
| 218 | + * @return True if --help option has been specified. | ||
| 219 | + ***************************************************************************/ | ||
| 220 | +inline | ||
| 221 | +const bool& GApplication::need_help(void) const | ||
| 222 | +{ | ||
| 223 | + // Return | ||
| 224 | + return (m_need_help); | ||
| 225 | +} | ||
| 226 | + | ||
| 212 | #endif /* GAPPLICATION_HPP */ | 227 | #endif /* GAPPLICATION_HPP */ |
pyext/GApplication.i
| @@ -70,6 +70,7 @@ public: | @@ -70,6 +70,7 @@ public: | ||
| 70 | void log_header(void); | 70 | void log_header(void); |
| 71 | void log_trailer(void); | 71 | void log_trailer(void); |
| 72 | void log_parameters(void); | 72 | void log_parameters(void); |
| 73 | + const bool& need_help(void) const; | ||
| 73 | 74 | ||
| 74 | // Public members | 75 | // Public members |
| 75 | GLog log; //!< Application logger | 76 | GLog log; //!< Application logger |
src/app/GApplication.cpp
| 1 | /*************************************************************************** | 1 | /*************************************************************************** |
| 2 | * GApplication.cpp - GammaLib application base class * | 2 | * GApplication.cpp - GammaLib application base class * |
| 3 | * ----------------------------------------------------------------------- * | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2010-2013 by Juergen Knoedlseder * | 4 | + * copyright (C) 2010-2015 by Juergen Knoedlseder * |
| 5 | * ----------------------------------------------------------------------- * | 5 | * ----------------------------------------------------------------------- * |
| 6 | * * | 6 | * * |
| 7 | * This program is free software: you can redistribute it and/or modify * | 7 | * This program is free software: you can redistribute it and/or modify * |
| @@ -131,15 +131,32 @@ GApplication::GApplication(const std::string& name, const std::string& version, | @@ -131,15 +131,32 @@ GApplication::GApplication(const std::string& name, const std::string& version, | ||
| 131 | m_args.push_back(gammalib::strip_whitespace(argv[i])); | 131 | m_args.push_back(gammalib::strip_whitespace(argv[i])); |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | - // Initialise application parameters | ||
| 135 | - m_pars.load(par_filename(), m_args); | 134 | + // Catch --help option before doing anything else. The actual action |
| 135 | + // needs to be done by the client, but we skip the loading of the | ||
| 136 | + // parameter file and the opening of the logger if the help option | ||
| 137 | + // was specified. | ||
| 138 | + m_need_help = false; | ||
| 139 | + if (m_args.size() >= 2) { | ||
| 140 | + if (m_args[1] == "--help") { | ||
| 141 | + m_need_help = true; | ||
| 142 | + } | ||
| 143 | + } | ||
| 136 | 144 | ||
| 137 | - // Set log filename and chattiness | ||
| 138 | - set_log_filename(); | ||
| 139 | - set_log_chatter(); | 145 | + // If no --help option has been specified then proceed with loading |
| 146 | + // the parameter file and opening the logger | ||
| 147 | + if (!m_need_help) { | ||
| 148 | + | ||
| 149 | + // Initialise application parameters | ||
| 150 | + m_pars.load(par_filename(), m_args); | ||
| 151 | + | ||
| 152 | + // Set log filename and chattiness | ||
| 153 | + set_log_filename(); | ||
| 154 | + set_log_chatter(); | ||
| 155 | + | ||
| 156 | + // Initialise the application logger | ||
| 157 | + logFileOpen(); | ||
| 140 | 158 | ||
| 141 | - // Initialise the application logger | ||
| 142 | - logFileOpen(); | 159 | + } // endif: no --help option specified |
| 143 | 160 | ||
| 144 | // Return | 161 | // Return |
| 145 | return; | 162 | return; |
| @@ -579,6 +596,7 @@ void GApplication::init_members(void) | @@ -579,6 +596,7 @@ void GApplication::init_members(void) | ||
| 579 | m_logfile.clear(); | 596 | m_logfile.clear(); |
| 580 | m_args.clear(); | 597 | m_args.clear(); |
| 581 | m_pars.clear(); | 598 | m_pars.clear(); |
| 599 | + m_need_help = false; | ||
| 582 | 600 | ||
| 583 | // Save the execution calendar start time | 601 | // Save the execution calendar start time |
| 584 | std::time(&m_tstart); | 602 | std::time(&m_tstart); |
| @@ -602,14 +620,15 @@ void GApplication::copy_members(const GApplication& app) | @@ -602,14 +620,15 @@ void GApplication::copy_members(const GApplication& app) | ||
| 602 | log = app.log; | 620 | log = app.log; |
| 603 | 621 | ||
| 604 | // Copy protected attributes | 622 | // Copy protected attributes |
| 605 | - m_name = app.m_name; | ||
| 606 | - m_version = app.m_version; | ||
| 607 | - m_parfile = app.m_parfile; | ||
| 608 | - m_logfile = app.m_logfile; | ||
| 609 | - m_args = app.m_args; | ||
| 610 | - m_tstart = app.m_tstart; | ||
| 611 | - m_cstart = app.m_cstart; | ||
| 612 | - m_pars = app.m_pars; | 623 | + m_name = app.m_name; |
| 624 | + m_version = app.m_version; | ||
| 625 | + m_parfile = app.m_parfile; | ||
| 626 | + m_logfile = app.m_logfile; | ||
| 627 | + m_args = app.m_args; | ||
| 628 | + m_tstart = app.m_tstart; | ||
| 629 | + m_cstart = app.m_cstart; | ||
| 630 | + m_pars = app.m_pars; | ||
| 631 | + m_need_help = app.m_need_help; | ||
| 613 | 632 | ||
| 614 | // Return | 633 | // Return |
| 615 | return; | 634 | return; |