summaryrefslogtreecommitdiff
path: root/plugins/multipass
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/multipass')
-rw-r--r--plugins/multipass/README.md22
-rw-r--r--plugins/multipass/_multipass73
-rw-r--r--plugins/multipass/multipass.plugin.zsh7
3 files changed, 102 insertions, 0 deletions
diff --git a/plugins/multipass/README.md b/plugins/multipass/README.md
new file mode 100644
index 000000000..f6b2d76f4
--- /dev/null
+++ b/plugins/multipass/README.md
@@ -0,0 +1,22 @@
+# multipass
+
+This plugin provides completion for [multipass](https://multipass.run), as well as aliases
+for multipass commands.
+
+To use it, add `multipass` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... multipass)
+```
+
+## Aliases
+
+| Alias | Command |
+| ------ | ------------------------------------------------------------------- |
+| `mp` | `multipass` |
+| `mpl` | `multipass list` |
+| `mpla` | `multipass launch` |
+| `mpln` | `multipass launch --network en0 --network name=bridge0,mode=manual` |
+| `mps` | `multipass shell` |
+| `mpsp` | `multipass stop` |
+| `mpst` | `multipass start` |
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 "$@"
diff --git a/plugins/multipass/multipass.plugin.zsh b/plugins/multipass/multipass.plugin.zsh
new file mode 100644
index 000000000..95025b2ad
--- /dev/null
+++ b/plugins/multipass/multipass.plugin.zsh
@@ -0,0 +1,7 @@
+alias mp="multipass"
+alias mpl="multipass list"
+alias mpla="multipass launch"
+alias mpln="multipass launch --network en0 --network name=bridge0,mode=manual"
+alias mps="multipass shell"
+alias mpsp="multipass stop"
+alias mpst="multipass start"