darkphase / klish

Tool for Implementing Custom Shells

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feature request: Run external command to dynamicaly generate PTYPES

GoogleCodeExporter opened this issue · comments

Say for example you have something like this:

<VIEW name="configure-view">
        <COMMAND name="phonegroup"
                help="Select a phonegroup to configure"
                view="configure-phonegroup-view"
                viewid="phonegroup=${phonegroup}">
                <PARAM name="phonegroup"
                       help="Phonegroup Name"
                       ptype="STRING"/>
        </COMMAND>
</VIEW>

you enter the configure view and type phonegroup, hit tab and get the following:
(config)# phonegroup
  String  Phonegroup Name

What I would like to do, is actually list out all phonegroups (or whatever i'm 
configuring), for quick tab completion.

It would be great to be able to define a new PTYPE, where instead of a fixed 
pattern, it ran a command instead, that will return the possibilities for that 
PTYPE.

What I would like to be able to do, is type phonegroup, hit tab, and see

(config)# phonegroup
  String  Phonegroup Name (foo, bar, bin, baz, xyz)

So then I could type 
(config)# phonegroup x <tab>

and it would complete it to be xyz

Original issue reported on code.google.com by koba...@gmail.com on 29 Feb 2012 at 5:45

so maybe a new PTYPE method can be added, method="command" and then specify 
command="/path/to/script"

It would return a list of possible completions in a specific format.  klish 
would have to check against the list of completions for tab completion 
candidates.

Original comment by koba...@gmail.com on 29 Feb 2012 at 5:53

To create script generated completion you can use dynamic variables and 
"completion" field of PARAM tag.

<VAR name="ETH"
        help="Ethernet interfaces system prefix"
        value="eth"/>

<VAR name="POSSIBLE_ETH"
        help="Displays possible ethernet numbers (with VLANs)" dynamic="true">
<ACTION>
iface-possible ${ETH}
</ACTION>
</VAR>

<PARAM name="sifnum" ptype="IFACE_NUM" help="Interface number" 
completion="${POSSIBLE_IFACE}"/>


Original comment by serj.kalichev@gmail.com on 29 Feb 2012 at 7:26

  • Changed state: Done