You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.0 KiB
73 lines
2.0 KiB
#compdef multipass |
|
|
|
_multipass_get_command_list () { |
|
# Sample output: |
|
# $ multipass --help |
|
# ... |
|
# Options: |
|
# -h, --help Display this help |
|
# -v, --verbose Increase logging verbosity. Repeat the 'v' in the short option |
|
# for more detail. Maximum verbosity is obtained with 4 (or more) |
|
# v's, i.e. -vvvv. |
|
# ... |
|
# Available commands: |
|
# alias Create an alias |
|
# aliases List available aliases |
|
# ... |
|
# |
|
$_comp_command1 --help | sed '1,/Available commands/d' | awk '/^[ \t]*[a-z]+/ { print $1 }' |
|
} |
|
|
|
_multipass_get_args_list () { |
|
# Sample output: |
|
# $ multpass help stop |
|
# ... |
|
# Options: |
|
# -h, --help Display this help |
|
# -v, --verbose Increase logging verbosity. Repeat the 'v' in the short |
|
# option for more detail. Maximum verbosity is obtained with |
|
# 4 (or more) v's, i.e. -vvvv. |
|
# --all Stop all instances |
|
# -t, --time <time> Time from now, in minutes, to delay shutdown of the |
|
# instance |
|
# -c, --cancel Cancel a pending delayed shutdown |
|
# |
|
# Arguments: |
|
# name Names of instances to stop. If omitted, and without the |
|
# --all option, 'primary' will be assumed. |
|
# |
|
local arg_name=$($_comp_command1 help ${words[2]} | sed '1,/Arguments/d' | awk '/^[ \t]*[a-z]+/ { print $1; exit }') |
|
|
|
case $arg_name in |
|
name) |
|
# Sample output: |
|
# $ multipass list |
|
# Name State IPv4 Image |
|
# workable-poacher Running 10.2.0.28 Ubuntu openHAB Home Appliance |
|
# |
|
$_comp_command1 list | sed '1d' | awk '/^[ \t]*[^ ]+/ { print $1 }' |
|
;; |
|
command) |
|
_multipass_get_command_list |
|
;; |
|
esac |
|
} |
|
|
|
_multipass () { |
|
typeset -A opt_args |
|
|
|
_arguments \ |
|
'1: :->command'\ |
|
'*: :->args' |
|
|
|
case $state in |
|
command) |
|
compadd $(_multipass_get_command_list) |
|
;; |
|
*) |
|
compadd $(_multipass_get_args_list) |
|
;; |
|
esac |
|
} |
|
|
|
_multipass "$@"
|
|
|