On Mon, Dec 01, 2014 at 09:44:41AM +0000, Richard W.M. Jones wrote:
On Mon, Dec 01, 2014 at 02:42:54PM +0800, Hu Tao wrote:
> On Mon, Dec 01, 2014 at 10:25:51AM +0800, Hu Tao wrote:
> > On Fri, Nov 28, 2014 at 03:00:39PM +0100, Pino Toscano wrote:
> > > On Friday 28 November 2014 17:55:51 Hu Tao wrote:
> > > > This patch lets guestfish show command synopsis if the syntax of
command issued
> > > > by user is wrong, rather than telling user that the number of
parameters is wrong.
> > >
> > > The idea seems sound to me.
> > >
> > > Shouldn't that be done also for fish commands? If so, just make
> > > "synopsis" a function taking args and optargs, and use it in
both
> > > places.
> >
> > fish commands do not have args and optargs in their definitions in file
> > actions.ml. Also, fish commands' synopsises are printed out by inline
> > codes, see run_alloc() for an example.
> >
> > Surely we can reconstruct fish commands' definitions to take advantage
> > of the auto-generation of synopsis done in this patch, but that can be
> > another patch. I'll add this to my todo list.
>
> After some dig, the only problem I don't know how to solve is commands
> with variable-length parameters, such as copy-in. Its synopsis is:
>
> copy-in local [local ...] /remotedir
>
> At first think its style could be:
>
> "style = RErr, [StringList "local"], [];
>
> But it seems the syntax corresponding to StringList is:
>
> copy-in "local local" /remotedir
>
> e.g. its a one parameter of List type, but not several parameters. Any
> ideas?
As you've discovered, guestfish commands don't use the 'style' field
at all. Each command receives an argc/argv list of strings and parses
it however it wants to. It's not restricted by the usual rules for
other API functions and so can use variable length lists of arguments.
So there is no way to get from the struct in actions.ml to a synopsis.
Okay. Thanks for your clarification!
Regards,
Hu