/bash_completion.d/xm
http://github.com/brinkman83/bashrc · #! · 231 lines · 220 code · 11 blank · 0 comment · 0 complexity · 87dc8377a90b2242c23a8f997ee73ab0 MD5 · raw file
- # 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()
- {
- # TODO: _split_longopt
- local cur prev command options
- COMPREPLY=()
- cur=`_get_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_real "$cur"
- ;;
- 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[@]:-} \
- $( compgen -W '$( command ls /etc/xen 2>/dev/null )' \
- -- "$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
- }
- # Local variables:
- # mode: shell-script
- # sh-basic-offset: 4
- # sh-indent-comment: t
- # indent-tabs-mode: nil
- # End:
- # ex: ts=4 sw=4 et filetype=sh