summaryrefslogtreecommitdiff
path: root/plugins/multipass/_multipass
diff options
context:
space:
mode:
authorCivan Yavuzşen <civanyavuzsen@gmail.com>2022-02-01 23:48:14 +0100
committerGitHub <noreply@github.com>2022-02-01 23:48:14 +0100
commit4ee0cf3cb4c64568430f9af5b1edca2602ab5807 (patch)
treec378a80a4536f710cf44b55abe07e07a241c511b /plugins/multipass/_multipass
parent0be7c897f824223fa1cd22976b07ae79eff6aaea (diff)
downloadzsh-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/_multipass73
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 "$@"