blob: 8d0679dbc6680c846ac1e74d93e9ad5352fd23af (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include <iostream>
#include <cstring>
#include <memory>
#include <vector>
#include "package.h"
namespace katja
{
class command
{
public:
virtual void execute() const = 0;
};
class list final : public command
{
public:
void execute() const override;
};
class help final : public command
{
public:
void execute() const override;
};
enum class command_exception_t
{
no_command,
too_many_arguments,
unknown_command,
};
class command_exception final : public std::exception
{
command_exception_t m_exception_type;
std::vector<std::string> m_failed_arguments;
public:
explicit command_exception(const command_exception_t exception_type,
std::vector<std::string> failed_arguments = {}) noexcept;
const char *what() const noexcept override;
const std::vector<std::string>& failed_arguments() const noexcept;
};
std::unique_ptr<command> parse_command_line(int argc, char **argv);
}
|