mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-08-07 06:08:39 +02:00
feat(keychain): add version handling (#13898)
Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
This commit is contained in:
parent
ab84cca50a
commit
7e2aa2c8cb
1 changed files with 46 additions and 33 deletions
|
|
@ -4,37 +4,50 @@
|
||||||
SHORT_HOST=${SHORT_HOST:-${(%):-%m}}
|
SHORT_HOST=${SHORT_HOST:-${(%):-%m}}
|
||||||
|
|
||||||
function {
|
function {
|
||||||
local agents
|
local -a identities
|
||||||
local -a identities
|
local -a options
|
||||||
local -a options
|
local _keychain_env_sh
|
||||||
local _keychain_env_sh
|
local _keychain_env_sh_gpg
|
||||||
local _keychain_env_sh_gpg
|
local version_string major
|
||||||
|
|
||||||
# load agents to start.
|
# load identities to manage.
|
||||||
zstyle -s :omz:plugins:keychain agents agents
|
zstyle -a :omz:plugins:keychain identities identities
|
||||||
|
|
||||||
# load identities to manage.
|
# load additional options
|
||||||
zstyle -a :omz:plugins:keychain identities identities
|
zstyle -a :omz:plugins:keychain options options
|
||||||
|
|
||||||
# load additional options
|
# Detect major version robustly: case-insensitive, tolerant of
|
||||||
zstyle -a :omz:plugins:keychain options options
|
# "keychain 3.0.0_beta3" / "Keychain 3.0.0" / etc.
|
||||||
|
version_string=$(keychain --version 2>&1)
|
||||||
|
if [[ "${version_string:l}" =~ '([0-9]+)\.[0-9]+' ]]; then
|
||||||
|
major=${match[1]}
|
||||||
|
else
|
||||||
|
major=2
|
||||||
|
fi
|
||||||
|
|
||||||
# Check keychain version to decide whether to use --agents
|
if (( major >= 3 )); then
|
||||||
local version_string=$(keychain --version 2>&1)
|
# Keychain 3.x: subcommand-based CLI, no --agents.
|
||||||
# start keychain, only use --agents for versions below 2.9.0
|
keychain add ${^options:-} --host $SHORT_HOST ${^identities}
|
||||||
autoload -Uz is-at-least
|
else
|
||||||
if [[ "$version_string" =~ 'keychain ([0-9]+\.[0-9]+)' ]] && \
|
local agents
|
||||||
is-at-least 2.9 "$match[1]"; 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
|
# load agents to start (only used by keychain < 2.9).
|
||||||
_keychain_env_sh="$HOME/.keychain/$SHORT_HOST-sh"
|
zstyle -s :omz:plugins:keychain agents agents
|
||||||
_keychain_env_sh_gpg="$HOME/.keychain/$SHORT_HOST-sh-gpg"
|
|
||||||
|
|
||||||
# Source environment settings.
|
autoload -Uz is-at-least
|
||||||
[ -f "$_keychain_env_sh" ] && . "$_keychain_env_sh"
|
if [[ "${version_string:l}" =~ 'keychain ([0-9]+\.[0-9]+)' ]] && \
|
||||||
[ -f "$_keychain_env_sh_gpg" ] && . "$_keychain_env_sh_gpg"
|
is-at-least 2.9 "$match[1]"; then
|
||||||
|
keychain ${^options:-} ${^identities} --host $SHORT_HOST
|
||||||
|
else
|
||||||
|
keychain ${^options:-} --agents ${agents:-gpg} ${^identities} --host $SHORT_HOST
|
||||||
|
fi
|
||||||
|
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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue