bash: execute --long-options only when needed

Delay the execution of $tool --long-options only when really using its
output.
This commit is contained in:
Pino Toscano
2014-11-25 18:15:37 +01:00
parent b00adf3b78
commit 4b792354f0
5 changed files with 20 additions and 21 deletions

View File

@@ -35,8 +35,6 @@ _guestfish ()
_init_completion -s || return
longopts="$(guestfish --long-options)"
# See if user has specified certain options anywhere on the
# command line before the current word.
while [ $c -lt $COMP_CWORD ]; do
@@ -60,6 +58,7 @@ _guestfish ()
case "$cur" in
--*)
# --options
longopts="$(guestfish --long-options)"
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)

View File

@@ -35,8 +35,6 @@ _guestmount ()
_init_completion -s || return
longopts="$(guestmount --long-options)"
# See if user has specified certain options anywhere on the
# command line before the current word.
while [ $c -lt $COMP_CWORD ]; do
@@ -57,6 +55,7 @@ _guestmount ()
case "$cur" in
--*)
# --options
longopts="$(guestmount --long-options)"
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)

View File

@@ -31,7 +31,7 @@ _guestfs_virsh_list ()
_guestfs_virttools ()
{
local cur prev words cword split
local longopts="$1" flag_ro="$2" doms
local longopts tool="$1" flag_ro="$2" doms
_init_completion -s || return
@@ -45,6 +45,7 @@ _guestfs_virttools ()
case "$cur" in
--*)
# --options
longopts="$($tool --long-options)"
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
@@ -55,60 +56,60 @@ _guestfs_virttools ()
_virt_alignment_scan ()
{
_guestfs_virttools "$(virt-alignment-scan --long-options)" 1
_guestfs_virttools "virt-alignment-scan" 1
} &&
complete -o default -F _virt_alignment_scan virt-alignment-scan
_virt_cat ()
{
_guestfs_virttools "$(virt-cat --long-options)" 1
_guestfs_virttools "virt-cat" 1
} &&
complete -o default -F _virt_cat virt-cat
_virt_df ()
{
_guestfs_virttools "$(virt-df --long-options)" 1
_guestfs_virttools "virt-df" 1
} &&
complete -o default -F _virt_df virt-df
_virt_edit ()
{
_guestfs_virttools "$(virt-edit --long-options)" 0
_guestfs_virttools "virt-edit" 0
} &&
complete -o default -F _virt_edit virt-edit
_virt_filesystems ()
{
_guestfs_virttools "$(virt-filesystems --long-options)" 1
_guestfs_virttools "virt-filesystems" 1
} &&
complete -o default -F _virt_filesystems virt-filesystems
_virt_format ()
{
_guestfs_virttools "$(virt-format --long-options)" 0
_guestfs_virttools "virt-format" 0
} &&
complete -o default -F _virt_format virt-format
_virt_inspector ()
{
_guestfs_virttools "$(virt-inspector --long-options)" 1
_guestfs_virttools "virt-inspector" 1
} &&
complete -o default -F _virt_inspector virt-inspector
_virt_ls ()
{
_guestfs_virttools "$(virt-ls --long-options)" 1
_guestfs_virttools "virt-ls" 1
} &&
complete -o default -F _virt_ls virt-ls
_virt_sysprep ()
{
_guestfs_virttools "$(virt-sysprep --long-options)" 0
_guestfs_virttools "virt-sysprep" 0
} &&
complete -o default -F _virt_sysprep virt-sysprep
_virt_log ()
{
_guestfs_virttools "$(virt-log --long-options)" 1
_guestfs_virttools "virt-log" 1
} &&
complete -o default -F _virt_log virt-log

View File

@@ -35,8 +35,6 @@ _virt_rescue ()
_init_completion -s || return
longopts="$(virt-rescue --long-options)"
# See if user has specified certain options anywhere on the
# command line before the current word.
while [ $c -lt $COMP_CWORD ]; do
@@ -57,6 +55,7 @@ _virt_rescue ()
case "$cur" in
--*)
# --options
longopts="$(virt-rescue --long-options)"
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)

View File

@@ -19,13 +19,14 @@
_guestfs_options_only ()
{
local cur prev words cword split
local longopts="$1"
local longopts tool="$1"
_init_completion -s || return
case "$cur" in
--*)
# --options
longopts="$($tool --long-options)"
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
@@ -36,18 +37,18 @@ _guestfs_options_only ()
_virt_builder ()
{
_guestfs_options_only "$(virt-builder --long-options)"
_guestfs_options_only "virt-builder"
} &&
complete -o default -F _virt_builder virt-builder
_virt_resize ()
{
_guestfs_options_only "$(virt-resize --long-options)"
_guestfs_options_only "virt-resize"
} &&
complete -o default -F _virt_resize virt-resize
_virt_sparsify ()
{
_guestfs_options_only "$(virt-sparsify --long-options)"
_guestfs_options_only "virt-sparsify"
} &&
complete -o default -F _virt_sparsify virt-sparsify