Use new-style demand-loaded bash-completion scripts.

This commit is contained in:
Richard W.M. Jones
2013-03-28 17:13:34 +00:00
parent df7f57a193
commit 3c34db9808
14 changed files with 465 additions and 332 deletions

9
.gitignore vendored
View File

@@ -45,6 +45,15 @@ Makefile.in
/appliance/stamp-supermin /appliance/stamp-supermin
/appliance/supermin.d /appliance/supermin.d
/autom4te.cache /autom4te.cache
/bash/virt-cat
/bash/virt-df
/bash/virt-edit
/bash/virt-filesystems
/bash/virt-format
/bash/virt-inspector
/bash/virt-ls
/bash/virt-sysprep
/bash/virt-sparsify
/build-aux /build-aux
/cat/stamp-virt-*.pod /cat/stamp-virt-*.pod
/cat/virt-cat /cat/virt-cat

View File

@@ -69,6 +69,9 @@ SUBDIRS += fish
# virt-tools in C. # virt-tools in C.
SUBDIRS += align cat df edit format inspector rescue SUBDIRS += align cat df edit format inspector rescue
# bash-completion
SUBDIRS += bash
# Language bindings. # Language bindings.
if HAVE_PERL if HAVE_PERL
SUBDIRS += perl perl/examples SUBDIRS += perl perl/examples

2
README
View File

@@ -207,6 +207,8 @@ The full requirements are described below.
| XML::XPath::XMLParser | O | Perl module used by some virt-* tools. | | XML::XPath::XMLParser | O | Perl module used by some virt-* tools. |
+--------------+-------------+---+-----------------------------------------+ +--------------+-------------+---+-----------------------------------------+
| perl-libintl | | O | Perl module for localization. | | perl-libintl | | O | Perl module for localization. |
+--------------+-------------+---+-----------------------------------------+
| bash-completion | O | For tab-completion of commands in bash. |
+==============+=============+===+=========================================+ +==============+=============+===+=========================================+
R = Required R = Required
O = Optional O = Optional

68
bash/Makefile.am Normal file
View File

@@ -0,0 +1,68 @@
# libguestfs
# Copyright (C) 2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
include $(top_srcdir)/subdir-rules.mk
scripts = \
guestfish \
guestmount \
virt-alignment-scan \
virt-cat \
virt-df \
virt-edit \
virt-filesystems \
virt-format \
virt-inspector \
virt-ls \
virt-rescue \
virt-resize \
virt-sparsify \
virt-sysprep
EXTRA_DIST = \
README \
$(scripts)
# Some of the scripts are simply symbolic links.
virt-cat:
ln -sf virt-alignment-scan $@
virt-df:
ln -sf virt-alignment-scan $@
virt-edit:
ln -sf virt-alignment-scan $@
virt-filesystems:
ln -sf virt-alignment-scan $@
virt-format:
ln -sf virt-alignment-scan $@
virt-inspector:
ln -sf virt-alignment-scan $@
virt-ls:
ln -sf virt-alignment-scan $@
virt-sysprep:
ln -sf virt-alignment-scan $@
virt-sparsify:
ln -sf virt-resize $@
if HAVE_BASH_COMPLETION
# Bash completion script.
bashcompletiondir = $(BASH_COMPLETIONS_DIR)
bashcompletion_DATA = $(scripts)
endif

3
bash/README Normal file
View File

@@ -0,0 +1,3 @@
This directory contains the scripts for tab-completing commands in
bash. Note these new-style demand-loaded scripts require
'bash-completion' >= 1.99.

72
bash/guestfish Normal file
View File

@@ -0,0 +1,72 @@
# guestfish bash completion script -*- shell-script -*-
# Copyright (C) 2010-2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# List all local libvirt domains.
_guestfs_virsh_list ()
{
local flag_ro=$1 flags
if [ "$flag_ro" -eq 1 ]; then
flags="--all"
else
flags="--inactive"
fi
virsh list $flags | head -n -1 | tail -n +3 | awk '{print $2}'
}
_guestfish ()
{
local cur prev words cword split
local longopts flag_ro=0 c=1 word cmds doms
_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
word="${COMP_WORDS[c]}"
case "$word" in
-r|--ro) flag_ro=1 ;;
esac
c=$((++c))
done
case "$prev" in
-a|--add)
COMPREPLY=( $(compgen "$cur") )
return ;;
-d|--domain)
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=( $(compgen -W "$doms" -- "$cur") )
return ;;
esac
case "$cur" in
--*)
# --options
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
# Might be a guestfish command.
cmds=$(guestfish -h| head -n -1 | tail -n +2 | awk '{print $1}')
COMPREPLY=( $(compgen -W "$cmds" -- "$cur") )
return ;;
esac
} &&
complete -o default -F _guestfish guestfish

