From e6e1c51a96f9710c61c3e32b2bd4969b7b287b34 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Tue, 23 Dec 2025 18:22:12 +0000 Subject: [PATCH] [zsh] Add completions --- zsh/.config/zsh/completions.zsh | 19 ++----------- zsh/.config/zsh/completions/_add_sshkey | 18 +++++++++++++ zsh/.config/zsh/completions/_awslogin | 36 +++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 zsh/.config/zsh/completions/_add_sshkey create mode 100644 zsh/.config/zsh/completions/_awslogin diff --git a/zsh/.config/zsh/completions.zsh b/zsh/.config/zsh/completions.zsh index b082535..9d2d2ff 100644 --- a/zsh/.config/zsh/completions.zsh +++ b/zsh/.config/zsh/completions.zsh @@ -1,19 +1,4 @@ +fpath+=($HOME/.config/zsh/completions) + autoload -Uz compinit compinit - -function _add-sshkey() { - local -a identities - - # check for .ssh folder presence - if [[ ! -d $HOME/.ssh ]]; then - return - fi - for id in $HOME/.ssh/id_ed25519_*; do - name=$(basename $id | cut -d'_' -f3- | cut -d'.' -f1) - [[ ${id:-3} != 'pub' ]] && identities+=$name - done - - compadd $identities -} -compdef _add-sshkey add-sshkey - diff --git a/zsh/.config/zsh/completions/_add_sshkey b/zsh/.config/zsh/completions/_add_sshkey new file mode 100644 index 0000000..cde42a4 --- /dev/null +++ b/zsh/.config/zsh/completions/_add_sshkey @@ -0,0 +1,18 @@ +#compdef add-sshkey + +_add-sshkey() { + local -a identities + + # check for .ssh folder presence + if [[ ! -d $HOME/.ssh ]]; then + return + fi + for id in $HOME/.ssh/id_ed25519_*; do + name=$(basename $id | cut -d'_' -f3- | cut -d'.' -f1) + [[ ${id:-3} != 'pub' ]] && identities+=$name + done + + compadd $identities +} + +_add-sshkey "$@" diff --git a/zsh/.config/zsh/completions/_awslogin b/zsh/.config/zsh/completions/_awslogin new file mode 100644 index 0000000..7b98250 --- /dev/null +++ b/zsh/.config/zsh/completions/_awslogin @@ -0,0 +1,36 @@ +#compdef awslogin + +_awslogin() { + local context state state_descr line + typeset -A opt_args + + _arguments \ + '--profile[AWS profile name]:profile:->profiles' \ + '--region[AWS region]:region:->regions' + + case $state in + profiles) + local profiles + profiles=(${(f)"$(aws --no-cli-pager configure list-profiles 2>/dev/null)"}) + _describe 'AWS profiles' profiles + ;; + regions) + local regions + regions=( + 'us-east-1:US East (N. Virginia)' + 'us-east-2:US East (Ohio)' + 'us-west-1:US West (N. California)' + 'us-west-2:US West (Oregon)' + 'eu-west-1:Europe (Ireland)' + 'eu-west-2:Europe (London)' + 'eu-central-1:Europe (Frankfurt)' + 'ap-southeast-1:Asia Pacific (Singapore)' + 'ap-southeast-2:Asia Pacific (Sydney)' + 'ap-northeast-1:Asia Pacific (Tokyo)' + ) + _describe 'AWS regions' regions + ;; + esac +} + +_awslogin "$@"