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 |