载入中...
搜索中...
未找到
cmdline.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include <string>
6#include <functional>
7#include <memory>
8
9#include "common/Module.h"
10namespace CLI
11{
12 class App;
13 class Formatter;
14} // namespace CLI
15
16
17namespace eve::cmd {
18
19class Cmdline;
20struct Register;
21
23struct Handler {
25 virtual ~Handler() {}
27 virtual void setup(CLI::App&, std::shared_ptr<CLI::Formatter>) = 0;
29 virtual int parse(CLI::App&, Cmdline&) = 0;
30};
31
34public:
36
38 int Run(std::string path, std::string root, bool debug = false, int dapPort = 0,
39 int mcpPort = 0, std::string devServer = "");
40
42 int Build(std::string path, std::string output, std::string platform,
43 std::string sdkRoot = "", bool debug = false);
44
46 int Package(std::string path, std::string output, std::string sdk);
47
49 int Test(std::string path);
50
52 int McpHost(std::string path, int port);
53
55 int LanguageServer(std::string path);
56
58 int Zip(std::string path);
59
61 int DevServer(std::string path, int port = 8765);
62
64 int Get(std::string url);
65
67 int Clean(std::string path);
68
70 int Doc(std::string name, bool noOpen = false);
71
73 int Create(std::string path, std::string name);
74
76 int runArgs(unsigned argcIn, char** argvIn);
77
79 std::string getArgv(unsigned i) {
80 return (argv && i < argc && argv[i]) ? argv[i] : std::string{};
81 }
83 unsigned getArgc() { return argc; }
84
86 static std::string get_remaining(CLI::App* sub, std::string default_path = ".");
87
88 friend Register;
89protected:
91 Cmdline();
92
93 unsigned argc;
94 char** argv;
95
96 static std::vector<std::function<Handler*()>>& handers();
98 static void registerCmd(std::function<Handler*()> handler);
99};
100
101#define CMD_REG(name) \
102 static eve::cmd::Handler* name##_create() { return new name(); } \
103 Register name##_cmd_reg(name##_create)
104
106struct Register {
108 Register(std::function<Handler*()> handler) {
111 }
112};
113
114
115} // namespace eve
int root
Definition AnimSmr.cpp:119
std::string output
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
HSQOBJECT handler
std::string name
std::string path
Definition PlayHost.cpp:110
EVENGINE_API_FOUNDATION public API.
Definition Module.h:46
命令行模块(eve.cmd):run / build / package / test / zip / dev-server 等子命令入口。
Definition cmdline.h:33
unsigned getArgc()
Returns the argc.
Definition cmdline.h:83
unsigned argc
Definition cmdline.h:93
friend Register
Definition cmdline.h:88
std::string getArgv(unsigned i)
第 i 个原始 argv(physfs 文件系统用)。
Definition cmdline.h:79
static void registerCmd(std::function< Handler *()> handler)
Registers cmd.
Definition cmdline.cpp:21
Definition cmdline.h:11
One eve <subcommand> handler: CLI setup + argument parsing.
Definition cmdline.h:23
virtual ~Handler()
Releases Handler resources.
Definition cmdline.h:25
virtual void setup(CLI::App &, std::shared_ptr< CLI::Formatter >)=0
Registers options on the CLI11 sub-app.
virtual int parse(CLI::App &, Cmdline &)=0
Parses arguments and runs the command; returns the exit code.
子命令静态注册器(CMD_REG 宏使用)。
Definition cmdline.h:106
Register(std::function< Handler *()> handler)
Constructs a Register.
Definition cmdline.h:108