2#include "common/config.h"
8#include <simplesquirrel/simplesquirrel.hpp>
17 static std::vector<std::function<
Handler*()>> cmds = {};
25 std::string
make_usage(
const CLI::App* app, std::string
name)
const override {
26 std::string
usage =
"Usage: ";
28 usage +=
" [Options] [Root Folder]";
36void Cmdline::expose(ssq::Table& table) {
37 auto cls = table.addClass(
name, Cmdline::create,
false);
44 CLI::App app{
"EVEngine - A Modern Game Engine"};
46 app.add_flag(
"-v,--version", version,
"Print version string");
47 auto formatter = std::make_shared<MyFormatter>();
49 std::vector<Handler*> handles;
53 p->setup(app, formatter);
59 app.parse(argcIn, argvIn);
60 }
catch (
const CLI::ParseError& e) {
61 for (
auto*
h : handles)
delete h;
62 int res = app.exit(e);
67 for (
auto*
h : handles) {
68 if (
int r =
h->parse(app, *
this);
r != -1) {
75 for (
auto*
h : handles)
delete h;
81 auto paths = sub->remaining();
82 if (
paths.size() > 1) {
83 cerr << rang::fg::red <<
"Unknown remaining arguments: " << rang::fg::reset <<
paths[1] << endl;
86 if (
paths.size() == 0) {
#define Module_IMPL(ModuleName, newExpr)
std::map< std::string, std::string > paths
virtual std::string getName() const =0
Returns the name.
命令行模块(eve.cmd):run / build / package / test / zip / dev-server 等子命令入口。
static std::string get_remaining(CLI::App *sub, std::string default_path=".")
子命令剩余位置参数。
int runArgs(unsigned argcIn, char **argvIn)
解析并执行传入的 argv。
static std::vector< std::function< Handler *()> > & handers()
static void registerCmd(std::function< Handler *()> handler)
Registers cmd.
std::string buildInfo()
One-line build metadata for diagnostics (printed by eve --version).
One eve <subcommand> handler: CLI setup + argument parsing.