package credentials import ( "errors" ) type providerChain struct { Providers []Provider } var defaultproviders = []Provider{providerEnv, providerProfile, providerInstance} var defaultChain = newProviderChain(defaultproviders) func newProviderChain(providers []Provider) Provider { return &providerChain{ Providers: providers, } } func (p *providerChain) resolve() (*Config, error) { for _, provider := range p.Providers { config, err := provider.resolve() if err != nil { return nil, err } else if config == nil { continue } return config, err } return nil, errors.New("No credential found") }