[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