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:
29 struct Run {
30 std::string configPath;
32 };
33
37 struct Exit {
39 };
40
44 struct Migrate {
45 std::string configPath;
46 MigrateSubCmd subCmd;
47 };
48
52 struct VerifyConfig {
53 std::string configPath;
54 };
55
61 template <typename ActionType>
62 requires std::is_same_v<ActionType, Run> or std::is_same_v<ActionType, Exit> or
63 std::is_same_v<ActionType, Migrate> or std::is_same_v<ActionType, VerifyConfig>
64 explicit Action(ActionType&& action) : action_(std::forward<ActionType>(action))
65 {
66 }
67
76 template <typename... Processors>
77 int
78 apply(Processors&&... processors) const
79 {
80 return std::visit(util::OverloadSet{std::forward<Processors>(processors)...}, action_);
81 }
82
83 private:
84 std::variant<Run, Exit, Migrate, VerifyConfig> action_;
85 };
86
94 static Action
95 parse(int argc, char const* argv[]);
96};
97
98} // namespace app
int apply(Processors &&... processors) const
Apply a function to the action.
Definition CliArgs.hpp:78
Action(ActionType &&action)
Construct an action from a Run.
Definition CliArgs.hpp:64
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:37
int exitCode
Exit code.
Definition CliArgs.hpp:38
Migration action.
Definition CliArgs.hpp:44
Run action.
Definition CliArgs.hpp:29
std::string configPath
Configuration file path.
Definition CliArgs.hpp:30
bool useNgWebServer
Whether to use a ng web server.
Definition CliArgs.hpp:31
Verify Config action.
Definition CliArgs.hpp:52
The command to run for migration framework.
Definition MigrationApplication.hpp:16
Overload set for lambdas.
Definition OverloadSet.hpp:11