mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
[6s] Break out builtin commands into a list of structs
The 6s builtin commands are now in a separate file, with a list of name, description, and function pointers.
This commit is contained in:
35
src/user/6s/commands.cpp
Normal file
35
src/user/6s/commands.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#include <edit/line.h>
|
||||
#include <util/format.h>
|
||||
#include "commands.h"
|
||||
|
||||
static void
|
||||
help(edit::source &s)
|
||||
{
|
||||
for (unsigned i = 0; i < g_builtins_count; ++i) {
|
||||
char line[100];
|
||||
util::counted<char> output { line, sizeof(line) };
|
||||
|
||||
builtin &cmd = g_builtins[i];
|
||||
|
||||
size_t len = util::format(output, "%20s - %s\r\n", cmd.name(), cmd.description());
|
||||
s.write(line, len);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
version(edit::source &s)
|
||||
{
|
||||
static const char *gv = GIT_VERSION;
|
||||
|
||||
char line[100];
|
||||
util::counted<char> output { line, sizeof(line) };
|
||||
|
||||
size_t len = util::format(output, "jsix version %s\r\n", gv);
|
||||
s.write(line, len);
|
||||
}
|
||||
|
||||
builtin g_builtins[] = {
|
||||
{ "help", "list availble commands", help },
|
||||
{ "version", "print current jsix version", version },
|
||||
};
|
||||
size_t g_builtins_count = sizeof(g_builtins) / sizeof(g_builtins[0]);
|
||||
Reference in New Issue
Block a user