67
bash/guestmount Normal file
View File

@@ -0,0 +1,67 @@
# guestmount bash completion script -*- shell-script -*-
# Copyright (C) 2010-2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# List all local libvirt domains.
_guestfs_virsh_list ()
{
local flag_ro=$1 flags
if [ "$flag_ro" -eq 1 ]; then
flags="--all"
else
flags="--inactive"
fi
virsh list $flags | head -n -1 | tail -n +3 | awk '{print $2}'
}
_guestmount ()
{
local cur prev words cword split
local longopts flag_ro=0 c=1 word doms
_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
word="${COMP_WORDS[c]}"
case "$word" in
-r|--ro) flag_ro=1 ;;
esac
c=$((++c))
done
case "$prev" in
-d|--domain)
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=( $(compgen -W "$doms" -- "$cur") )
return ;;
esac
case "$cur" in
--*)
# --options
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
COMPREPLY=( $(compgen "$cur") )
return ;;
esac
} &&
complete -o default -F _guestmount guestmount

108
bash/virt-alignment-scan Normal file
View File

@@ -0,0 +1,108 @@
# virt-tools bash completion script -*- shell-script -*-
# Copyright (C) 2010-2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# List all local libvirt domains.
_guestfs_virsh_list ()
{
local flag_ro=$1 flags
if [ "$flag_ro" -eq 1 ]; then
flags="--all"
else
flags="--inactive"
fi
virsh list $flags | head -n -1 | tail -n +3 | awk '{print $2}'
}
_guestfs_virttools ()
{
local cur prev words cword split
local longopts="$1" flag_ro="$2" doms
_init_completion -s || return
case "$prev" in
-d|--domain)
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=( $(compgen -W "$doms" -- "$cur") )
return ;;
esac
case "$cur" in
--*)
# --options
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
COMPREPLY=( $(compgen "$cur") )
return ;;
esac
}
_virt_alignment_scan ()
{
_guestfs_virttools "$(virt-alignment-scan --long-options)" 1
} &&
complete -o default -F _virt_alignment_scan virt-alignment-scan
_virt_cat ()
{
_guestfs_virttools "$(virt-cat --long-options)" 1
} &&
complete -o default -F _virt_cat virt-cat
_virt_df ()
{
_guestfs_virttools "$(virt-df --long-options)" 1
} &&
complete -o default -F _virt_df virt-df
_virt_edit ()
{
_guestfs_virttools "$(virt-edit --long-options)" 0
} &&
complete -o default -F _virt_edit virt-edit
_virt_filesystems ()
{
_guestfs_virttools "$(virt-filesystems --long-options)" 1
} &&
complete -o default -F _virt_filesystems virt-filesystems
_virt_format ()
{
_guestfs_virttools "$(virt-format --long-options)" 0
} &&
complete -o default -F _virt_format virt-format
_virt_inspector ()
{
_guestfs_virttools "$(virt-inspector --long-options)" 1
} &&
complete -o default -F _virt_inspector virt-inspector
_virt_ls ()
{
_guestfs_virttools "$(virt-ls --long-options)" 1
} &&
complete -o default -F _virt_ls virt-ls
_virt_sysprep ()
{
_guestfs_virttools "$(virt-sysprep --long-options)" 0
} &&
complete -o default -F _virt_sysprep virt-sysprep

67
bash/virt-rescue Normal file
View File

@@ -0,0 +1,67 @@
# virt-rescue bash completion script -*- shell-script -*-
# Copyright (C) 2010-2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# List all local libvirt domains.
_guestfs_virsh_list ()
{
local flag_ro=$1 flags
if [ "$flag_ro" -eq 1 ]; then
flags="--all"
else
flags="--inactive"
fi
virsh list $flags | head -n -1 | tail -n +3 | awk '{print $2}'
}
_virt_rescue ()
{
local cur prev words cword split
local longopts flag_ro=0 c=1 word doms
_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
word="${COMP_WORDS[c]}"
case "$word" in
-r|--ro) flag_ro=1 ;;
esac
c=$((++c))
done
case "$prev" in
-d|--domain)
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=( $(compgen -W "$doms" -- "$cur") )
return ;;
esac
case "$cur" in
--*)
# --options
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
COMPREPLY=( $(compgen "$cur") )
return ;;
esac
} &&
complete -o default -F _virt_rescue virt-rescue

