in internal/config/config.go [181:245]
func (c *fileConfig) GetWithSource(hostname, key string, searchENVVars bool) (value, source string, err error) {
if searchENVVars {
value, source = GetFromEnvWithSource(key)
if value != "" {
return value, source, nil
}
}
key = ConfigKeyEquivalence(key)
var cfgError error
if hostname != "" {
hostCfg, err := c.configForHost(hostname)
if err != nil && !isNotFoundError(err) {
return "", "", err
}
var hostValue string
if hostCfg != nil {
hostValue, err = hostCfg.GetStringValue(key)
if err != nil && !isNotFoundError(err) {
return "", "", err
}
if (err != nil || hostValue == "") && key == "token" {
token, err := keyring.Get("glab:"+hostname, "")
if err == nil {
return token, "keyring", nil
}
}
}
if hostValue != "" {
return hostValue, ConfigFile(), nil
}
}
source = ConfigFile()
l, _ := c.Local()
value, err = l.GetStringValue(key)
if (err != nil && isNotFoundError(err)) || value == "" {
value, err = c.GetStringValue(key)
if err != nil && isNotFoundError(err) {
return defaultFor(key), source, cfgError
} else if err != nil {
if hostname != "" {
err = cfgError
}
return "", LocalConfigFile(), err
}
} else if value != "" {
source = LocalConfigFile()
}
if value == "" {
return defaultFor(key), source, cfgError
}
return value, source, cfgError
}