mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 13:21:19 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
(( $+commands[keychain] )) || return
 | 
						|
 | 
						|
# Define SHORT_HOST if not defined (%m = host name up to first .)
 | 
						|
SHORT_HOST=${SHORT_HOST:-${(%):-%m}}
 | 
						|
 | 
						|
function {
 | 
						|
	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
 | 
						|
 | 
						|
	# Check keychain version to decide whether to use --agents
 | 
						|
	local version_string=$(keychain --version 2>&1 | head -n 2 | tail -n 1 | cut -d ' ' -f 4)
 | 
						|
  # start keychain, only use --agents for versions below 2.9.0
 | 
						|
	autoload -Uz is-at-least
 | 
						|
	if is-at-least 2.9 "$version_string"; then
 | 
						|
		keychain ${^options:-} ${^identities} --host $SHORT_HOST
 | 
						|
	else
 | 
						|
		keychain ${^options:-} --agents ${agents:-gpg} ${^identities} --host $SHORT_HOST
 | 
						|
	fi
 | 
						|
 | 
						|
	# 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"
 | 
						|
}
 |