mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 13:21:19 +08:00 
			
		
		
		
	Add keychain plugin
This plugin integrates the Keychain tool[1] in to the project. [1] [keychain](https://www.funtoo.org/Keychain)
This commit is contained in:
		
							parent
							
								
									576ada138f
								
							
						
					
					
						commit
						95a3b27680
					
				
							
								
								
									
										45
									
								
								plugins/keychain/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								plugins/keychain/README.md
									
									
									
									
									
										Normal file
									
								
							@ -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)
 | 
			
		||||
							
								
								
									
										32
									
								
								plugins/keychain/keychain.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								plugins/keychain/keychain.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user