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