]> arthur.barton.de Git - ax-zsh.git/blob - plugins/keychain/keychain.zshrc
keychanin: Enhance logic and introduce axzsh_keychain_update function
[ax-zsh.git] / plugins / keychain / keychain.zshrc
1 # AX-ZSH: Alex' Modular ZSH Configuration
2 # keychain.zshrc: Setup keychain(1)
3
4 # Test if keychain(1) has already been initialized, for example in the
5 # "profile" stage.
6 if [[ -n "$axzsh_keychain_was_run" ]]; then
7         unset axzsh_keychain_was_run
8         return
9 fi
10
11 # Make sure that "keychain(1)" is installed
12 (( $+commands[keychain] )) || return
13
14 function axzsh_keychain_update() {
15         local agents
16         if (( $+commands[ssh-agent] )); then
17                 [[ -z "$agents" ]] && agents="ssh" || agents="$agents,ssh"
18         fi
19         if (( $+commands[gpg-agent] )); then
20                 [[ -z "$agents" ]] && agents="gpg" || agents="$agents,gpg"
21         fi
22         eval `keychain --agents "$agents" --eval --inherit any-once "$@"`
23 }
24
25 [[ "$type" == "zshrc" ]] \
26         && axzsh_keychain_update --quiet --quick \
27         || axzsh_keychain_update --quiet
28
29 unset axzsh_keychain_was_run