libguestfs/0001-Use-new-style-demand-loaded-bash-completion-scripts.patch

966 lines
28 KiB
Diff
Raw Normal View History

From 3c34db980868057916d6fe2489ad8906660e83d6 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 28 Mar 2013 17:13:34 +0000
Subject: [PATCH] Use new-style demand-loaded bash-completion scripts.
---
.gitignore | 9 +
Makefile.am | 3 +
README | 2 +
bash/Makefile.am | 68 ++++++++
bash/README | 3 +
bash/guestfish | 72 ++++++++
bash/guestmount | 67 ++++++++
bash/virt-alignment-scan | 108 ++++++++++++
bash/virt-rescue | 67 ++++++++
bash/virt-resize | 46 ++++++
configure.ac | 16 ++
fish/Makefile.am | 6 -
fish/libguestfs-bash-completion.sh | 326 -------------------------------------
src/guestfs.pod | 4 +
14 files changed, 465 insertions(+), 332 deletions(-)
create mode 100644 bash/Makefile.am
create mode 100644 bash/README
create mode 100644 bash/guestfish
create mode 100644 bash/guestmount
create mode 100644 bash/virt-alignment-scan
create mode 100644 bash/virt-rescue
create mode 100644 bash/virt-resize
delete mode 100644 fish/libguestfs-bash-completion.sh
diff --git a/.gitignore b/.gitignore
index fc03cd8..c4f488e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,6 +45,15 @@ Makefile.in
/appliance/stamp-supermin
/appliance/supermin.d
/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
/cat/stamp-virt-*.pod
/cat/virt-cat
diff --git a/Makefile.am b/Makefile.am
index 050c8b6..fef3421 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -69,6 +69,9 @@ SUBDIRS += fish
# virt-tools in C.
SUBDIRS += align cat df edit format inspector rescue
+# bash-completion
+SUBDIRS += bash
+
# Language bindings.
if HAVE_PERL
SUBDIRS += perl perl/examples
diff --git a/README b/README
index 5284d58..59abc70 100644
--- a/README
+++ b/README
@@ -207,6 +207,8 @@ The full requirements are described below.
| XML::XPath::XMLParser | O | Perl module used by some virt-* tools. |
+--------------+-------------+---+-----------------------------------------+
| perl-libintl | | O | Perl module for localization. |
++--------------+-------------+---+-----------------------------------------+
+| bash-completion | O | For tab-completion of commands in bash. |
+==============+=============+===+=========================================+
R = Required
O = Optional
diff --git a/bash/Makefile.am b/bash/Makefile.am
new file mode 100644
index 0000000..65f38cb
--- /dev/null
+++ b/bash/Makefile.am
@@ -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
diff --git a/bash/README b/bash/README
new file mode 100644
index 0000000..db7d7bb
--- /dev/null
+++ b/bash/README
@@ -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.
diff --git a/bash/guestfish b/bash/guestfish
new file mode 100644
index 0000000..d342578
--- /dev/null
+++ b/bash/guestfish
@@ -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
diff --git a/bash/guestmount b/bash/guestmount
new file mode 100644
index 0000000..fa36c60
--- /dev/null
+++ b/bash/guestmount
@@ -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
diff --git a/bash/virt-alignment-scan b/bash/virt-alignment-scan
new file mode 100644
index 0000000..e9e65bd
--- /dev/null
+++ b/bash/virt-alignment-scan
@@ -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
diff --git a/bash/virt-rescue b/bash/virt-rescue
new file mode 100644
index 0000000..5e5cfd0
--- /dev/null
+++ b/bash/virt-rescue
@@ -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
diff --git a/bash/virt-resize b/bash/virt-resize
new file mode 100644
index 0000000..d9770dc
--- /dev/null
+++ b/bash/virt-resize
@@ -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
diff --git a/configure.ac b/configure.ac
index 0c72621..61a9ebb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1483,6 +1483,19 @@ m4_ifdef([GTK_DOC_CHECK], [
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.
MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
AC_SUBST(MAX_PROC_NR)
@@ -1508,6 +1521,7 @@ AC_CONFIG_FILES([run],
AC_CONFIG_FILES([Makefile
align/Makefile
appliance/Makefile
+ bash/Makefile
cat/Makefile
csharp/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
AS_ECHO_N(["gobject introspection ............... "])
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 "If any optional component is configured 'no' when you expected 'yes'"
echo "then you should check the preceding messages."
diff --git a/fish/Makefile.am b/fish/Makefile.am
index 5aa6528..d1b4701 100644
--- a/fish/Makefile.am
+++ b/fish/Makefile.am
@@ -47,7 +47,6 @@ EXTRA_DIST = \
$(BUILT_SOURCES) \
rc_protocol.x \
guestfish.pod \
- libguestfs-bash-completion.sh \
libguestfs-tools.conf \
virt-copy-in \
virt-copy-out \
@@ -243,11 +242,6 @@ stamp-virt-tar-out.pod: virt-tar-out.pod
toolsconfdir = $(sysconfdir)
toolsconf_DATA = libguestfs-tools.conf
-# Bash completion script.
-
-bashcompletiondir = $(sysconfdir)/bash_completion.d
-bashcompletion_DATA = libguestfs-bash-completion.sh
-
# Tests.
TESTS_ENVIRONMENT = $(top_builddir)/run --test
diff --git a/fish/libguestfs-bash-completion.sh b/fish/libguestfs-bash-completion.sh
deleted file mode 100644
index 452fdc2..0000000
--- a/fish/libguestfs-bash-completion.sh
+++ /dev/null
@@ -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
diff --git a/src/guestfs.pod b/src/guestfs.pod
index 53cabde..263fccd 100644
--- a/src/guestfs.pod
+++ b/src/guestfs.pod
@@ -3894,6 +3894,10 @@ L<virt-alignment-scan(1)> command and documentation.
The libguestfs appliance, build scripts and so on.
+=item C<bash>
+
+Bash tab-completion scripts.
+
=item C<build-aux>
Various build scripts used by autotools.
--
1.8.1.4