Add 'mssh' completion
mssh is a Python client for accessing EC2 instances via AWS EC2 Instance Connect. References: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html#ec2-instance-connect-connecting-ec2-cli https://github.com/aws/aws-ec2-instance-connect-cli https://pypi.org/project/ec2instanceconnectcli/
This commit is contained in:
parent
44c5bce312
commit
43a6b81308
|
@ -0,0 +1,52 @@
|
|||
#compdef mssh
|
||||
|
||||
# mssh is a Python client for accessing EC2 instances via AWS EC2 Instance
|
||||
# Connect.
|
||||
#
|
||||
# References:
|
||||
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html#ec2-instance-connect-connecting-ec2-cli
|
||||
# https://github.com/aws/aws-ec2-instance-connect-cli
|
||||
# https://pypi.org/project/ec2instanceconnectcli/
|
||||
|
||||
# Define function only when it doesn't exist
|
||||
(( $+functions[_mssh_cache_policy] )) || _mssh_cache_policy() {
|
||||
# Cache invalidates after 30 seconds
|
||||
#
|
||||
# Reference:
|
||||
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#index-globbing_002c-qualifiers
|
||||
local -a oldp
|
||||
oldp=( "$1"(ms+30) )
|
||||
(( $#oldp ))
|
||||
}
|
||||
|
||||
# Unless user explicitly turned off caching, enable caching just for this context
|
||||
local existing_setting
|
||||
zstyle -s ":completion:${curcontext}:" use-cache existing_setting
|
||||
if [[ -z "${existing_setting}" ]]; then
|
||||
zstyle ":completion:${curcontext}:" use-cache on
|
||||
fi
|
||||
|
||||
# Update cache policy only when there was no existing policy
|
||||
local existing_policy
|
||||
zstyle -s ":completion:${curcontext}:" cache-policy existing_policy
|
||||
if [[ -z "${existing_policy}" ]]; then
|
||||
zstyle ":completion:${curcontext}:" cache-policy _mssh_cache_policy
|
||||
fi
|
||||
|
||||
local -a instances
|
||||
if _cache_invalid mssh_instances || ! _retrieve_cache mssh_instances; then
|
||||
# Cache is invalid or caching feature is disabled
|
||||
IFS=$'\n\t' instances=($(
|
||||
aws ec2 describe-instances \
|
||||
--query 'Reservations[].Instances[] | [?State.Name == `running`].join(`:`, [InstanceId, Tags[?Key == `Name`].Value | [0]])' \
|
||||
--output text
|
||||
))
|
||||
|
||||
_store_cache mssh_instances instances
|
||||
fi
|
||||
|
||||
_describe 'command' instances
|
||||
|
||||
# Reference:
|
||||
# http://zsh.sourceforge.net/Doc/Release/Completion-System.html
|
||||
# https://github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org
|
Loading…
Reference in New Issue