[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl: use help table to describe command help information
This patch generate a help table to describe command help information. Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx> diff -r ac61c50eb031 -r 9530370da103 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Mon May 10 14:50:48 2010 +0800 +++ b/tools/libxl/xl_cmdimpl.c Mon May 10 15:03:03 2010 +0800 @@ -1164,111 +1164,15 @@ for (i = 0; i < cmdtable_len; i++) printf(" %-20s%s\n", cmd_table[i].cmd_name, cmd_table[i].cmd_desc); - } else if(!strcmp(command, "create")) { - printf("Usage: xl create <ConfigFile> [options] [vars]\n\n"); - printf("Create a domain based on <ConfigFile>.\n\n"); - printf("Options:\n\n"); - printf("-h Print this help.\n"); - printf("-p Leave the domain paused after it is created.\n"); - printf("-c Connect to the console after the domain is created.\n"); - printf("-d Enable debug messages.\n"); - printf("-e Do not wait in the background for the death of the domain.\n"); - } else if(!strcmp(command, "list")) { - printf("Usage: xl list [-v] [Domain]\n\n"); - printf("List information about all/some domains.\n\n"); - } else if(!strcmp(command, "pci-attach")) { - printf("Usage: xl pci-attach <Domain> <BDF> [Virtual Slot]\n\n"); - printf("Insert a new pass-through pci device.\n\n"); - } else if(!strcmp(command, "pci-detach")) { - printf("Usage: xl pci-detach <Domain> <BDF>\n\n"); - printf("Remove a domain's pass-through pci device.\n\n"); - } else if(!strcmp(command, "pci-list")) { - printf("Usage: xl pci-list <Domain>\n\n"); - printf("List pass-through pci devices for a domain.\n\n"); - } else if(!strcmp(command, "pause")) { - printf("Usage: xl pause <Domain>\n\n"); - printf("Pause execution of a domain.\n\n"); - } else if(!strcmp(command, "unpause")) { - printf("Usage: xl unpause <Domain>\n\n"); - printf("Unpause a paused domain.\n\n"); - } else if(!strcmp(command, "save")) { - printf("Usage: xl save [options] <Domain> <CheckpointFile> [<ConfigFile>]\n\n"); - printf("Save a domain state to restore later.\n\n"); - printf("Options:\n\n"); - printf("-h Print this help.\n"); - printf("-c Leave domain running after creating the snapshot.\n"); - } else if(!strcmp(command, "restore")) { - printf("Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n"); - printf("Restore a domain from a saved state.\n\n"); - printf("Options:\n\n"); - printf("-h Print this help.\n"); - printf("-p Do not unpause domain after restoring it.\n"); - printf("-e Do not wait in the background for the death of the domain.\n"); - printf("-d Enable debug messages.\n"); - } else if(!strcmp(command, "migrate")) { - printf("Usage: xl migrate [options] <Domain> <host>\n\n"); - printf("Save a domain state to restore later.\n\n"); - printf("Options:\n\n"); - printf("-h Print this help.\n"); - printf("-C <config> Send <config> instead of config file from creation.\n"); - printf("-s <sshcommand> Use <sshcommand> instead of ssh. String will be passed to sh. If empty, run <host> instead of ssh <host> xl migrate-receive [-d -e]\n"); - printf("-e Do not wait in the background (on <host>) for the death of the domain.\n"); - } else if(!strcmp(command, "migrate-receive")) { - printf("Usage: xl migrate-receive - for internal use only"); - } else if(!strcmp(command, "restore")) { - printf("Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n"); - printf("Restore a domain from a saved state.\n\n"); - printf("Options:\n\n"); - printf("-h Print this help.\n"); - printf("-O Old (configless) xl save format.\n"); - printf("-p Do not unpause domain after restoring it.\n"); - printf("-e Do not wait in the background for the death of the domain.\n"); - } else if(!strcmp(command, "destroy")) { - printf("Usage: xl destroy <Domain>\n\n"); - printf("Terminate a domain immediately.\n\n"); - } else if (!strcmp(command, "console")) { - printf("Usage: xl console <Domain>\n\n"); - printf("Attach to domain's console.\n\n"); - } else if (!strcmp(command, "cd-insert")) { - printf("Usage: xl cd-insert <Domain> <VirtualDevice> <type:path>\n\n"); - printf("Insert a cdrom into a guest's cd drive.\n\n"); - } else if (!strcmp(command, "cd-eject")) { - printf("Usage: xl cd-eject <Domain> <VirtualDevice>\n\n"); - printf("Eject a cdrom from a guest's cd drive.\n\n"); - } else if (!strcmp(command, "mem-set")) { - printf("Usage: xl mem-set <Domain> <MemKB>\n\n"); - printf("Set the current memory usage for a domain.\n\n"); - } else if (!strcmp(command, "button-press")) { - printf("Usage: xl button-press <Domain> <Button>\n\n"); - printf("Indicate <Button> press to a domain.\n"); - printf("<Button> may be 'power' or 'sleep'.\n\n"); - } else if (!strcmp(command, "vcpu-list")) { - printf("Usage: xl vcpu-list [Domain, ...]\n\n"); - printf("List the VCPUs for all/some domains.\n\n"); - } else if (!strcmp(command, "vcpu-pin")) { - printf("Usage: xl vcpu-pin <Domain> <VCPU|all> <CPUs|all>\n\n"); - printf("Set which CPUs a VCPU can use.\n\n"); - } else if (!strcmp(command, "vcpu-set")) { - printf("Usage: xl vcpu-set <Domain> <vCPUs>\n\n"); - printf("Set the number of active VCPUs for allowed for the domain.\n\n"); - } else if(!strcmp(command, "info")) { - printf("Usage: xl info\n\n"); - printf("Get information about Xen host.\n\n"); - } else if (!strcmp(command, "sched-credit")) { - printf("Usage: xl sched-credit [-d <Domain> [-w[=WEIGHT]|-c[=CAP]]]\n\n"); - printf("Get/set credit scheduler parameters.\n"); - printf(" -d DOMAIN, --domain=DOMAIN Domain to modify\n"); - printf(" -w WEIGHT, --weight=WEIGHT Weight (int)\n"); - printf(" -c CAP, --cap=CAP Cap (int)\n"); - } else if (!strcmp(command, "domid")) { - printf("Usage: xl domid <DomainName>\n\n"); - printf("Convert a domain name to domain id.\n"); - } else if (!strcmp(command, "domname")) { - printf("Usage: xl domname <DomainId>\n\n"); - printf("Convert a domain id to domain name.\n"); - } else if (!strcmp(command, "rename")) { - printf("Usage: xl rename <Domain> <NewDomainName>\n\n"); - printf("Rename a domain.\n"); + } else { + for (i = 0; cmd_htable[i].cmd_name != NULL; i++) + if (!strcmp(command, cmd_htable[i].cmd_name)) { + printf("%s", cmd_htable[i].cmd_help); + break; + } + + if (!cmd_htable[i].cmd_name) + printf("no help information for command %s\n", command); } } diff -r ac61c50eb031 -r 9530370da103 tools/libxl/xl_cmdtable.c --- a/tools/libxl/xl_cmdtable.c Mon May 10 14:50:48 2010 +0800 +++ b/tools/libxl/xl_cmdtable.c Mon May 10 15:03:03 2010 +0800 @@ -14,6 +14,142 @@ #include "xl_cmdtable.h" +struct cmd_help cmd_htable[] = { + { "create", + "Usage: xl create <ConfigFile> [options] [vars]\n\n" + "Create a domain based on <ConfigFile>.\n\n" + "Options:\n\n" + "-h Print this help.\n" + "-p Leave the domain paused after it is created.\n" + "-c Connect to the console after the domain is created.\n" + "-d Enable debug messages.\n" + "-e Do not wait in the background for the death of the domain.\n" + }, + { "list", + "Usage: xl list [-v] [Domain]\n\n" + "List information about all/some domains.\n\n" + }, + { "pci-attach", + "Usage: xl pci-attach <Domain> <BDF> [Virtual Slot]\n\n" + "Insert a new pass-through pci device.\n\n" + }, + { "pci-detach", + "Usage: xl pci-detach <Domain> <BDF>\n\n" + "Remove a domain's pass-through pci device.\n\n" + }, + { "pci-list", + "Usage: xl pci-list <Domain>\n\n" + "List pass-through pci devices for a domain.\n\n" + }, + { "pause", + "Usage: xl pause <Domain>\n\n" + "Pause execution of a domain.\n\n" + }, + { "unpause", + "Usage: xl unpause <Domain>\n\n" + "Unpause a paused domain.\n\n" + }, + { "save", + "Usage: xl save [options] <Domain> <CheckpointFile> [<ConfigFile>]\n\n" + "Save a domain state to restore later.\n\n" + "Options:\n\n" + "-h Print this help.\n" + "-c Leave domain running after creating the snapshot.\n" + }, + { "restore", + "Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n" + "Restore a domain from a saved state.\n\n" + "Options:\n\n" + "-h Print this help.\n" + "-p Do not unpause domain after restoring it.\n" + "-e Do not wait in the background for the death of the domain.\n" + "-d Enable debug messages.\n" + }, + { "migrate", + "Usage: xl migrate [options] <Domain> <host>\n\n" + "Save a domain state to restore later.\n\n" + "Options:\n\n" + "-h Print this help.\n" + "-C <config> Send <config> instead of config file from creation.\n" + "-s <sshcommand> Use <sshcommand> instead of ssh. String will be passed to sh." + " If empty, run <host> instead of ssh <host> xl migrate-receive [-d -e]\n" + "-e Do not wait in the background (on <host>) for the death of the domain.\n" + }, + { "migrate-receive", + "Usage: xl migrate-receive - for internal use only" + }, + { "restore", + "Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n" + "Restore a domain from a saved state.\n\n" + "Options:\n\n" + "-h Print this help.\n" + "-O Old (configless) xl save format.\n" + "-p Do not unpause domain after restoring it.\n" + "-e Do not wait in the background for the death of the domain.\n" + }, + { "destroy", + "Usage: xl destroy <Domain>\n\n" + "Terminate a domain immediately.\n\n" + }, + { "console", + "Usage: xl console <Domain>\n\n" + "Attach to domain's console.\n\n" + }, + { "cd-insert", + "Usage: xl cd-insert <Domain> <VirtualDevice> <type:path>\n\n" + "Insert a cdrom into a guest's cd drive.\n\n" + }, + { "cd-eject", + "Usage: xl cd-eject <Domain> <VirtualDevice>\n\n" + "Eject a cdrom from a guest's cd drive.\n\n" + }, + { "mem-set", + "Usage: xl mem-set <Domain> <MemKB>\n\n" + "Set the current memory usage for a domain.\n\n" + }, + { "button-press", + "Usage: xl button-press <Domain> <Button>\n\n" + "Indicate <Button> press to a domain.\n" + "<Button> may be 'power' or 'sleep'.\n\n" + }, + { "vcpu-list", + "Usage: xl vcpu-list [Domain, ...]\n\n" + "List the VCPUs for all/some domains.\n\n" + }, + { "vcpu-pin", + "Usage: xl vcpu-pin <Domain> <VCPU|all> <CPUs|all>\n\n" + "Set which CPUs a VCPU can use.\n\n" + }, + { "vcpu-set", + "Usage: xl vcpu-set <Domain> <vCPUs>\n\n" + "Set the number of active VCPUs for allowed for the domain.\n\n" + }, + { "info", + "Usage: xl info\n\n" + "Get information about Xen host.\n\n" + }, + { "sched-credit", + "Usage: xl sched-credit [-d <Domain> [-w[=WEIGHT]|-c[=CAP]]]\n\n" + "Get/set credit scheduler parameters.\n" + " -d DOMAIN, --domain=DOMAIN Domain to modify\n" + " -w WEIGHT, --weight=WEIGHT Weight (int)\n" + " -c CAP, --cap=CAP Cap (int)\n" + }, + { "domid", + "Usage: xl domid <DomainName>\n\n" + "Convert a domain name to domain id.\n" + }, + { "domname", + "Usage: xl domname <DomainId>\n\n" + "Convert a domain id to domain name.\n" + }, + { "rename", + "Usage: xl rename <Domain> <NewDomainName>\n\n" + "Rename a domain.\n" + }, + { /* NULL */ }, +}; + struct cmd_spec cmd_table[] = { { "create", &main_create, "create a domain from config file <filename>" }, { "list", &main_list, "list information about all domains" }, diff -r ac61c50eb031 -r 9530370da103 tools/libxl/xl_cmdtable.h --- a/tools/libxl/xl_cmdtable.h Mon May 10 14:50:48 2010 +0800 +++ b/tools/libxl/xl_cmdtable.h Mon May 10 15:03:03 2010 +0800 @@ -14,11 +14,17 @@ #include "xl_cmdimpl.h" +struct cmd_help { + char *cmd_name; + char *cmd_help; +}; + struct cmd_spec { char *cmd_name; int (*cmd_impl)(int argc, char **argv); char *cmd_desc; }; +extern struct cmd_help cmd_htable[]; extern struct cmd_spec cmd_table[]; extern int cmdtable_len; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |