载入中...
搜索中...
未找到
cmdline.h
浏览该文件的文档.
1#pragma once
2
3#include <string>
4#include <functional>
5#include <memory>
6
7#include "common/Module.h"
8namespace CLI
9{
10 class App;
11 class Formatter;
12} // namespace CLI
13
14
15namespace eve::cmd {
16
17class Cmdline;
18class Register;
19
21struct Handler {
22 virtual ~Handler() {}
24 virtual void setup(CLI::App&, std::shared_ptr<CLI::Formatter>) = 0;
26 virtual int parse(CLI::App&, Cmdline&) = 0;
27};
28
30class Cmdline : public Module {
31
32public:
34
36 int Run(std::string path, std::string root, bool debug = false, int dapPort = 0,
37 int mcpPort = 0, std::string devServer = "");
38
40 int Build(std::string path, std::string output, std::string platform);
41
43 int Package(std::string path, std::string output, std::string sdk);
44
46 int Test(std::string path);
47
49 int McpHost(std::string path, int port);
50
52 int Zip(std::string path);
53
55 int DevServer(std::string path, int port = 8765);
56
58 int Get(std::string url);
59
61 int Clean(std::string path);
62
64 int Doc(std::string name);
65
67 int Create(std::string path, std::string name);
68
70 int runArgs(unsigned argc, char** argv);
71
73 std::string getArgv(unsigned i) {
74 return (argv && i < argc && argv[i]) ? argv[i] : std::string{};
75 }
76 unsigned getArgc() { return argc; }
77
79 static std::string get_remaining(CLI::App* sub, std::string default_path = ".");
80
81 friend Register;
82protected:
83 Cmdline();
84
85 unsigned argc;
86 char** argv;
87
88 static std::vector<std::function<Handler*()>>& handers();
89 static void registerCmd(std::function<Handler*()> handler);
90};
91
92#define CMD_REG(name) \
93 static eve::cmd::Handler* name##_create() { return new name(); } \
94 Register name##_cmd_reg(name##_create)
95
97struct Register {
98 Register(std::function<Handler*()> handler) {
99 Cmdline::registerCmd(handler);
100 }
101};
102
103
104} // namespace eve
const char * name
Definition RockMesh.cpp:21
命令行模块(eve.cmd):run / build / package / test / zip / dev-server 等子命令入口。
Definition cmdline.h:30
int Doc(std::string name)
显示模块/函数/类型的文档。
Definition Doc.cpp:60
static std::string get_remaining(CLI::App *sub, std::string default_path=".")
子命令剩余位置参数。
Definition cmdline.cpp:79
unsigned getArgc()
Definition cmdline.h:76
int Clean(std::string path)
清理项目并移除内部产物。
Definition Clean.cpp:35
int DevServer(std::string path, int port=8765)
启动热重载开发服务器。
int Create(std::string path, std::string name)
创建新项目。
Definition Create.cpp:38
unsigned argc
Definition cmdline.h:85
int Get(std::string url)
获取第三方源码。
Definition Get.cpp:36
friend Register
Definition cmdline.h:81
int Zip(std::string path)
把当前目录打成 .eve 压缩包。
Definition Zip.cpp:33
int McpHost(std::string path, int port)
无头 MCP 宿主:stdio(默认)或 TCP,供 AI 代理驱动。
Definition Mcp.cpp:69
std::string getArgv(unsigned i)
第 i 个原始 argv(physfs 文件系统用)。
Definition cmdline.h:73
int Package(std::string path, std::string output, std::string sdk)
把游戏打包为单个可执行文件 / APK。
Definition Package.cpp:94
static std::vector< std::function< Handler *()> > & handers()
Definition cmdline.cpp:15
int runArgs(unsigned argc, char **argv)
解析并执行传入的 argv。
Definition cmdline.cpp:42
static void registerCmd(std::function< Handler *()> handler)
Definition cmdline.cpp:20
int Test(std::string path)
运行项目测试。
Definition Test.cpp:33
int Build(std::string path, std::string output, std::string platform)
构建项目(需要下载工具与源码)。
Definition Build.cpp:48
int Run(std::string path, std::string root, bool debug=false, int dapPort=0, int mcpPort=0, std::string devServer="")
运行游戏(debug 时附加 DAP/MCP 端口)。
Definition Run.cpp:114
Definition cmdline.h:9
One eve <subcommand> handler: CLI setup + argument parsing.
Definition cmdline.h:21
virtual ~Handler()
Definition cmdline.h:22
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:97
Register(std::function< Handler *()> handler)
Definition cmdline.h:98