diff options
author | Civan Yavuzşen <civanyavuzsen@gmail.com> | 2022-02-01 23:48:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-01 23:48:14 +0100 |
commit | 4ee0cf3cb4c64568430f9af5b1edca2602ab5807 (patch) | |
tree | c378a80a4536f710cf44b55abe07e07a241c511b /plugins/multipass/_multipass | |
parent | 0be7c897f824223fa1cd22976b07ae79eff6aaea (diff) | |
download | zsh-4ee0cf3cb4c64568430f9af5b1edca2602ab5807.tar.gz zsh-4ee0cf3cb4c64568430f9af5b1edca2602ab5807.tar.bz2 zsh-4ee0cf3cb4c64568430f9af5b1edca2602ab5807.zip |
feat(multipass): add plugin for multipass (#10140)
Co-authored-by: C. Yavuzsen <cyavuzsen@comscore.com>
Diffstat (limited to 'plugins/multipass/_multipass')
-rw-r--r-- | plugins/multipass/_multipass | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/plugins/multipass/_multipass b/plugins/multipass/_multipass new file mode 100644 index 000000000..c742df650 --- /dev/null +++ b/plugins/multipass/_multipass @@ -0,0 +1,73 @@ +#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 "$@" |