Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
CliArgs.hpp
1#pragma once
2
3#include "migration/MigrationApplication.hpp"
4#include "util/OverloadSet.hpp"
5
6#include <string>
7#include <variant>
8
9namespace app {
10
14class CliArgs {
15public:
19 static constexpr char kDefaultConfigPath[] = "/etc/opt/clio/config.json";
20
24 class Action {
25 public:
27 struct Run {
28 std::string configPath;
30 };
31
33 struct Exit {
35 };
36
38 struct Migrate {
39 std::string configPath;
40 MigrateSubCmd subCmd;
41 };
42
44 struct VerifyConfig {
45 std::string configPath;
46 };
47
53 template <typename ActionType>
54 requires std::is_same_v<ActionType, Run> or std::is_same_v<ActionType, Exit> or
55 std::is_same_v<ActionType, Migrate> or std::is_same_v<ActionType, VerifyConfig>
56 explicit Action(ActionType&& action) : action_(std::forward<ActionType>(action))
57 {
58 }
59
68 template <typename... Processors>
69 int
70 apply(Processors&&... processors) const
71 {
72 return std::visit(util::OverloadSet{std::forward<Processors>(processors)...}, action_);
73 }
74
75 private:
76 std::variant<Run, Exit, Migrate, VerifyConfig> action_;
77 };
78
86 static Action
87 parse(int argc, char const* argv[]);
88};
89
90} // namespace app
int apply(Processors &&... processors) const
Apply a function to the action.
Definition CliArgs.hpp:70
Action(ActionType &&action)
Construct an action from a Run.
Definition CliArgs.hpp:56
Parsed command line arguments representation.
Definition CliArgs.hpp:14
static constexpr char kDefaultConfigPath[]
Default configuration path.
Definition CliArgs.hpp:19
static Action parse(int argc, char const *argv[])
Parse command line arguments.
Definition CliArgs.cpp:23
Exit action.
Definition CliArgs.hpp:33
int exitCode
Exit code.
Definition CliArgs.hpp:34
Migration action.
Definition CliArgs.hpp:38
Run action.
Definition CliArgs.hpp:27
std::string configPath
Configuration file path.
Definition CliArgs.hpp:28
bool useNgWebServer
Whether to use a ng web server.
Definition CliArgs.hpp:29
Verify Config action.
Definition CliArgs.hpp:44
The command to run for migration framework.
Definition MigrationApplication.hpp:16
Overload set for lambdas.
Definition OverloadSet.hpp:11