| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | |||
| 2 | #pragma once | ||
| 3 | |||
| 4 | #include "../dtypes.h" | ||
| 5 | |||
| 6 | #include <argparse/argparse.hpp> | ||
| 7 | #include <memory> | ||
| 8 | |||
| 9 | namespace lython { | ||
| 10 | |||
| 11 | using ArgumentParser = Unique<argparse::ArgumentParser>; | ||
| 12 | |||
| 13 | struct Command { | ||
| 14 | const String name; | ||
| 15 | ArgumentParser args; | ||
| 16 | |||
| 17 | Command(String name_): name(name_) {} | ||
| 18 | |||
| 19 | virtual ~Command() {} | ||
| 20 | |||
| 21 | argparse::ArgumentParser* new_parser() { | ||
| 22 | 72 | args = std::make_unique<argparse::ArgumentParser>( | |
| 23 |
1/2✓ Branch 2 taken 72 times.
✗ Branch 3 not taken.
|
72 | name.c_str(), "", argparse::default_arguments::help); |
| 24 | 72 | return args.get(); | |
| 25 | } | ||
| 26 | |||
| 27 | virtual argparse::ArgumentParser* parser() { return nullptr; } | ||
| 28 | |||
| 29 | int exec() { | ||
| 30 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
|
1 | if (!args) { |
| 31 | ✗ | return -1; | |
| 32 | } | ||
| 33 | 1 | return main(*args.get()); | |
| 34 | } | ||
| 35 | |||
| 36 | virtual int main(argparse::ArgumentParser const& args) { return 0; }; | ||
| 37 | }; | ||
| 38 | |||
| 39 | } // namespace lython | ||
| 40 |