[virt-manager] [PATCH v2 00/10] Tab completion in bash shell via the argcomplete

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



v1 -> v2:
* Wrapper autocomplete function into cli.py to avoid to import argcomplete everywhere
* Move bash completion template file 'virtmanager' into data/bash-completion/ folder.
* Modify 'virtmanager', remove the complete lines. instead, The virt-* string will be
  added into virt-* scripts at build time.
* copy the 'virtmanager' to virt-* scripts in my_build instead of linking/deleting
  in my_install_data.
* Detect bash completion install location by function bash_completion_dir instead of
  hard code the location.
* Add a new patch about git ignore.


Hi all,

These draft patches add the tab completion in bash for virt-* utilities.

We've been using the argparse to help parse handling, So I think that the
argcomplete is a good option to deal with argument/sub-options completion
in bash shell for virt-manager project. Argcomplete returns the completion
result via fd 8.
After applying these patches, The python3 argcomplete is required while
running virt-* utilities.

For the details about argcomplete, Please refer to:
https://github.com/kislyuk/argcomplete  or
https://pypi.org/project/argcomplete/

ex:
$ virt-clone --<TAB><TAB>
...
--auto-clone     --debug    --help     --nonsparse    --reflink
--check          --file     --mac      --nvram        --replace
...

$ virt-install --p<TAB><TAB>
--panic      --parallel   --paravirt   --pm         --print-xml  --pxe

$ virt-install --panic <TAB><TAB>
clearxml=  iobase=    model=

$ virt-install --panic model=isa,<TAB><TAB>
clearxml=  iobase=

$ virt-install --disk <TAB><TAB>
...
bus=    cache=      format=     path=   serial=     size=
...

$ virt-install --disk path=/storage/vms/sles15/disk0.raw,format=raw,<TAB><TAB>cache=none
...
bus=    format=     serial=     path=   size=
...


$ virt-install --network model=rtl8139,ty<TAB><TAB>
$ virt-install --network model=rtl8139,type=


* A side effect of patches is:
Due to the sub options of arguments of virt-* is comma separated, It needs
to add comma into $COMP_WORDBREAKS to support sub options completion.
That means, Once we used TAB for option completion, The change impacts the
current shell.


The completion support for virt-bootstrap will be posted to upstream after
these patches were accepted.

Lin Ma (10):
  Update docs to reflect the argcomplete dependency
  cli: Add the generic completer function and validator function
  virt-install: Add auto complete support for the general options
  virt-clone: Add auto complete support for the general options
  virt-xml: Add auto complete support for the general options
  virt-convert: Add auto complete support for the general options
  cli: Add auto complete support about sub options
  Bash completion template
  Don't track bash completion files due to they are generated
    dynamically
  setup.py: Install the bash completion files

 .gitignore                       |   1 +
 INSTALL.md                       |   1 +
 data/bash-completion/virtmanager |  37 +++++++++++
 setup.py                         |  27 ++++++++
 virt-clone                       |   2 +
 virt-convert                     |   2 +
 virt-install                     |   2 +
 virt-xml                         |   2 +
 virtinst/cli.py                  | 130 ++++++++++++++++++++++++++-------------
 9 files changed, 162 insertions(+), 42 deletions(-)
 create mode 100644 data/bash-completion/virtmanager

-- 
2.16.2

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux