summaryrefslogtreecommitdiffstats
path: root/completions/_xm
diff options
context:
space:
mode:
Diffstat (limited to 'completions/_xm')
-rw-r--r--completions/_xm224
1 files changed, 224 insertions, 0 deletions
diff --git a/completions/_xm b/completions/_xm
new file mode 100644
index 0000000..06b25d3
--- /dev/null
+++ b/completions/_xm
@@ -0,0 +1,224 @@
+# bash completion for xm -*- shell-script -*-
+
+# Use of this file is deprecated. The 'xm' command itself is no longer
+# provided by upstream. It has been replaced with the 'xl' command, for
+# which upstream provides completion, use that instead.
+
+_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 == 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