2024-03-04 15:35:55 +03:00
|
|
|
#!/bin/zsh
|
|
|
|
|
|
|
|
z-ssh-agent() {
|
|
|
|
while [ -n "${SSH_AGENT_PID}" ] ; do
|
|
|
|
z-proc-exists "${SSH_AGENT_PID}" || break
|
|
|
|
|
|
|
|
## don't bother with ssh agent socket if it already set
|
|
|
|
[ -z "${SSH_AUTH_SOCK}" ] || return 0
|
|
|
|
|
|
|
|
break
|
|
|
|
done
|
2024-03-04 15:47:43 +03:00
|
|
|
[ -z "${SSH_AGENT_PID}" ] || kill "${SSH_AGENT_PID}"
|
|
|
|
unset SSH_AGENT_PID
|
2024-03-04 15:35:55 +03:00
|
|
|
|
|
|
|
(( ${+commands[ssh-agent]} )) || return 127
|
|
|
|
|
|
|
|
if [ -z "${SSH_AUTH_SOCK}" ] ; then
|
|
|
|
local sock_dir
|
|
|
|
if [ "${XDG_RUNTIME_DIR}" = "${TMPDIR}" ] ; then
|
|
|
|
sock_dir="${ZSHU[d_zdot]}/.cache/ssh"
|
|
|
|
else
|
|
|
|
sock_dir="${XDG_RUNTIME_DIR}/ssh"
|
|
|
|
fi
|
|
|
|
mkdir -p "${sock_dir}"
|
|
|
|
SSH_AUTH_SOCK="${sock_dir}/ssh-agent.sock"
|
|
|
|
fi
|
|
|
|
|
|
|
|
{
|
2024-03-04 15:47:43 +03:00
|
|
|
eval "$(ssh-agent -s -a "${SSH_AUTH_SOCK}")"
|
2024-03-04 15:35:55 +03:00
|
|
|
} >/dev/null
|
|
|
|
}
|