diff options
Diffstat (limited to 'plugins/keychain')
| -rw-r--r-- | plugins/keychain/README.md | 45 | ||||
| -rw-r--r-- | plugins/keychain/keychain.plugin.zsh | 32 | 
2 files changed, 77 insertions, 0 deletions
diff --git a/plugins/keychain/README.md b/plugins/keychain/README.md new file mode 100644 index 000000000..c603f6790 --- /dev/null +++ b/plugins/keychain/README.md @@ -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) diff --git a/plugins/keychain/keychain.plugin.zsh b/plugins/keychain/keychain.plugin.zsh new file mode 100644 index 000000000..af34793e7 --- /dev/null +++ b/plugins/keychain/keychain.plugin.zsh @@ -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  | 
