Hyeon Kim 2020-12-30 16:51:20 +09:00
parent 44c5bce312
commit 43a6b81308
No known key found for this signature in database
GPG Key ID: 0F85F46EE242057F
1 changed files with 52 additions and 0 deletions

52
src/_mssh Normal file
View File

@ -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