diff --git a/shell-common/.config/shell-common/functions.sh b/shell-common/.config/shell-common/functions.sh index da57d22..1063a8e 100644 --- a/shell-common/.config/shell-common/functions.sh +++ b/shell-common/.config/shell-common/functions.sh @@ -12,12 +12,13 @@ function update-dotfiles() { cd $prevdir } +# Wrapper around ssh-add to ease usage and also ensure basic timeouts function add-sshkey() { TIMEOUT="2h" NAME=$1 if [ -z "$NAME" ]; then - echo "Current Keys" + echo "Current Agent Keys" ssh-add -L | cut -d" " -f 3- else if [ -f "${HOME}/.ssh/id_ed25519_${NAME}" ]; then diff --git a/zsh/.config/zsh/completions.zsh b/zsh/.config/zsh/completions.zsh new file mode 100644 index 0000000..34dd0cf --- /dev/null +++ b/zsh/.config/zsh/completions.zsh @@ -0,0 +1,18 @@ +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 \ No newline at end of file diff --git a/zsh/.zshrc b/zsh/.zshrc index e055ca1..35b4f98 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -1,4 +1,3 @@ - # Source shell common for f in ~/.config/shell-common/*.sh; do source $f;