[Bash-completion-commits] [SCM] bash-completion branch, master, updated. eced7126a30bb62c49924f0b2dc61f0131317c00

Guillaume Rousse guillomovitch at zarb.org
Sun May 17 20:13:20 UTC 2009


The following commit has been merged in the master branch:
commit 36b217e5b48d9f9f61a40f828f6a774f4f4c94ca
Author: Guillaume Rousse <guillomovitch at zarb.org>
Date:   Sun May 17 21:59:04 2009 +0200

    split lvm completion

diff --git a/bash_completion b/bash_completion
index 4a7f09a..a14c584 100644
--- a/bash_completion
+++ b/bash_completion
@@ -6991,1132 +6991,6 @@ have dhclient && _dhclient()
 } &&
 complete -F _dhclient dhclient
 
-# lvm(8) completion
-#
-have lvm && {
-_volumegroups()
-{
-	COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \
-	    sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- $cur ) )
-}
-
-_physicalvolumes()
-{
-	COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \
-	    sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- $cur ) )
-}
-
-_logicalvolumes()
-{
-	COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \
-	    sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- $cur ) )
-}
-
-_units()
-{
-	COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- $cur ) )
-}
-
-_sizes()
-{
-	COMPREPLY=( $( compgen -W 'k K m M g G t T' -- $cur ) )
-}
-
-_args()
-{
-	args=0
-	if [[ "${COMP_WORDS[0]}" == lvm ]]; then
-		offset=2
-	else
-		offset=1
-	fi
-	for (( i=$offset; i < COMP_CWORD; i++ )); do
-		if [[ "${COMP_WORDS[i]}" != -* ]]; then
-			args=$(($args + 1))
-		fi
-	done
-}
-
-_lvmdiskscan()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -h -? --help -l \
-			--lvmpartition -v --verbose --version' -- $cur ) )
-	fi
-}
-complete -F _lvmdiskscan lvmdiskscan
-
-_pvscan()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -e \
-			--exported -n --novolumegroup -h -? \
-			--help --ignorelockingfailure -P \
-			--partial -s --short -u --uuid -v \
-			--verbose --version' -- $cur ) )
-	fi
-}
-complete -F _pvscan pvscan
-
-_pvs()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(o|O|-options|-sort))
-			COMPREPLY=( $( compgen -W 'pv_fmt pv_uuid \
-				pv_size pv_free pv_used pv_name \
-				pv_attr pv_pe_count \
-				pv_pe_alloc_count' -- $cur ) )
-			return 0
-			;;
-		--units)
-			_units
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '--aligned -a --all -d --debug \
-			-h -? --help --ignorelockingfailure --noheadings \
-			--nosuffix -o --options -O --sort \
-			--separator --unbuffered --units \
-			-v --verbose --version' -- $cur ) )
-	else
-		_physicalvolumes
-	fi
-}
-complete -F _pvs pvs
-
-_pvdisplay()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		--units)
-			_units
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
-			-v --verbose -d --debug -h --help --version' -- $cur ) )
-	else
-		_physicalvolumes
-	fi
-}
-complete -F _pvdisplay pvdisplay
-
-_pvchange()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|x|-autobackup|--allocatable))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-a --all -A --autobackup \
-			-d --debug -h --help -t --test -u --uuid -x \
-			--allocatable -v --verbose --addtag --deltag \
-			--version' -- $cur ) )
-	else
-		_physicalvolumes
-	fi
-}
-complete -F _pvchange pvchange
-
-_pvcreate()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		--restorefile)
-			_filedir
-			return 0
-			;;
-		-@(M|-metadatatype))
-			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
-			return 0
-			;;
-		--metadatacopies)
-			COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )
-			return 0
-			;;
-		--@(metadatasize|setphysicalvolumesize))
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '--restorefile -d --debug -f \
-			--force -h -? --help --labelsector -M --metadatatype \
-			--metadatacopies --metadatasize \
-			--setphysicalvolumesize -t --test -u --uuid uuid -v \
-			--verbose -y --yes --version' -- $cur ) )
-	else
-		_physicalvolumes
-	fi
-}
-complete -F _pvcreate pvcreate
-
-_pvmove()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(n|-name))
-			_logicalvolumes
-			return 0
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '--abort -A --autobackup \
-			-b --background -d --debug -f --force -h -? \
-			--help -i --interval -t --test -v --verbose \
-			--version -n --name' -- $cur ) )
-	else
-		_physicalvolumes
-	fi
-}
-complete -F _pvmove pvmove
-
-_pvremove()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -f --force -h -? \
-			--help -y --yes -t --test -v --verbose \
-			--version' -- $cur ) )
-	else
-		_physicalvolumes
-	fi
-}
-complete -F _pvremove pvremove
-
-_vgscan()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -h --help \
-			--ignorelockingfailure --mknodes -P \
-			--partial -v --verbose --version' -- $cur ) )
-	fi
-}
-complete -F _vgscan vgscan
-
-_vgs()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(o|O|-options|-sort))
-			COMPREPLY=( $( compgen -W 'vg_fmt vg_uuid vg_name \
-				vg_attr vg_size vg_free vg_sysid \
-				vg_extent_size vg_extent_count vg_free_count \
-				max_lv max_pv pv_count lv_count snap_count \
-				vg_seqno' -- $cur ) )
-			return 0
-			;;
-		--units)
-			_units
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '--aligned -d --debug \
-			-h --help --ignorelockingfailure --noheadings \
-			--nosuffix -o --options -O --sort -P --partial \
-			--separator --unbuffered --units \
-			-v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgs vgs
-
-_vgdisplay()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		--units)
-			_units
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
-			-P --partial -A --activevolumegroups -v --verbose \
-			-d --debug -h --help --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgdisplay vgdisplay
-
-_vgchange()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(a|A|x|-available|-autobackup|-resizeable))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -P \
-			--partial -d --debug -h --help --ignorelockingfailure \
-			-t --test -u --uuid -v --verbose --version -a \
-			--available -x --resizeable -l --logicalvolume \
-			--addtag --deltag' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgchange vgchange
-
-_vgcreate()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(M|-metadatatype))
-			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
-			return 0
-			;;
-		-@(s|-physicalextentsize))
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup --addtag \
-			--alloc -d --debug -h --help -l --maxlogicalvolumes \
-			-M --metadatatype -p --maxphysicalvolumes -s \
-			--physicalextentsize -t --test -v --verbose \
-			--version' -- $cur ) )
-	else
-		_args
-		if [ $args -eq 0 ]; then
-			_volumegroups
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _vgcreate vgcreate
-
-_vgremove()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -h --help -t --test \
-		-v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgremove vgremove
-
-_vgrename()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
-			-? --help -t --test -v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgrename vgrename
-
-_vgreduce()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-a --all -A --autobackup -d \
-			--debug -h --help --removemissing -t --test -v \
-			--verbose --version' -- $cur ) )
-
-	else
-		_args
-		if [ $args -eq 0 ]; then
-			_volumegroups
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _vgreduce vgreduce
-
-_vgextend()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(L|-size))
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
-			-? --help -t --test -v --verbose --version' -- $cur ) )
-	else
-		_args
-		if [ $args -eq 0 ]; then
-			_volumegroups
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _vgextend vgextend
-
-_vgport()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-a --all -d --debug -h \
-			-? --help -v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgport vgimport vgexport
-
-_vgck()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -h \
-			-? --help -v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgck vgck
-
-_vgconvert()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(M|-metadatatype))
-			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
-			return 0
-			;;
-		--metadatacopies)
-			COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )
-			return 0
-			;;
-		--metadatasize)
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -h --help --labelsector \
-			-M --metadatatype --metadatacopies --metadatasize \
-			-t --test -v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgconvert vgconvert
-
-_vgcfgbackup()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(f|-file))
-			_filedir
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -f --file -h --help \
-			--ignorelockingfailure -P --partial -v --verbose \
-			--version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgcfgbackup vgcfgbackup
-
-_vgcfgrestore()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(f|-file))
-			_filedir
-			return 0
-			;;
-		-@(M|-metadatatype))
-			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
-			return 0
-			;;
-		-@(n|-name))
-			_volumegroups
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -f --file -l --list \
-			-h --help -M --Metadatatype -n --name -t --test \
-			-v --verbose --version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgcfgrestore vgcfgrestore
-
-_vgmerge()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \
-			-h --help -l --list -t --test -v --verbose \
-			--version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgmerge vgmerge
-
-_vgsplit()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(M|-metadatatype))
-			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \
-			-h --help -l --list -M --metadatatype -t --test \
-			-v --verbose --version' -- $cur ) )
-	else
-		_args
-		if [ $args -eq 0 -o $args -eq 1 ]; then
-			_volumegroups
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _vgsplit vgsplit
-
-_vgmknodes()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-d --debug -h --help -v --verbose \
-			--version' -- $cur ) )
-	else
-		_volumegroups
-	fi
-}
-complete -F _vgmknodes vgmknodes
-
-_lvscan()
-{
-	local cur
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-b --blockdevice -d --debug \
-			-h -? --help --ignorelockingfailure -P \
-			--partial -v --verbose --version' -- $cur ) )
-	fi
-}
-complete -F _lvscan lvscan
-
-_lvs()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(o|O|-options|-sort))
-			COMPREPLY=( $( compgen -W 'lv_uuid lv_name \
-				lv_attr lv_minor lv_size seg_count \
-				origin snap_percent segtype stripes \
-				stripesize chunksize seg_start \
-				seg_size' -- $cur ) )
-			return 0
-			;;
-		--units)
-			_units
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '--aligned -d --debug \
-			-h --help --ignorelockingfailure --noheadings \
-			--nosuffix -o --options -O --sort -P --partial \
-			--segments --separator --unbuffered --units \
-			-v --verbose --version' -- $cur ) )
-	else
-		_logicalvolumes
-	fi
-}
-complete -F _lvs lvs
-
-_lvdisplay()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		--units)
-			_units
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
-			-P --partial -m --maps -v --verbose -d --debug -h \
-			--help --version' -- $cur ) )
-	else
-		_logicalvolumes
-	fi
-}
-complete -F _lvdisplay lvdisplay
-
-_lvchange()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(a|A|C|M|-available|-autobackup|-continguous|-persistent))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(p|-permission))
-			COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -a --available \
-			--addtag --alloc -C --contiguous -d --debug --deltag \
-			-f --force -h --help --ignorelockingfailure -M \
-			--persistent --major major --minor minor -P --partial \
-			-p --permission -r --readahead --refresh -t --test \
-			-v --verbose --version' -- $cur ) )
-	else
-		_logicalvolumes
-	fi
-}
-complete -F _lvchange lvchange
-
-_lvcreate()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|C|M|Z|-autobackup|-continguous|-persistent|-zero))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(L|-size))
-			_sizes
-			return 0
-			;;
-		-@(p|-permission))
-			COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )
-			return 0
-			;;
-		-@(n|-name))
-			_logicalvolumes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup --addtag --alloc \
-			-C --contiguous -d --debug -h -? --help -i --stripes \
-			-I --stripesize -l --extents -L --size -M --persistent \
-			--major --minor -n --name -p --permission -r \
-			--readahead -t --test --type -v --verbose -Z --zero \
-			--version' -- $cur ) )
-	else
-		_args
-		if [ $args -eq 0 ]; then
-			_volumegroups
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _lvcreate lvcreate
-
-_lvremove()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -f \
-			--force -h -?  --help -t --test -v --verbose \
-			--version' -- $cur ) )
-	else
-		_logicalvolumes
-	fi
-}
-complete -F _lvremove lvremove
-
-_lvrename()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
-			-? --help -t --test -v --verbose --version' -- $cur ) )
-	else
-		_logicalvolumes
-	fi
-}
-complete -F _lvrename lvrename
-
-_lvreduce()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(L|-size))
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup -d \
-			--debug -f --force -h --help -l --extents \
-			-L --size -n --nofsck -r --resizefs -t --test \
-			-v --verbose --version' -- $cur ) )
-	else
-		_logicalvolumes
-	fi
-}
-complete -F _lvreduce lvreduce
-
-_lvresize()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(L|-size))
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \
-			--debug -h --help -i --stripes -I --stripesize \
-			-l --extents -L --size -n --nofsck -r --resizefs \
-			-t --test --type -v --verbose --version' -- $cur ) )
-	else
-		_args
-		if [ $args -eq 0 ]; then
-			_logicalvolumes
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _lvresize lvresize
-
-_lvextend()
-{
-	local cur prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-	prev=${COMP_WORDS[COMP_CWORD-1]}
-
-	case "$prev" in
-		-@(A|-autobackup))
-			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
-			return 0
-			;;
-		-@(L|-size))
-			_sizes
-			return 0
-			;;
-	esac
-
-	if [[ "$cur" == -* ]]; then
-		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \
-			--debug -h --help -i --stripes -I --stripesize \
-			-l --extents -L --size -n --nofsck -r --resizefs \
-			-t --test --type -v --verbose --version' -- $cur ) )
-	else
-		_args
-		if [ $args -eq 0 ]; then
-			_logicalvolumes
-		else
-			_physicalvolumes
-		fi
-	fi
-}
-complete -F _lvextend lvextend
-
-_lvm()
-{
-	local prev
-
-	COMPREPLY=()
-	cur=`_get_cword`
-
-	if [ $COMP_CWORD -eq 1 ]; then
-		COMPREPLY=( $( compgen -W 'dumpconfig help lvchange \
-			lvcreate lvdisplay lvextend lvmchange \
-			lvmdiskscan lvmsadc lvmsar lvreduce \
-			lvremove lvrename lvresize lvs lvscan \
-			pvchange pvcreate pvdata pvdisplay pvmove \
-			pvremove pvresize pvs pvscan vgcfgbackup \
-			vgcfgrestore vgchange vgck vgconvert \
-			vgcreate vgdisplay vgexport vgextend \
-			vgimport vgmerge vgmknodes vgreduce \
-			vgremove vgrename vgs vgscan vgsplit \
-			version' -- $cur ) )
-	else
-		case ${COMP_WORDS[1]} in
-			pvchange)
-				_pvchange
-				;;
-			pvcreate)
-				_pvcreate
-				;;
-			pvdisplay)
-				_pvdisplay
-				;;
-			pvmove)
-				_pvmove
-				;;
-			pvremove)
-				_pvremove
-				;;
-			pvresize)
-				_pvresize
-				;;
-			pvs)
-				_pvs
-				;;
-			pvscan)
-				_pvscan
-				;;
-			vgcfgbackup)
-				_vgcfgbackup
-				;;
-			vgcfgrestore)
-				_vgcfgrestore
-				;;
-			vgchange)
-				_vgchange
-				;;
-			vgck)
-				_vgck
-				;;
-			vgconvert)
-				_vgconvert
-				;;
-			vgcreate)
-				_vgcreate
-				;;
-			vgdisplay)
-				_vgdisplay
-				;;
-			vgexport)
-				_vgexport
-				;;
-			vgextend)
-				_vgextend
-				;;
-			vgimport)
-				_vgimport
-				;;
-			vgmerge)
-				_vgmerge
-				;;
-			vgmknodes)
-				_vgmknodes
-				;;
-			vgreduce)
-				_vgreduce
-				;;
-			vgremove)
-				_vgremove
-				;;
-			vgrename)
-				_vgrename
-				;;
-			vgs)
-				_vgs
-				;;
-			vgscan)
-				_vgscan
-				;;
-			vgsplit)
-				_vgsplit
-				;;
-			lvchange)
-				_lvchange
-				;;
-			lvcreate)
-				_lvcreate
-				;;
-			lvdisplay)
-				_lvdisplay
-				;;
-			lvextend)
-				_lvextend
-				;;
-			lvreduce)
-				_lvreduce
-				;;
-			lvremove)
-				_lvremove
-				;;
-			lvrename)
-				_lvrename
-				;;
-			lvresize)
-				_lvresize
-				;;
-			lvs)
-				_lvs
-				;;
-			lvscan)
-				_lvscan
-				;;
-		esac
-	fi
-}
-complete -F _lvm lvm
-}
-
 # pkgconfig(1) completion
 #
 have pkg-config &&
