func (c Credentials) ForHost(host svchost.Hostname) (HostCredentials, error) {
	for _, source := range c {
		creds, err := source.ForHost(host)
		if creds != nil || err != nil {
			return creds, err
		}
	}
	return nil, nil
}
ForHost iterates over the contained CredentialsSource objects and
tries to obtain credentials for the given host from each one in turn.

If any source returns either a non-nil HostCredentials or a non-nil error
then this result is returned. Otherwise, the result is nil, nil.
package auth
import (
	"fmt"
	"net/http"
	"github.com/zclconf/go-cty/cty"
	"github.com/hashicorp/terraform-svchost"
)
type Credentials []CredentialsSource
var NoCredentials CredentialsSource = Credentials{}
type CredentialsSource interface {
	ForHost(host svchost.Hostname) (HostCredentials, error)
	StoreForHost(host svchost.Hostname, credentials HostCredentialsWritable) error
	ForgetForHost(host svchost.Hostname) error
}
type HostCredentials interface {
	PrepareRequest(req *http.Request)
	Token() string
}
type HostCredentialsWritable interface {
	HostCredentials
	ToStore() cty.Value
}