Sindbad~EG File Manager
# bash completion for xm -*- shell-script -*-
_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 words cword
_init_completion || return
# TODO: _split_longopt
local args command commands options
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 [[ $cword -eq 1 ]] ; then
COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
else
if [[ "$cur" == *=* ]]; then
prev=${cur/=*/}
cur=${cur/*=/}
fi
command=${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
;;
esac
;;
create)
_filedir
COMPREPLY+=( \
$( compgen -W '$( command ls /etc/xen 2>/dev/null )' \
-- "$cur" ) )
;;
new)
case $prev in
-f|-F|--defconfig|--config)
_filedir
return
;;
--path)
_filedir -d
return
;;
esac
_count_args
case $args in
2)
_xen_domain_names
;;
esac
;;
esac
fi
fi
} &&
complete -F _xm xm
# ex: filetype=sh
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists