44 lines
910 B
C++
44 lines
910 B
C++
#ifndef __PLASP_APP__COMMAND_H
|
|
#define __PLASP_APP__COMMAND_H
|
|
|
|
#include <tuple>
|
|
|
|
#include <cxxopts.hpp>
|
|
|
|
#include <plasp-app/Utils.h>
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Command
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
template<class... OptionGroups>
|
|
class Command
|
|
{
|
|
protected:
|
|
void addOptionGroupsTo(cxxopts::Options &options)
|
|
{
|
|
forEach(m_optionGroups,
|
|
[&](auto &optionGroup)
|
|
{
|
|
optionGroup.addTo(options);
|
|
});
|
|
}
|
|
|
|
void parseOptionGroups(cxxopts::Options &options)
|
|
{
|
|
forEach(m_optionGroups,
|
|
[&](auto &optionGroup)
|
|
{
|
|
optionGroup.parse(options);
|
|
});
|
|
}
|
|
|
|
std::tuple<OptionGroups...> m_optionGroups;
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif
|