9#ifndef COMMANDLINEPARSER_HPP
10#define COMMANDLINEPARSER_HPP
22 namespace fs = std::filesystem;
24 template<
typename... TArgs>
34 std::string usageMessage;
36 usageMessage +=
"\nUSAGE: " +
programName.stem().string() +
" [-hv";
38 DryChem::apply_n<3>([&](
auto... elem) { ((usageMessage += elem.generateUsage()), ...); },
options);
43 [&](
auto... elem) { ((usageMessage += elem.generateUsage() +
" "), ...); }, DryChem::reverse(
options));
56 std::cout <<
" -h Prints help information about the " <<
programName.stem() <<
" program.\n";
57 std::cout <<
" -v Verbose mode. Defaults to false/off.\n";
59 DryChem::apply_n<3>([&](
auto... elem) { ((std::cout << elem.getHelpMessage() << std::endl), ...); },
options);
64 [&](
auto... elem) { ((std::cout << elem.getHelpMessage() << std::endl), ...); }, DryChem::reverse(
options));
66 std::cout <<
"\nEXAMPLE: " << exampleUsage <<
"\n\n";
std::string generateUsage() const
Definition commandLineParser.hpp:32
CommandLineParser(const TArgs &... Options)
Definition commandLineParser.hpp:49
void printHelpMessage(const std::string &exampleUsage) const
Definition commandLineParser.hpp:53
std::tuple< TArgs... > options
Definition commandLineParser.hpp:30
fs::path programName
Definition commandLineParser.hpp:28
void setCommandLineOptions(int, const char **argv)
Definition commandLineParser.hpp:51
Definition cmdLineOptions.hpp:22