diff options
Diffstat (limited to 'zsh/functions/op-ssh-add')
| -rw-r--r-- | zsh/functions/op-ssh-add | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/zsh/functions/op-ssh-add b/zsh/functions/op-ssh-add new file mode 100644 index 0000000..d64efd9 --- /dev/null +++ b/zsh/functions/op-ssh-add @@ -0,0 +1,28 @@ +# -*- mode: sh -*- + +if [[ ${@[1]} =~ '-[DdKLlTXx]' ]]; then + $(which -p ssh-add) $@ + return $? +fi + +local prv pub +for prv (${@[-1]} ~/.ssh/id_{ecdsa,ed25519}{,_sk}); do + if [[ -f ${prv}.pub ]]; then + pub=${prv}.pub + break + fi +done + +if [[ -z ${pub} ]]; then + $(which -p ssh-add) $@ + return $? +fi + +zmodload zsh/zpty +zpty ssh $(which -p ssh-add) $@ +zpty -w ssh $(op get item \ + $(cut -d' ' -f3 ${pub}) \ + --fields password \ + --session $(op signin --raw)) +zpty -r ssh +zpty -d ssh |
