[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:
Justin C. Miller
2024-04-29 01:11:15 -07:00
parent 7322df98f5
commit 172eb70551
4 changed files with 78 additions and 9 deletions

35
src/user/6s/commands.cpp Normal file
View 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]);