Files
trivy/token/token.go
2019-04-24 14:04:52 +09:00

40 lines
795 B
Go

package token
import (
"context"
"log"
"strings"
"github.com/docker/docker/api/types"
)
const (
ecrURL = "amazonaws.com"
gcrURL = "gcr.io"
)
type Registry interface {
GetCredential(ctx context.Context) (string, string, error)
}
func GetToken(ctx context.Context, auth types.AuthConfig, credPath string) types.AuthConfig {
if auth.Username != "" || auth.Password != "" {
return auth
}
var registry Registry
switch {
case strings.HasSuffix(auth.ServerAddress, ecrURL):
registry = NewECR()
case strings.HasSuffix(auth.ServerAddress, gcrURL):
registry = NewGCR(auth, credPath)
default:
registry = NewDocker()
}
var err error
auth.Username, auth.Password, err = registry.GetCredential(ctx)
if err != nil {
log.Printf("failed to get token: %s", err)
}
return auth
}