Ctrl shell: Add help topics to auto complete

This commit is contained in:
Roger A. Light
2025-08-29 14:37:05 +01:00
parent f497c01ad1
commit e1536bb734
6 changed files with 73 additions and 53 deletions
+1 -1
View File
@@ -78,7 +78,7 @@ void completion_tree_arg_list_free(struct completion_tree_arg_list *arg_list);
void completion_tree_arg_list_args_free(struct completion_tree_arg_list *arg_list);
void completion_tree_cmd_free(struct completion_tree_cmd *cmd);
void completion_tree_free(struct completion_tree_root *tree);
struct completion_tree_cmd *completion_tree_cmd_add(struct completion_tree_root *root, const char *name);
struct completion_tree_cmd *completion_tree_cmd_add(struct completion_tree_root *root, struct completion_tree_arg_list *help_arg_list, const char *name);
struct completion_tree_arg_list *completion_tree_cmd_new_arg_list(void);
void completion_tree_cmd_append_arg_list(struct completion_tree_cmd *cmd, struct completion_tree_arg_list *new_list);
struct completion_tree_arg_list *completion_tree_cmd_add_arg_list(struct completion_tree_cmd *cmd);
+11 -6
View File
@@ -32,16 +32,21 @@ static struct completion_tree_root *commands_broker = NULL;
static void command_tree_create(void)
{
struct completion_tree_cmd *cmd;
struct completion_tree_arg_list *help_arg_list;
if(commands_broker) return;
commands_broker = calloc(1, sizeof(struct completion_tree_root));
completion_tree_cmd_add(commands_broker, "listPlugins");
completion_tree_cmd_add(commands_broker, "listListeners");
completion_tree_cmd_add(commands_broker, "disconnect");
completion_tree_cmd_add(commands_broker, "help");
completion_tree_cmd_add(commands_broker, "return");
completion_tree_cmd_add(commands_broker, "exit");
cmd = completion_tree_cmd_add(commands_broker, NULL, "help");
help_arg_list = completion_tree_cmd_add_arg_list(cmd);
completion_tree_cmd_add(commands_broker, help_arg_list, "listPlugins");
completion_tree_cmd_add(commands_broker, help_arg_list, "listListeners");
completion_tree_cmd_add(commands_broker, help_arg_list, "disconnect");
completion_tree_cmd_add(commands_broker, help_arg_list, "return");
completion_tree_cmd_add(commands_broker, help_arg_list, "exit");
}
@@ -76,7 +76,7 @@ void completion_tree_free(struct completion_tree_root *tree)
free(tree);
}
struct completion_tree_cmd *completion_tree_cmd_add(struct completion_tree_root *root, const char *name)
struct completion_tree_cmd *completion_tree_cmd_add(struct completion_tree_root *root, struct completion_tree_arg_list *help_arg_list, const char *name)
{
struct completion_tree_cmd *new_node;
@@ -88,6 +88,8 @@ struct completion_tree_cmd *completion_tree_cmd_add(struct completion_tree_root
new_node->next = root->commands;
root->commands = new_node;
completion_tree_arg_list_add_arg(help_arg_list, name);
return new_node;
}
+39 -36
View File
@@ -39,6 +39,7 @@ static void command_tree_create(void)
{
struct completion_tree_cmd *cmd;
struct completion_tree_arg_list *arg_list;
struct completion_tree_arg_list *help_arg_list;
completion_tree_arg_list_args_free(tree_clients);
completion_tree_arg_list_args_free(tree_groups);
@@ -63,20 +64,23 @@ static void command_tree_create(void)
tree_roles->is_shared = true;
}
cmd = completion_tree_cmd_add(commands_dynsec, "addClientRole");
cmd = completion_tree_cmd_add(commands_dynsec, NULL, "help");
help_arg_list = completion_tree_cmd_add_arg_list(cmd);
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "addClientRole");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
completion_tree_cmd_append_arg_list(cmd, tree_roles);
cmd = completion_tree_cmd_add(commands_dynsec, "addGroupClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "addGroupClient");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
completion_tree_cmd_append_arg_list(cmd, tree_clients);
cmd = completion_tree_cmd_add(commands_dynsec, "addGroupRole");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "addGroupRole");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
completion_tree_cmd_append_arg_list(cmd, tree_roles);
{
cmd = completion_tree_cmd_add(commands_dynsec, "addRoleACL");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "addRoleACL");
completion_tree_cmd_append_arg_list(cmd, tree_roles);
arg_list = completion_tree_cmd_add_arg_list(cmd);
@@ -92,58 +96,58 @@ static void command_tree_create(void)
completion_tree_arg_list_add_arg(arg_list, "deny");
}
completion_tree_cmd_add(commands_dynsec, "createClient");
completion_tree_cmd_add(commands_dynsec, "createGroup");
completion_tree_cmd_add(commands_dynsec, "createRole");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "createClient");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "createGroup");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "createRole");
cmd = completion_tree_cmd_add(commands_dynsec, "deleteClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "deleteClient");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
cmd = completion_tree_cmd_add(commands_dynsec, "deleteGroup");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "deleteGroup");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
cmd = completion_tree_cmd_add(commands_dynsec, "deleteRole");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "deleteRole");
completion_tree_cmd_append_arg_list(cmd, tree_roles);
cmd = completion_tree_cmd_add(commands_dynsec, "disableClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "disableClient");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
cmd = completion_tree_cmd_add(commands_dynsec, "enableClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "enableClient");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
completion_tree_cmd_add(commands_dynsec, "getAnonymousGroup");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "getAnonymousGroup");
completion_tree_cmd_add(commands_dynsec, "getDetails");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "getDetails");
cmd = completion_tree_cmd_add(commands_dynsec, "getClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "getClient");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
completion_tree_cmd_add(commands_dynsec, "getDefaultACLAccess");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "getDefaultACLAccess");
cmd = completion_tree_cmd_add(commands_dynsec, "getGroup");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "getGroup");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
cmd = completion_tree_cmd_add(commands_dynsec, "getRole");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "getRole");
completion_tree_cmd_append_arg_list(cmd, tree_roles);
completion_tree_cmd_add(commands_dynsec, "listClients");
completion_tree_cmd_add(commands_dynsec, "listGroups");
completion_tree_cmd_add(commands_dynsec, "listRoles");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "listClients");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "listGroups");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "listRoles");
cmd = completion_tree_cmd_add(commands_dynsec, "removeClientRole");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "removeClientRole");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
completion_tree_cmd_append_arg_list(cmd, tree_roles);
cmd = completion_tree_cmd_add(commands_dynsec, "removeGroupClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "removeGroupClient");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
completion_tree_cmd_append_arg_list(cmd, tree_clients);
cmd = completion_tree_cmd_add(commands_dynsec, "removeGroupRole");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "removeGroupRole");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
completion_tree_cmd_append_arg_list(cmd, tree_roles);
{
cmd = completion_tree_cmd_add(commands_dynsec, "removeRoleACL");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "removeRoleACL");
completion_tree_cmd_append_arg_list(cmd, tree_roles);
arg_list = completion_tree_cmd_add_arg_list(cmd);
@@ -155,17 +159,17 @@ static void command_tree_create(void)
completion_tree_arg_list_add_arg(arg_list, "unsubscribePattern");
}
cmd = completion_tree_cmd_add(commands_dynsec, "setAnonymousGroup");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "setAnonymousGroup");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
cmd = completion_tree_cmd_add(commands_dynsec, "setClientId");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "setClientId");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
cmd = completion_tree_cmd_add(commands_dynsec, "setClientPassword");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "setClientPassword");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
{
cmd = completion_tree_cmd_add(commands_dynsec, "modifyClient");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "modifyClient");
completion_tree_cmd_append_arg_list(cmd, tree_clients);
arg_list = completion_tree_cmd_add_arg_list(cmd);
@@ -174,7 +178,7 @@ static void command_tree_create(void)
}
{
cmd = completion_tree_cmd_add(commands_dynsec, "modifyGroup");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "modifyGroup");
completion_tree_cmd_append_arg_list(cmd, tree_groups);
arg_list = completion_tree_cmd_add_arg_list(cmd);
@@ -183,7 +187,7 @@ static void command_tree_create(void)
}
{
cmd = completion_tree_cmd_add(commands_dynsec, "modifyRole");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "modifyRole");
completion_tree_cmd_append_arg_list(cmd, tree_roles);
arg_list = completion_tree_cmd_add_arg_list(cmd);
@@ -193,7 +197,7 @@ static void command_tree_create(void)
}
{
cmd = completion_tree_cmd_add(commands_dynsec, "setDefaultACLAccess");
cmd = completion_tree_cmd_add(commands_dynsec, help_arg_list, "setDefaultACLAccess");
arg_list = completion_tree_cmd_add_arg_list(cmd);
completion_tree_arg_list_add_arg(arg_list, "publishClientReceive");
@@ -206,10 +210,9 @@ static void command_tree_create(void)
completion_tree_arg_list_add_arg(arg_list, "deny");
}
completion_tree_cmd_add(commands_dynsec, "disconnect");
completion_tree_cmd_add(commands_dynsec, "help");
completion_tree_cmd_add(commands_dynsec, "return");
completion_tree_cmd_add(commands_dynsec, "exit");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "disconnect");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "return");
completion_tree_cmd_add(commands_dynsec, help_arg_list, "exit");
}
+10 -5
View File
@@ -30,15 +30,20 @@ static struct completion_tree_root *commands_post_connect = NULL;
static void command_tree_create(void)
{
struct completion_tree_cmd *cmd;
struct completion_tree_arg_list *help_arg_list;
if(commands_post_connect) return;
commands_post_connect = calloc(1, sizeof(struct completion_tree_root));
completion_tree_cmd_add(commands_post_connect, "broker");
completion_tree_cmd_add(commands_post_connect, "disconnect");
completion_tree_cmd_add(commands_post_connect, "dynsec");
completion_tree_cmd_add(commands_post_connect, "help");
completion_tree_cmd_add(commands_post_connect, "exit");
cmd = completion_tree_cmd_add(commands_post_connect, NULL, "help");
help_arg_list = completion_tree_cmd_add_arg_list(cmd);
completion_tree_cmd_add(commands_post_connect, help_arg_list, "broker");
completion_tree_cmd_add(commands_post_connect, help_arg_list, "disconnect");
completion_tree_cmd_add(commands_post_connect, help_arg_list, "dynsec");
completion_tree_cmd_add(commands_post_connect, help_arg_list, "exit");
}
static void print_help(char **saveptr)
+9 -4
View File
@@ -31,14 +31,19 @@ static struct completion_tree_root *commands_pre_connect = NULL;
static void command_tree_create(void)
{
struct completion_tree_cmd *cmd;
struct completion_tree_arg_list *help_arg_list;
if(commands_pre_connect) return;
commands_pre_connect = calloc(1, sizeof(struct completion_tree_root));
completion_tree_cmd_add(commands_pre_connect, "auth");
completion_tree_cmd_add(commands_pre_connect, "connect");
completion_tree_cmd_add(commands_pre_connect, "help");
completion_tree_cmd_add(commands_pre_connect, "exit");
cmd = completion_tree_cmd_add(commands_pre_connect, NULL, "help");
help_arg_list = completion_tree_cmd_add_arg_list(cmd);
completion_tree_cmd_add(commands_pre_connect, help_arg_list, "auth");
completion_tree_cmd_add(commands_pre_connect, help_arg_list, "connect");
completion_tree_cmd_add(commands_pre_connect, help_arg_list, "exit");
}