yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
cli.h
Go to the documentation of this file.
1#ifndef YAZE_CLI_CLI_H
2#define YAZE_CLI_CLI_H
3
4#include <functional>
5#include <iosfwd>
6#include <string>
7#include <vector>
8
9#include "absl/status/status.h"
10#include "absl/strings/string_view.h"
11#include "absl/types/span.h"
12#include "cli/util/ansi_style.h"
13
14namespace yaze::cli {
15
16class CommandRegistry;
17
18// Routes a z3ed command line to its CommandRegistry handler and renders the
19// overview, category and command help.
20class Cli {
21 public:
23 std::function<absl::Status(const std::vector<std::string>& args)>;
24
25 struct Options {
26 // Runs `z3ed agent ...`; empty when the build has no agent CLI.
28 bool http_api_available = false;
30 };
31
32 Cli(CommandRegistry& registry, Options options, std::ostream& out);
33
34 // Runs `args`: the command name followed by its arguments.
35 absl::Status Run(absl::Span<const std::string> args) const;
36
37 void PrintOverview() const;
38 // Prints help for the command line `words`, such as {"rom-info"},
39 // {"dungeon"} (a category) or {"debug", "mem", "read"} (an alias).
40 absl::Status PrintScopedHelp(absl::Span<const std::string> words) const;
41 void PrintCategoryHelp(const std::string& category) const;
42 void PrintCommandSummary() const;
43
44 private:
45 absl::Status RunAgent(absl::Span<const std::string> args) const;
46 // `group` names an alias group such as "rom" or "debug".
47 absl::Status RunAlias(absl::string_view group,
48 absl::Span<const std::string> args) const;
49 void PrintAgentHelp() const;
50 void PrintAliasHelp(absl::string_view group) const;
51
54 std::ostream& out_;
55};
56
57} // namespace yaze::cli
58
59#endif // YAZE_CLI_CLI_H
std::ostream & out_
Definition cli.h:54
void PrintCategoryHelp(const std::string &category) const
Definition cli.cc:259
absl::Status PrintScopedHelp(absl::Span< const std::string > words) const
Definition cli.cc:183
absl::Status Run(absl::Span< const std::string > args) const
Definition cli.cc:80
void PrintAgentHelp() const
Definition cli.cc:228
Options options_
Definition cli.h:53
std::function< absl::Status(const std::vector< std::string > &args)> AgentHandler
Definition cli.h:22
CommandRegistry & registry_
Definition cli.h:52
void PrintCommandSummary() const
Definition cli.cc:295
void PrintOverview() const
Definition cli.cc:148
absl::Status RunAlias(absl::string_view group, absl::Span< const std::string > args) const
Definition cli.cc:125
absl::Status RunAgent(absl::Span< const std::string > args) const
Definition cli.cc:113
Cli(CommandRegistry &registry, Options options, std::ostream &out)
Definition cli.cc:77
void PrintAliasHelp(absl::string_view group) const
Definition cli.cc:243
Single source of truth for all z3ed commands.
bool http_api_available
Definition cli.h:28
util::AnsiStyle style
Definition cli.h:29
AgentHandler agent_handler
Definition cli.h:27