summaryrefslogtreecommitdiff
path: root/plugins/ssh-agent/ssh-agent.plugin.zsh
diff options
context:
space:
mode:
authorMarc Cornellà <hello@mcornella.com>2021-08-26 15:52:09 +0200
committerMarc Cornellà <hello@mcornella.com>2021-08-27 18:08:04 +0200
commit4a69ee575c9a8ec96fb6378fecae7777c7afba84 (patch)
treeba466e72624cad06e64514839f3aa879fe114724 /plugins/ssh-agent/ssh-agent.plugin.zsh
parent0c590aba74f28e94f03eb918c07a90cf1a51f525 (diff)
downloadzsh-4a69ee575c9a8ec96fb6378fecae7777c7afba84.tar.gz
zsh-4a69ee575c9a8ec96fb6378fecae7777c7afba84.tar.bz2
zsh-4a69ee575c9a8ec96fb6378fecae7777c7afba84.zip
feat(ssh-agent): allow specifying absolute path to `identities`
Fixes #9650
Diffstat (limited to 'plugins/ssh-agent/ssh-agent.plugin.zsh')
-rw-r--r--plugins/ssh-agent/ssh-agent.plugin.zsh12
1 files changed, 7 insertions, 5 deletions
diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh
index 2049145fd..c2b9546a2 100644
--- a/plugins/ssh-agent/ssh-agent.plugin.zsh
+++ b/plugins/ssh-agent/ssh-agent.plugin.zsh
@@ -23,12 +23,12 @@ function _start_agent() {
}
function _add_identities() {
- local id line sig lines
+ local id file line sig lines
local -a identities loaded_sigs loaded_ids not_loaded
zstyle -a :omz:plugins:ssh-agent identities identities
# check for .ssh folder presence
- if [[ ! -d $HOME/.ssh ]]; then
+ if [[ ! -d "$HOME/.ssh" ]]; then
return
fi
@@ -52,10 +52,12 @@ function _add_identities() {
# add identities if not already loaded
for id in $identities; do
+ # if id is an absolute path, make file equal to id
+ [[ "$id" = /* ]] && file="$id" || file="$HOME/.ssh/$id"
# check for filename match, otherwise try for signature match
- if [[ ${loaded_ids[(I)$HOME/.ssh/$id]} -le 0 ]]; then
- sig="$(ssh-keygen -lf "$HOME/.ssh/$id" | awk '{print $2}')"
- [[ ${loaded_sigs[(I)$sig]} -le 0 ]] && not_loaded+=("$HOME/.ssh/$id")
+ if [[ ${loaded_ids[(I)$file]} -le 0 ]]; then
+ sig="$(ssh-keygen -lf "$file" | awk '{print $2}')"
+ [[ ${loaded_sigs[(I)$sig]} -le 0 ]] && not_loaded+=("$file")
fi
done