feat(multipass): add plugin for multipass (#10140)
Co-authored-by: C. Yavuzsen <cyavuzsen@comscore.com>master
parent
0be7c897f8
commit
4ee0cf3cb4
3 changed files with 102 additions and 0 deletions
@ -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` | |
||||||
@ -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 "$@" |
||||||
@ -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" |
||||||
Loading…
Reference in new issue