diff options
| author | dana <dana@dana.is> | 2019-01-01 06:49:08 -0600 |
|---|---|---|
| committer | dana <dana@dana.is> | 2019-01-01 06:49:08 -0600 |
| commit | 1f8bea22473f5f8f829c604899bd39a896c804f1 (patch) | |
| tree | 1eb64a267d2a758ecf8943b1926b8b1e259e6b54 /Completion/Unix/Command | |
| parent | 43962: Fix X04 test module_path (diff) | |
| download | zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.tar zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.tar.gz zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.tar.bz2 zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.tar.lz zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.tar.xz zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.tar.zst zsh-1f8bea22473f5f8f829c604899bd39a896c804f1.zip | |
43959: Add completion for strongSwan, &al.
Also update _urls to complete unix:// URIs as for file://
Diffstat (limited to 'Completion/Unix/Command')
| -rw-r--r-- | Completion/Unix/Command/_ipsec | 179 | ||||
| -rw-r--r-- | Completion/Unix/Command/_swanctl | 225 |
2 files changed, 404 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_ipsec b/Completion/Unix/Command/_ipsec new file mode 100644 index 000000000..631d2bc9a --- /dev/null +++ b/Completion/Unix/Command/_ipsec @@ -0,0 +1,179 @@ +#compdef ipsec strongswan + +# Completion for the ipsec script (aka strongswan on some systems) provided by +# FreeS/WAN, Openswan, Libreswan, and strongSwan. See also strongSwan's swanctl. +# +# As with swanctl, elevated privileges are usually required to complete SA names +# and the like; consider setting the gain-privileges style as follows: +# zstyle ':completion:*:(ipsec|strongswan)/*' gain-privileges yes +# +# @todo We don't complete pool names or virtual IPs + +# Complete connection (IKE SA) names and optionally SA/instance names +# --instances => also complete SA/instance names +(( $+functions[_ipsec_connections] )) || +_ipsec_connections() { + local -a instances tmp ipsec_conns ipsec_insts + + zparseopts -D -E -a instances - -instances + + tmp=( ${(f)${"$( + _call_program -p ipsec-status ${_ipsec_cmd:-$words[1]} statusall + )"#*$'\n'[[:space:]]#[Cc]onnections:[[:space:]]#$'\n'}} ) + tmp=( ${(@M)tmp:#[[:space:]]#[^[:space:]]##:[[:space:]]##?*} ) + tmp=( ${(@)${(@)tmp##[[:space:]]##}%%:*} ) + + ipsec_conns=( ${(@)tmp%%['[{']<->['}]']} ) + ipsec_insts=( ${(@M)tmp:#*['[{']<->['}]']} ) + + (( $#ipsec_conns )) || { + _message -e connections 'connection name' + return + } + + tmp=( 'connections:connection name:compadd -a - ipsec_conns' ) |
