xref: /kvmtool/builtin-help.c (revision ee8b14567e34eb009af2faca37b4a683bd23a2c9)
10a936c54SPrasad Joshi #include <stdio.h>
20a936c54SPrasad Joshi #include <string.h>
30a936c54SPrasad Joshi 
40a936c54SPrasad Joshi /* user defined headers */
50a936c54SPrasad Joshi #include <common-cmds.h>
60a936c54SPrasad Joshi 
70a936c54SPrasad Joshi #include <kvm/util.h>
8f6677a1dSAmerigo Wang #include <kvm/kvm-cmd.h>
92a24f96dSSasha Levin #include <kvm/builtin-help.h>
10*ee8b1456SWanlong Gao #include <kvm/kvm.h>
110a936c54SPrasad Joshi 
120a936c54SPrasad Joshi 
130a936c54SPrasad Joshi const char kvm_usage_string[] =
148d2ff5daSWanlong Gao 	"lkvm COMMAND [ARGS]";
150a936c54SPrasad Joshi 
160a936c54SPrasad Joshi const char kvm_more_info_string[] =
178d2ff5daSWanlong Gao 	"See 'lkvm help COMMAND' for more information on a specific command.";
180a936c54SPrasad Joshi 
190a936c54SPrasad Joshi 
list_common_cmds_help(void)200a936c54SPrasad Joshi static void list_common_cmds_help(void)
210a936c54SPrasad Joshi {
220a936c54SPrasad Joshi 	unsigned int i, longest = 0;
230a936c54SPrasad Joshi 
240a936c54SPrasad Joshi 	for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
250a936c54SPrasad Joshi 		if (longest < strlen(common_cmds[i].name))
260a936c54SPrasad Joshi 			longest = strlen(common_cmds[i].name);
270a936c54SPrasad Joshi 	}
280a936c54SPrasad Joshi 
29*ee8b1456SWanlong Gao 	puts(" The most commonly used lkvm commands are:");
300a936c54SPrasad Joshi 	for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
310a936c54SPrasad Joshi 		printf("   %-*s   ", longest, common_cmds[i].name);
320a936c54SPrasad Joshi 		puts(common_cmds[i].help);
330a936c54SPrasad Joshi 	}
340a936c54SPrasad Joshi }
350a936c54SPrasad Joshi 
kvm_help(void)36f6677a1dSAmerigo Wang static void kvm_help(void)
370a936c54SPrasad Joshi {
38*ee8b1456SWanlong Gao 	printf("\n To start a simple non-privileged shell run '%s run'\n\n"
39*ee8b1456SWanlong Gao 		"usage: %s\n\n", KVM_BINARY_NAME, kvm_usage_string);
400a936c54SPrasad Joshi 	list_common_cmds_help();
410a936c54SPrasad Joshi 	printf("\n %s\n\n", kvm_more_info_string);
42f6677a1dSAmerigo Wang }
43f6677a1dSAmerigo Wang 
44f6677a1dSAmerigo Wang 
help_cmd(const char * cmd)45f6677a1dSAmerigo Wang static void help_cmd(const char *cmd)
46f6677a1dSAmerigo Wang {
47f6677a1dSAmerigo Wang 	struct cmd_struct *p;
48f6677a1dSAmerigo Wang 	p = kvm_get_command(kvm_commands, cmd);
49f6677a1dSAmerigo Wang 	if (!p)
50f6677a1dSAmerigo Wang 		kvm_help();
51f6677a1dSAmerigo Wang 	else if (p->help)
52f6677a1dSAmerigo Wang 		p->help();
53f6677a1dSAmerigo Wang }
54f6677a1dSAmerigo Wang 
kvm_cmd_help(int argc,const char ** argv,const char * prefix)55f6677a1dSAmerigo Wang int kvm_cmd_help(int argc, const char **argv, const char *prefix)
56f6677a1dSAmerigo Wang {
57f6677a1dSAmerigo Wang 	if (!argv || !*argv) {
58f6677a1dSAmerigo Wang 		kvm_help();
590a936c54SPrasad Joshi 		return 0;
600a936c54SPrasad Joshi 	}
61f6677a1dSAmerigo Wang 	help_cmd(argv[0]);
620a936c54SPrasad Joshi 	return 0;
630a936c54SPrasad Joshi }
64