[Bash-completion-commits] ./current r1276: completion for xm

Guillaume Rousse guillomovitch at zarb.org
Mon Jan 19 21:03:05 UTC 2009


------------------------------------------------------------
revno: 1276
committer: Guillaume Rousse <guillomovitch at zarb.org>
branch nick: current
timestamp: Mon 2009-01-19 22:03:05 +0100
message:
  completion for xm
added:
  to_review/xm
-------------- next part --------------
=== added file 'to_review/xm'
--- a/to_review/xm	1970-01-01 00:00:00 +0000
+++ b/to_review/xm	2009-01-19 21:03:05 +0000
@@ -0,0 +1,216 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for xm
+
+have xm && {
+_xen_domain_names()
+{
+	COMPREPLY=( $(compgen -W "$( xm list 2>/dev/null | awk '!/Name|Domain-0/ { print $1 }'  )" -- $cur) )
+}
+
+_xen_domain_ids()
+{
+	COMPREPLY=( $(compgen -W "$( xm list 2>/dev/null | awk '!/Name|Domain-0/ { print $2 }' )" -- $cur) )
+}
+
+_xm()
+{
+	local cur prev command options
+
+	COMPREPLY=()
+	cur=${COMP_WORDS[COMP_CWORD]}
+
+	commands='console create new delete destroy domid domname dump-core \
+		list mem-max mem-set migrate pause reboot rename restore \
+		resume save shutdown start suspend sysrq trigger top unpause \
+		uptime vcpu-list vcpu-pin vcpu-set debug-keys dmesg info log \
+		serve sched-credit sched-sedf block-attach block-detach \
+		block-list network-attach network-detach network-list \
+		vtpm-list vnet-list vnet-create vnet-delete labels addlabel \
+		rmlabel getlabel dry-run resources makepolicy loadpolicy \
+		cfgbootpolicy dumppolicy help'
+	
+	if [[ $COMP_CWORD -eq 1 ]] ; then
+		COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+	else
+		prev=${COMP_WORDS[COMP_CWORD-1]}
+		if [[ "$cur" == *=* ]]; then
+			prev=${cur/=*/}
+			cur=${cur/*=/}
+		fi
+
+		command=${COMP_WORDS[1]}
+		if [[ "$cur" == -* ]]; then
+			# possible options for the command
+			case $command in
+				create)
+					options='-c'
+					;;
+				dmesg)
+					options='--clear'
+					;;
+				list)
+					options='--long'
+					;;
+				reboot)
+					options='-w -a'
+					;;
+				shutdown)
+					options='-w -a -R -H'
+					;;
+				sched-credit)
+					options='-d -w -c'
+					;;
+				@(block|network|vtpm|vnet)-list)
+					options='-l --long'
+					;;
+				getpolicy)
+					options='--dumpxml'
+					;;
+				new)
+					options='-h --help --help_config -q \
+						--quiet --path= -f= \
+						--defconfig= -F= --config= \
+						-b --dryrun -x --xmldryrun \
+						-s --skipdtd -p --paused -c \
+						--console_autoconnect'
+					;;
+			esac
+			COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+		else
+			case $command in
+				@(console|destroy|domname|domid|list|mem-@(set|max)|pause|reboot|rename|shutdown|unpause|vcpu-@(list|pin|set)|block-list|network-list|vtpm-list))
+					_count_args
+					case $args in
+						2)
+							_xen_domain_names
+							;;
+					esac
+					;;
+				migrate)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						3)
+							_known_hosts
+							;;
+					esac
+					;;
+				@(restore|dry-run|vnet-create))
+					_filedir
+					;;
+				save)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						3)
+							_filedir
+							;;
+					esac
+					;;
+				sysrq)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						3)
+							COMPREPLY=( $(compgen -W "r s e i u b" -- $cur) )
+							;;
+					esac
+					;;
+				block-attach)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						3)
+							COMPREPLY=( $(compgen -W "phy: file:" -- $cur) )
+							;;
+						5)
+							COMPREPLY=( $(compgen -W "w r" -- $cur) )
+							;;
+						6)
+							_xen_domain_names
+							;;
+					esac
+					;;
+				block-detach)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						3)
+							COMPREPLY=( $(compgen -W "$( xm block-list $prev 2>/dev/null | awk '!/Vdev/ { print $1 }' )" -- $cur) )
+							;;
+					esac
+					;;
+				network-attach)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						*)
+							COMPREPLY=( $(compgen -W "script= ip= mac= bridge= backend=" -- $cur) )
+							;;
+					esac
+					;;
+				network-detach)
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+						3)
+							COMPREPLY=( $(compgen -W "$( xm network-list $prev 2>/dev/null | awk '!/Idx/ { print $1 }' )" -- $cur) )
+							;;
+					esac
+					;;
+				sched-credit)
+				        case $prev in
+						-d)
+							_xen_domain_names
+							return 0
+							;;
+					esac
+					;;
+				create)
+					_filedir
+					COMPREPLY=( ${COMPREPLY[@]:-} \
+						$( command ls /etc/xen | grep "^$cur" ) )
+					;;
+				new)
+					case $prev in
+						-@(f|F|-defconfig|-config))
+							_filedir
+							return 0
+							;;
+						--path)
+							_filedir -d
+							return 0
+							;;
+					esac
+
+					_count_args
+				        case $args in
+						2)
+							_xen_domain_names
+							;;
+					esac
+					;;
+			esac
+		fi
+	fi
+
+	return 0
+}
+complete -F _xm xm
+}



More information about the Bash-completion-commits mailing list