c.UI.Warn(`"-token-name=none" is deprecated, please use "-keyring-type=none"`)
c.FlagKeyringType=NoneKeyring
}
ifc.FlagKeyringType==NoneKeyring{
return"","",nil
}
// Set so we can look it up later when printing out curl strings
os.Setenv(EnvTokenName,tokenName)
varfoundKeyringTypebool
keyringType:=c.FlagKeyringType
switchruntime.GOOS{
case"windows":
switchkeyringType{
caseAutoKeyring,WincredKeyring,PassKeyring:
foundKeyringType=true
ifkeyringType==AutoKeyring{
keyringType=WincredKeyring
}
}
case"darwin":
switchkeyringType{
caseAutoKeyring,KeychainKeyring,PassKeyring:
foundKeyringType=true
ifkeyringType==AutoKeyring{
keyringType=KeychainKeyring
}
}
default:
switchkeyringType{
caseAutoKeyring,SecretServiceKeyring,PassKeyring:
foundKeyringType=true
ifkeyringType==AutoKeyring{
keyringType=PassKeyring
}
}
}
if!foundKeyringType{
return"","",fmt.Errorf("Given keyring type %q is not valid, or not valid for this platform",c.FlagKeyringType)
}
varavailablebool
switchkeyringType{
caseWincredKeyring,KeychainKeyring:
available=true
casePassKeyring,SecretServiceKeyring:
avail:=nkeyring.AvailableBackends()
for_,a:=rangeavail{
ifkeyringType==string(a){
available=true
}
}
}
if!available{
return"","",fmt.Errorf("Keyring type %q is not available on this machine. For help with setting up keyrings, see https://www.boundaryproject.io/docs/api-clients/cli.",keyringType)