diff --git a/contrib/lvm b/contrib/lvm
new file mode 100644
index 0000000..4049a2a
--- /dev/null
+++ b/contrib/lvm
@@ -0,0 +1,1128 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for lvm
+
+have lvm && {
+_volumegroups()
+{
+	COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \
+	    sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- $cur ) )
+}
+
+_physicalvolumes()
+{
+	COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \
+	    sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- $cur ) )
+}
+
+_logicalvolumes()
+{
+	COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \
+	    sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- $cur ) )
+}
+
+_units()
+{
+	COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- $cur ) )
+}
+
+_sizes()
+{
+	COMPREPLY=( $( compgen -W 'k K m M g G t T' -- $cur ) )
+}
+
+_args()
+{
+	args=0
+	if [[ "${COMP_WORDS[0]}" == lvm ]]; then
+		offset=2
+	else
+		offset=1
+	fi
+	for (( i=$offset; i < COMP_CWORD; i++ )); do
+		if [[ "${COMP_WORDS[i]}" != -* ]]; then
+			args=$(($args + 1))
+		fi
+	done
+}
+
+_lvmdiskscan()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -h -? --help -l \
+			--lvmpartition -v --verbose --version' -- $cur ) )
+	fi
+}
+complete -F _lvmdiskscan lvmdiskscan
+
+_pvscan()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -e \
+			--exported -n --novolumegroup -h -? \
+			--help --ignorelockingfailure -P \
+			--partial -s --short -u --uuid -v \
+			--verbose --version' -- $cur ) )
+	fi
+}
+complete -F _pvscan pvscan
+
+_pvs()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(o|O|-options|-sort))
+			COMPREPLY=( $( compgen -W 'pv_fmt pv_uuid \
+				pv_size pv_free pv_used pv_name \
+				pv_attr pv_pe_count \
+				pv_pe_alloc_count' -- $cur ) )
+			return 0
+			;;
+		--units)
+			_units
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '--aligned -a --all -d --debug \
+			-h -? --help --ignorelockingfailure --noheadings \
+			--nosuffix -o --options -O --sort \
+			--separator --unbuffered --units \
+			-v --verbose --version' -- $cur ) )
+	else
+		_physicalvolumes
+	fi
+}
+complete -F _pvs pvs
+
+_pvdisplay()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		--units)
+			_units
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
+			-v --verbose -d --debug -h --help --version' -- $cur ) )
+	else
+		_physicalvolumes
+	fi
+}
+complete -F _pvdisplay pvdisplay
+
+_pvchange()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|x|-autobackup|--allocatable))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-a --all -A --autobackup \
+			-d --debug -h --help -t --test -u --uuid -x \
+			--allocatable -v --verbose --addtag --deltag \
+			--version' -- $cur ) )
+	else
+		_physicalvolumes
+	fi
+}
+complete -F _pvchange pvchange
+
+_pvcreate()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		--restorefile)
+			_filedir
+			return 0
+			;;
+		-@(M|-metadatatype))
+			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
+			return 0
+			;;
+		--metadatacopies)
+			COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )
+			return 0
+			;;
+		--@(metadatasize|setphysicalvolumesize))
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '--restorefile -d --debug -f \
+			--force -h -? --help --labelsector -M --metadatatype \
+			--metadatacopies --metadatasize \
+			--setphysicalvolumesize -t --test -u --uuid uuid -v \
+			--verbose -y --yes --version' -- $cur ) )
+	else
+		_physicalvolumes
+	fi
+}
+complete -F _pvcreate pvcreate
+
+_pvmove()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(n|-name))
+			_logicalvolumes
+			return 0
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '--abort -A --autobackup \
+			-b --background -d --debug -f --force -h -? \
+			--help -i --interval -t --test -v --verbose \
+			--version -n --name' -- $cur ) )
+	else
+		_physicalvolumes
+	fi
+}
+complete -F _pvmove pvmove
+
+_pvremove()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -f --force -h -? \
+			--help -y --yes -t --test -v --verbose \
+			--version' -- $cur ) )
+	else
+		_physicalvolumes
+	fi
+}
+complete -F _pvremove pvremove
+
+_vgscan()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -h --help \
+			--ignorelockingfailure --mknodes -P \
+			--partial -v --verbose --version' -- $cur ) )
+	fi
+}
+complete -F _vgscan vgscan
+
+_vgs()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(o|O|-options|-sort))
+			COMPREPLY=( $( compgen -W 'vg_fmt vg_uuid vg_name \
+				vg_attr vg_size vg_free vg_sysid \
+				vg_extent_size vg_extent_count vg_free_count \
+				max_lv max_pv pv_count lv_count snap_count \
+				vg_seqno' -- $cur ) )
+			return 0
+			;;
+		--units)
+			_units
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '--aligned -d --debug \
+			-h --help --ignorelockingfailure --noheadings \
+			--nosuffix -o --options -O --sort -P --partial \
+			--separator --unbuffered --units \
+			-v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgs vgs
+
+_vgdisplay()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		--units)
+			_units
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
+			-P --partial -A --activevolumegroups -v --verbose \
+			-d --debug -h --help --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgdisplay vgdisplay
+
+_vgchange()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(a|A|x|-available|-autobackup|-resizeable))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -P \
+			--partial -d --debug -h --help --ignorelockingfailure \
+			-t --test -u --uuid -v --verbose --version -a \
+			--available -x --resizeable -l --logicalvolume \
+			--addtag --deltag' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgchange vgchange
+
+_vgcreate()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(M|-metadatatype))
+			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
+			return 0
+			;;
+		-@(s|-physicalextentsize))
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup --addtag \
+			--alloc -d --debug -h --help -l --maxlogicalvolumes \
+			-M --metadatatype -p --maxphysicalvolumes -s \
+			--physicalextentsize -t --test -v --verbose \
+			--version' -- $cur ) )
+	else
+		_args
+		if [ $args -eq 0 ]; then
+			_volumegroups
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _vgcreate vgcreate
+
+_vgremove()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -h --help -t --test \
+		-v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgremove vgremove
+
+_vgrename()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
+			-? --help -t --test -v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgrename vgrename
+
+_vgreduce()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-a --all -A --autobackup -d \
+			--debug -h --help --removemissing -t --test -v \
+			--verbose --version' -- $cur ) )
+
+	else
+		_args
+		if [ $args -eq 0 ]; then
+			_volumegroups
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _vgreduce vgreduce
+
+_vgextend()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(L|-size))
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
+			-? --help -t --test -v --verbose --version' -- $cur ) )
+	else
+		_args
+		if [ $args -eq 0 ]; then
+			_volumegroups
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _vgextend vgextend
+
+_vgport()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-a --all -d --debug -h \
+			-? --help -v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgport vgimport vgexport
+
+_vgck()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -h \
+			-? --help -v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgck vgck
+
+_vgconvert()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(M|-metadatatype))
+			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
+			return 0
+			;;
+		--metadatacopies)
+			COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )
+			return 0
+			;;
+		--metadatasize)
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -h --help --labelsector \
+			-M --metadatatype --metadatacopies --metadatasize \
+			-t --test -v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgconvert vgconvert
+
+_vgcfgbackup()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(f|-file))
+			_filedir
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -f --file -h --help \
+			--ignorelockingfailure -P --partial -v --verbose \
+			--version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgcfgbackup vgcfgbackup
+
+_vgcfgrestore()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(f|-file))
+			_filedir
+			return 0
+			;;
+		-@(M|-metadatatype))
+			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
+			return 0
+			;;
+		-@(n|-name))
+			_volumegroups
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -f --file -l --list \
+			-h --help -M --Metadatatype -n --name -t --test \
+			-v --verbose --version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgcfgrestore vgcfgrestore
+
+_vgmerge()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \
+			-h --help -l --list -t --test -v --verbose \
+			--version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgmerge vgmerge
+
+_vgsplit()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(M|-metadatatype))
+			COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \
+			-h --help -l --list -M --metadatatype -t --test \
+			-v --verbose --version' -- $cur ) )
+	else
+		_args
+		if [ $args -eq 0 -o $args -eq 1 ]; then
+			_volumegroups
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _vgsplit vgsplit
+
+_vgmknodes()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-d --debug -h --help -v --verbose \
+			--version' -- $cur ) )
+	else
+		_volumegroups
+	fi
+}
+complete -F _vgmknodes vgmknodes
+
+_lvscan()
+{
+	local cur
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-b --blockdevice -d --debug \
+			-h -? --help --ignorelockingfailure -P \
+			--partial -v --verbose --version' -- $cur ) )
+	fi
+}
+complete -F _lvscan lvscan
+
+_lvs()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(o|O|-options|-sort))
+			COMPREPLY=( $( compgen -W 'lv_uuid lv_name \
+				lv_attr lv_minor lv_size seg_count \
+				origin snap_percent segtype stripes \
+				stripesize chunksize seg_start \
+				seg_size' -- $cur ) )
+			return 0
+			;;
+		--units)
+			_units
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '--aligned -d --debug \
+			-h --help --ignorelockingfailure --noheadings \
+			--nosuffix -o --options -O --sort -P --partial \
+			--segments --separator --unbuffered --units \
+			-v --verbose --version' -- $cur ) )
+	else
+		_logicalvolumes
+	fi
+}
+complete -F _lvs lvs
+
+_lvdisplay()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		--units)
+			_units
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
+			-P --partial -m --maps -v --verbose -d --debug -h \
+			--help --version' -- $cur ) )
+	else
+		_logicalvolumes
+	fi
+}
+complete -F _lvdisplay lvdisplay
+
+_lvchange()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(a|A|C|M|-available|-autobackup|-continguous|-persistent))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(p|-permission))
+			COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -a --available \
+			--addtag --alloc -C --contiguous -d --debug --deltag \
+			-f --force -h --help --ignorelockingfailure -M \
+			--persistent --major major --minor minor -P --partial \
+			-p --permission -r --readahead --refresh -t --test \
+			-v --verbose --version' -- $cur ) )
+	else
+		_logicalvolumes
+	fi
+}
+complete -F _lvchange lvchange
+
+_lvcreate()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|C|M|Z|-autobackup|-continguous|-persistent|-zero))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(L|-size))
+			_sizes
+			return 0
+			;;
+		-@(p|-permission))
+			COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )
+			return 0
+			;;
+		-@(n|-name))
+			_logicalvolumes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup --addtag --alloc \
+			-C --contiguous -d --debug -h -? --help -i --stripes \
+			-I --stripesize -l --extents -L --size -M --persistent \
+			--major --minor -n --name -p --permission -r \
+			--readahead -t --test --type -v --verbose -Z --zero \
+			--version' -- $cur ) )
+	else
+		_args
+		if [ $args -eq 0 ]; then
+			_volumegroups
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _lvcreate lvcreate
+
+_lvremove()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -f \
+			--force -h -?  --help -t --test -v --verbose \
+			--version' -- $cur ) )
+	else
+		_logicalvolumes
+	fi
+}
+complete -F _lvremove lvremove
+
+_lvrename()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
+			-? --help -t --test -v --verbose --version' -- $cur ) )
+	else
+		_logicalvolumes
+	fi
+}
+complete -F _lvrename lvrename
+
+_lvreduce()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(L|-size))
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup -d \
+			--debug -f --force -h --help -l --extents \
+			-L --size -n --nofsck -r --resizefs -t --test \
+			-v --verbose --version' -- $cur ) )
+	else
+		_logicalvolumes
+	fi
+}
+complete -F _lvreduce lvreduce
+
+_lvresize()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(L|-size))
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \
+			--debug -h --help -i --stripes -I --stripesize \
+			-l --extents -L --size -n --nofsck -r --resizefs \
+			-t --test --type -v --verbose --version' -- $cur ) )
+	else
+		_args
+		if [ $args -eq 0 ]; then
+			_logicalvolumes
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _lvresize lvresize
+
+_lvextend()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+		-@(A|-autobackup))
+			COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
+			return 0
+			;;
+		-@(L|-size))
+			_sizes
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == -* ]]; then
+		COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \
+			--debug -h --help -i --stripes -I --stripesize \
+			-l --extents -L --size -n --nofsck -r --resizefs \
+			-t --test --type -v --verbose --version' -- $cur ) )
+	else
+		_args
+		if [ $args -eq 0 ]; then
+			_logicalvolumes
+		else
+			_physicalvolumes
+		fi
+	fi
+}
+complete -F _lvextend lvextend
+
+_lvm()
+{
+	local prev
+
+	COMPREPLY=()
+	cur=`_get_cword`
+
+	if [ $COMP_CWORD -eq 1 ]; then
+		COMPREPLY=( $( compgen -W 'dumpconfig help lvchange \
+			lvcreate lvdisplay lvextend lvmchange \
+			lvmdiskscan lvmsadc lvmsar lvreduce \
+			lvremove lvrename lvresize lvs lvscan \
+			pvchange pvcreate pvdata pvdisplay pvmove \
+			pvremove pvresize pvs pvscan vgcfgbackup \
+			vgcfgrestore vgchange vgck vgconvert \
+			vgcreate vgdisplay vgexport vgextend \
+			vgimport vgmerge vgmknodes vgreduce \
+			vgremove vgrename vgs vgscan vgsplit \
+			version' -- $cur ) )
+	else
+		case ${COMP_WORDS[1]} in
+			pvchange)
+				_pvchange
+				;;
+			pvcreate)
+				_pvcreate
+				;;
+			pvdisplay)
+				_pvdisplay
+				;;
+			pvmove)
+				_pvmove
+				;;
+			pvremove)
+				_pvremove
+				;;
+			pvresize)
+				_pvresize
+				;;
+			pvs)
+				_pvs
+				;;
+			pvscan)
+				_pvscan
+				;;
+			vgcfgbackup)
+				_vgcfgbackup
+				;;
+			vgcfgrestore)
+				_vgcfgrestore
+				;;
+			vgchange)
+				_vgchange
+				;;
+			vgck)
+				_vgck
+				;;
+			vgconvert)
+				_vgconvert
+				;;
+			vgcreate)
+				_vgcreate
+				;;
+			vgdisplay)
+				_vgdisplay
+				;;
+			vgexport)
+				_vgexport
+				;;
+			vgextend)
+				_vgextend
+				;;
+			vgimport)
+				_vgimport
+				;;
+			vgmerge)
+				_vgmerge
+				;;
+			vgmknodes)
+				_vgmknodes
+				;;
+			vgreduce)
+				_vgreduce
+				;;
+			vgremove)
+				_vgremove
+				;;
+			vgrename)
+				_vgrename
+				;;
+			vgs)
+				_vgs
+				;;
+			vgscan)
+				_vgscan
+				;;
+			vgsplit)
+				_vgsplit
+				;;
+			lvchange)
+				_lvchange
+				;;
+			lvcreate)
+				_lvcreate
+				;;
+			lvdisplay)
+				_lvdisplay
+				;;
+			lvextend)
+				_lvextend
+				;;
+			lvreduce)
+				_lvreduce
+				;;
+			lvremove)
+				_lvremove
+				;;
+			lvrename)
+				_lvrename
+				;;
+			lvresize)
+				_lvresize
+				;;
+			lvs)
+				_lvs
+				;;
+			lvscan)
+				_lvscan
+				;;
+		esac
+	fi
+}
+complete -F _lvm lvm
+}

-- 
bash-completion



More information about the Bash-completion-commits mailing list