This plugin integrates the Keychain tool[1] in to the project. [1] [keychain](https://www.funtoo.org/Keychain)master
parent
576ada138f
commit
95a3b27680
2 changed files with 77 additions and 0 deletions
@ -0,0 +1,45 @@ |
||||
# keychain plugin |
||||
|
||||
This plugin starts automatically [`keychain`](https://www.funtoo.org/Keychain) |
||||
to set up and load whichever credentials you want for both gpg and ssh |
||||
connections. |
||||
|
||||
To enable it, add `keychain` to your plugins: |
||||
|
||||
```zsh |
||||
plugins=(... keychain) |
||||
``` |
||||
|
||||
**NOTE**: It is HIGHLY recommended to also enable the `gpg-agent` plugin. |
||||
|
||||
## Instructions |
||||
|
||||
**IMPORTANT: put these settings _before_ the line that sources oh-my-zsh** |
||||
|
||||
**To adjust the agents** that keychain manages, use the `agents` style as |
||||
shown below. By default, only the `gpg` agent is managed. |
||||
|
||||
```zsh |
||||
zstyle :omz:plugins:keychain agents gpg,ssh |
||||
``` |
||||
|
||||
To **load multiple identities** use the `identities` style, For example: |
||||
|
||||
```zsh |
||||
zstyle :omz:plugins:keychain identities id_ed25519 id_github 2C5879C2 |
||||
``` |
||||
|
||||
**To pass additional options** to the `keychain` program, use the |
||||
`options` style; for example: |
||||
|
||||
```zsh |
||||
zstyle :omz:plugins:keychain options --quiet |
||||
``` |
||||
|
||||
## Credits |
||||
|
||||
Based on code from the `ssh-agent` plugin. |
||||
|
||||
## References |
||||
|
||||
- [Keychain](https://www.funtoo.org/Keychain) |
||||
@ -0,0 +1,32 @@ |
||||
function _start_agent() { |
||||
local agents |
||||
local -a identities |
||||
local -a options |
||||
local _keychain_env_sh |
||||
local _keychain_env_sh_gpg |
||||
|
||||
# load agents to start. |
||||
zstyle -s :omz:plugins:keychain agents agents |
||||
|
||||
# load identities to manage. |
||||
zstyle -a :omz:plugins:keychain identities identities |
||||
|
||||
# load additional options |
||||
zstyle -a :omz:plugins:keychain options options |
||||
|
||||
# start keychain... |
||||
keychain ${^options:-} --agents ${agents:-gpg} ${^identities} |
||||
|
||||
# Get the filenames to store/lookup the environment from |
||||
_keychain_env_sh="$HOME/.keychain/$SHORT_HOST-sh" |
||||
_keychain_env_sh_gpg="$HOME/.keychain/$SHORT_HOST-sh-gpg" |
||||
|
||||
# Source environment settings. |
||||
[ -f "$_keychain_env_sh" ] && . "$_keychain_env_sh" |
||||
[ -f "$_keychain_env_sh_gpg" ] && . "$_keychain_env_sh_gpg" |
||||
} |
||||
|
||||
_start_agent |
||||
|
||||
# tidy up after ourselves |
||||
unfunction _start_agent |
||||
Loading…
Reference in new issue