46
bash/virt-resize Normal file
View File

@@ -0,0 +1,46 @@
# virt-resize, virt-sparsify bash completion script -*- shell-script -*-
# Copyright (C) 2010-2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
_guestfs_options_only ()
{
local cur prev words cword split
local longopts="$1"
_init_completion -s || return
case "$cur" in
--*)
# --options
COMPREPLY=( $(compgen -W "$longopts" -- "$cur") )
return ;;
*)
COMPREPLY=( $(compgen "$cur") )
return ;;
esac
}
_virt_resize ()
{
_guestfs_options_only "$(virt-resize --long-options)"
} &&
complete -o default -F _virt_resize virt-resize
_virt_sparsify ()
{
_guestfs_options_only "$(virt-sparsify --long-options)"
} &&
complete -o default -F _virt_sparsify virt-sparsify

View File

@@ -1483,6 +1483,19 @@ m4_ifdef([GTK_DOC_CHECK], [
AM_CONDITIONAL([ENABLE_GTK_DOC], false) AM_CONDITIONAL([ENABLE_GTK_DOC], false)
]) ])
dnl Bash completion.
PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0], [
bash_completion=yes
AC_MSG_CHECKING([for bash-completions directory])
BASH_COMPLETIONS_DIR="`pkg-config --variable=completionsdir bash-completion`"
AC_MSG_RESULT([$BASH_COMPLETIONS_DIR])
AC_SUBST([BASH_COMPLETIONS_DIR])
],[
bash_completion=no
AC_MSG_WARN([bash-completion not installed])
])
AM_CONDITIONAL([HAVE_BASH_COMPLETION],[test "x$bash_completion" = "xyes"])
dnl Library versioning. dnl Library versioning.
MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR` MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
AC_SUBST(MAX_PROC_NR) AC_SUBST(MAX_PROC_NR)
@@ -1508,6 +1521,7 @@ AC_CONFIG_FILES([run],
AC_CONFIG_FILES([Makefile AC_CONFIG_FILES([Makefile
align/Makefile align/Makefile
appliance/Makefile appliance/Makefile
bash/Makefile
cat/Makefile cat/Makefile
csharp/Makefile csharp/Makefile
daemon/Makefile daemon/Makefile
@@ -1626,6 +1640,8 @@ AS_ECHO_N(["gobject bindings .................... "])
if test "x$HAVE_GOBJECT_TRUE" = "x"; then echo "yes"; else echo "no"; fi if test "x$HAVE_GOBJECT_TRUE" = "x"; then echo "yes"; else echo "no"; fi
AS_ECHO_N(["gobject introspection ............... "]) AS_ECHO_N(["gobject introspection ............... "])
if test "x$HAVE_INTROSPECTION_TRUE" = "x"; then echo "yes"; else echo "no"; fi if test "x$HAVE_INTROSPECTION_TRUE" = "x"; then echo "yes"; else echo "no"; fi
AS_ECHO_N(["bash completion ..................... "])
if test "x$HAVE_BASH_COMPLETION_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo echo
echo "If any optional component is configured 'no' when you expected 'yes'" echo "If any optional component is configured 'no' when you expected 'yes'"
echo "then you should check the preceding messages." echo "then you should check the preceding messages."

View File

@@ -47,7 +47,6 @@ EXTRA_DIST = \
$(BUILT_SOURCES) \ $(BUILT_SOURCES) \
rc_protocol.x \ rc_protocol.x \
guestfish.pod \ guestfish.pod \
libguestfs-bash-completion.sh \
libguestfs-tools.conf \ libguestfs-tools.conf \
virt-copy-in \ virt-copy-in \
virt-copy-out \ virt-copy-out \
@@ -243,11 +242,6 @@ stamp-virt-tar-out.pod: virt-tar-out.pod
toolsconfdir = $(sysconfdir) toolsconfdir = $(sysconfdir)
toolsconf_DATA = libguestfs-tools.conf toolsconf_DATA = libguestfs-tools.conf
# Bash completion script.
bashcompletiondir = $(sysconfdir)/bash_completion.d
bashcompletion_DATA = libguestfs-bash-completion.sh
# Tests. # Tests.
TESTS_ENVIRONMENT = $(top_builddir)/run --test TESTS_ENVIRONMENT = $(top_builddir)/run --test

View File

@@ -1,326 +0,0 @@
# guestfish, guestmount and libguestfs tools bash completion script
# Copyright (C) 2010-2013 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# To use this script, copy it into /etc/bash_completion.d/ if
# that directory exists.
#
# If your distro does not have that directory (or if you cannot or
# do not want to install this in /etc) then you can copy this to
# somewhere in your home directory such as
# ~/.libguestfs-bash-completion.sh and add this to your .bashrc:
# source ~/.libguestfs-bash-completion.sh
# This was "inspired" by the git bash completion script written by
# Shawn O. Pearce.
_guestfs_complete ()
{
local fn="$1" cmd="$2"
complete -o bashdefault -o default -F "$fn" "$cmd" 2>/dev/null \
|| complete -o default -F "$fn" "$cmd"
}
# List all local libvirt domains.
_guestfs_virsh_list ()
{
local flag_ro=$1 flags
if [ "$flag_ro" -eq 1 ]; then
flags="--all"
else
flags="--inactive"
fi
virsh list $flags | head -n -1 | tail -n +3 | awk '{print $2}'
}
# guestfish
_guestfs_guestfish ()
{
local longopts flag_a=0 flag_d=0 flag_ro=0 c=1 word cmds doms
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
word="${COMP_WORDS[c]}"
case "$word" in
-r|--ro) flag_ro=1 ;;
esac
c=$((++c))
done
# Check for flags preceeding the current position.
c=$(($COMP_CWORD-1))
if [ "$c" -gt 0 ]; then
word="${COMP_WORDS[$c]}"
case "$word" in
-a|--add) flag_a=1 ;;
-d|--domain) flag_d=1 ;;
esac
fi
# Now try to complete the current word.
word="${COMP_WORDS[COMP_CWORD]}"
case "$word" in
--*)
# --options
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$longopts" -- "$word")) ;;
*)
if [ "$flag_d" -eq 1 ]; then
# -d <domain>
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$doms" -- "$word"))
elif [ "$flag_a" -eq 1 ]; then
# -a <file>
COMPREPLY=(${COMPREPLY[@]:-} $(compgen "$word"))
else
# A guestfish command.
cmds=$(guestfish -h| head -n -1 | tail -n +2 | awk '{print $1}')
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$cmds" -- "$word"))
fi ;;
esac
}
_guestfs_complete _guestfs_guestfish guestfish
# guestmount
_guestfs_guestmount ()
{
local longopts flag_d=0 flag_ro=0 c=1 word doms
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
word="${COMP_WORDS[c]}"
case "$word" in
-r|--ro) flag_ro=1 ;;
esac
c=$((++c))
done
# Check for flags preceeding the current position.
c=$(($COMP_CWORD-1))
if [ "$c" -gt 0 ]; then
word="${COMP_WORDS[$c]}"
case "$word" in
-d|--domain) flag_d=1 ;;
esac
fi
# Now try to complete the current word.
word="${COMP_WORDS[COMP_CWORD]}"
case "$word" in
--*)
# --options
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$longopts" -- "$word")) ;;
*)
if [ "$flag_d" -eq 1 ]; then
# -d <domain>
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$doms" -- "$word"))
else
COMPREPLY=(${COMPREPLY[@]:-} $(compgen "$word"))
fi ;;
esac
}
_guestfs_complete _guestfs_guestmount guestmount
# virt-rescue (similar to guestmount)
_guestfs_virt_rescue ()
{
local longopts flag_d=0 flag_ro=0 c=1 word doms
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
word="${COMP_WORDS[c]}"
case "$word" in
-r|--ro) flag_ro=1 ;;
esac
c=$((++c))
done
# Check for flags preceeding the current position.
c=$(($COMP_CWORD-1))
if [ "$c" -gt 0 ]; then
word="${COMP_WORDS[$c]}"
case "$word" in
-d|--domain) flag_d=1 ;;
esac
fi
# Now try to complete the current word.
word="${COMP_WORDS[COMP_CWORD]}"
case "$word" in
--*)
# --options
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$longopts" -- "$word")) ;;
*)
if [ "$flag_d" -eq 1 ]; then
# -d <domain>
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$doms" -- "$word"))
else
COMPREPLY=(${COMPREPLY[@]:-} $(compgen "$word"))
fi ;;
esac
}
_guestfs_complete _guestfs_virt_rescue virt-rescue
# Tools like virt-cat, virt-edit etc which have an implicit --ro or --rw.
_guestfs_virttools ()
{
local longopts="$1" flag_ro="$2" flag_d=0 c word doms
# Check for flags preceeding the current position.
c=$(($COMP_CWORD-1))
if [ "$c" -gt 0 ]; then
word="${COMP_WORDS[$c]}"
case "$word" in
-d|--domain) flag_d=1 ;;
esac
fi
# Now try to complete the current word.
word="${COMP_WORDS[COMP_CWORD]}"
case "$word" in
--*)
# --options
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$longopts" -- "$word")) ;;
*)
if [ "$flag_d" -eq 1 ]; then
# -d <domain>
doms=$(_guestfs_virsh_list "$flag_ro")
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$doms" -- "$word"))
else
COMPREPLY=(${COMPREPLY[@]:-} $(compgen "$word"))
fi ;;
esac
}
_guestfs_virt_alignment_scan ()
{
_guestfs_virttools "$(virt-alignment-scan --long-options)" 1
}
_guestfs_complete _guestfs_virt_alignment_scan virt-alignment-scan
_guestfs_virt_cat ()
{
_guestfs_virttools "$(virt-cat --long-options)" 1
}
_guestfs_complete _guestfs_virt_cat virt-cat
_guestfs_virt_df ()
{
_guestfs_virttools "$(virt-df --long-options)" 1
}
_guestfs_complete _guestfs_virt_df virt-df
_guestfs_virt_edit ()
{
_guestfs_virttools "$(virt-edit --long-options)" 0
}
_guestfs_complete _guestfs_virt_edit virt-edit
_guestfs_virt_filesystems ()
{
_guestfs_virttools "$(virt-filesystems --long-options)" 1
}
_guestfs_complete _guestfs_virt_filesystems virt-filesystems
_guestfs_virt_format ()
{
_guestfs_virttools "$(virt-format --long-options)" 0
}
_guestfs_complete _guestfs_virt_format virt-format
_guestfs_virt_inspector ()
{
_guestfs_virttools "$(virt-inspector --long-options)" 1
}
_guestfs_complete _guestfs_virt_inspector virt-inspector
_guestfs_virt_ls ()
{
_guestfs_virttools "$(virt-ls --long-options)" 1
}
_guestfs_complete _guestfs_virt_ls virt-ls
_guestfs_virt_sysprep ()
{
_guestfs_virttools "$(virt-sysprep --long-options)" 0
}
_guestfs_complete _guestfs_virt_sysprep virt-sysprep
# Where we can only complete --options.
_guestfs_options_only ()
{
local longopts="$1" word
# Try to complete the current word.
word="${COMP_WORDS[COMP_CWORD]}"
case "$word" in
--*)
# --options
COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W "$longopts" -- "$word")) ;;
*)
COMPREPLY=(${COMPREPLY[@]:-} $(compgen "$word"))
esac
}
_guestfs_virt_resize ()
{
_guestfs_options_only "$(virt-resize --long-options)"
}
_guestfs_complete _guestfs_virt_resize virt-resize
_guestfs_virt_sparsify ()
{
_guestfs_options_only "$(virt-sparsify --long-options)"
}
_guestfs_complete _guestfs_virt_sparsify virt-sparsify
# Not done:
# - virt-copy-in
# - virt-copy-out
# - virt-list-filesystems
# - virt-list-partitions
# - virt-make-fs
# - virt-tar
# - virt-tar-in
# - virt-tar-out
# - virt-win-reg
# EOF

View File

@@ -3894,6 +3894,10 @@ L<virt-alignment-scan(1)> command and documentation.
The libguestfs appliance, build scripts and so on. The libguestfs appliance, build scripts and so on.
=item C<bash>
Bash tab-completion scripts.
=item C<build-aux> =item C<build-aux>
Various build scripts used by autotools. Various build scripts used by autotools.