haiku/data/etc/bash_completion.d/xm

234 lines
7.6 KiB
Bash

# 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=()
_get_comp_words_by_ref cur prev
commands='console vncviewer create new delete destroy domid domname \
dump-core list mem-max mem-set migrate pause reboot rename reset \
restore resume save shutdown start suspend sysrq trigger top unpause \
uptime usb-add usb-del vcpu-list vcpu-pin vcpu-set debug-keys dmesg \
info log serve sched-credit sched-sedf block-attach block-detach \
block-list block-configure network-attach network-detach network-list \
vtpm-list pci-attach pci-detach pci-list pci-list-assignable-devices \
scsi-attach scsi-detach scsi-list vnet-list vnet-create vnet-delete \
labels addlabel rmlabel getlabel dry-run resources dumppolicy \
setpolicy resetpolicy getpolicy shell help'
if [[ $COMP_CWORD -eq 1 ]] ; then
COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
else
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-list|network-list|vtpm-list|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|mem-max| \
pause|reboot|rename|shutdown|unpause|vcpu-list|vcpu-pin| \
vcpu-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