1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-22 17:34:18 +03:00

allow name for VSH_OT_ARGV options

A name will improve the usege, example

# virsh help echo
  NAME
    echo - echo arguments

  SYNOPSIS
    echo [--shell] [--xml] [<string>]...

  DESCRIPTION
    Echo back arguments, possibly with quoting.

  OPTIONS
    --shell          escape for shell use
    --xml            escape for XML use
    <string>         arguments to echo

"[<string>]..." is added to SYNOPSIS.
"<string>         arguments to echo" is added to OPTIONS.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
This commit is contained in:
Lai Jiangshan 2011-06-07 17:11:08 +08:00 committed by Eric Blake
parent a2d401d3ba
commit 6cf77ca7bf

View File

@ -126,7 +126,7 @@ typedef enum {
VSH_OT_STRING, /* optional string option */
VSH_OT_INT, /* optional or mandatory int option */
VSH_OT_DATA, /* string data (as non-option) */
VSH_OT_ARGV /* remaining arguments, opt->name should be "" */
VSH_OT_ARGV /* remaining arguments */
} vshCmdOptType;
/*
@ -10426,7 +10426,7 @@ static const vshCmdInfo info_echo[] = {
static const vshCmdOptDef opts_echo[] = {
{"shell", VSH_OT_BOOL, 0, N_("escape for shell use")},
{"xml", VSH_OT_BOOL, 0, N_("escape for XML use")},
{"", VSH_OT_ARGV, 0, N_("arguments to echo")},
{"string", VSH_OT_ARGV, 0, N_("arguments to echo")},
{NULL, 0, 0, NULL}
};
@ -11479,6 +11479,11 @@ vshCmddefGetOption(vshControl *ctl, const vshCmdDef *cmd, const char *name,
vshError(ctl, _("option --%s already seen"), name);
return NULL;
}
if (opt->type == VSH_OT_ARGV) {
vshError(ctl, _("variable argument <%s> "
"should not be used with --<%s>"), name, name);
return NULL;
}
*opts_seen |= 1 << i;
return opt;
}
@ -11527,7 +11532,7 @@ vshCommandCheckOpts(vshControl *ctl, const vshCmd *cmd, uint32_t opts_required,
const vshCmdOptDef *opt = &def->opts[i];
vshError(ctl,
opt->type == VSH_OT_DATA ?
opt->type == VSH_OT_DATA || opt->type == VSH_OT_ARGV ?
_("command '%s' requires <%s> option") :
_("command '%s' requires --%s option"),
def->name, opt->name);
@ -11635,7 +11640,8 @@ vshCmddefHelp(vshControl *ctl, const char *cmdname)
break;
case VSH_OT_ARGV:
/* xgettext:c-format */
fmt = _("[<string>]...");
fmt = (opt->flag & VSH_OFLAG_REQ) ? _("<%s>...")
: _("[<%s>]...");
break;
default:
assert(0);
@ -11675,7 +11681,8 @@ vshCmddefHelp(vshControl *ctl, const char *cmdname)
break;
case VSH_OT_ARGV:
/* Not really an option. */
continue;
snprintf(buf, sizeof(buf), _("<%s>"), opt->name);
break;
default:
assert(0);
}
@ -13112,7 +13119,7 @@ vshReadlineOptionsGenerator(const char *text, int state)
list_index++;
if (opt->type == VSH_OT_DATA)
if (opt->type == VSH_OT_DATA || opt->type == VSH_OT_ARGV)
/* ignore non --option */
continue;