#include "option.h"
#include "argument.h"
+#include "required.h"
+#include "multiValue.h"
+#include "grouped.h"
#include "command.h"
-void some_function(std::string) {
- std::cout << "Some function" << std::endl;
+using namespace command;
+
+void argument_function(bool a) {
+ std::cout << "Argument: " << a << std::endl;
+}
+
+void option_function(std::string a) {
+ std::cout << "Help function " << a << std::endl;
+}
+
+void void_function(void) {
+ std::cout << "Void function " << std::endl;
}
int main(int argc, char *argv[]) {
- command::Command command(argc, argv, {
- new command::Argument<std::string>("File path", [](std::string value)->void { std::cout << "Hello from lambda " << value << std::endl; }),
- new command::Argument<std::string>("File path", some_function),
- new command::Option<std::string>("h", "Help", some_function)
- });
+ try {
+ Command command(argc, argv, {
+ new Grouped({
+ new Required(new MultiValue("-", new Argument<bool>("Input values", argument_function))),
+ new MultiValue(",", new Option<std::string>("f", "Optional file", option_function))
+ }),
+ new Option<void>("h", "Help", void_function)
+ });
+ }
+ catch(const std::exception & e) {
+ std::cout << e.what() << std::endl;
+ }
return 0;
}
\ No newline at end of file