40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package docker
|
|
|
|
import (
|
|
"github.com/docker/docker/registry"
|
|
"github.com/docker/engine-api/types"
|
|
)
|
|
|
|
// AuthLookup defines a method for looking up authentication information
|
|
type AuthLookup interface {
|
|
All() map[string]types.AuthConfig
|
|
Lookup(repoInfo *registry.RepositoryInfo) types.AuthConfig
|
|
}
|
|
|
|
// ConfigAuthLookup implements AuthLookup by reading a Docker config file
|
|
type ConfigAuthLookup struct {
|
|
context *Context
|
|
}
|
|
|
|
// NewConfigAuthLookup creates a new ConfigAuthLookup for a given context
|
|
func NewConfigAuthLookup(context *Context) *ConfigAuthLookup {
|
|
return &ConfigAuthLookup{
|
|
context: context,
|
|
}
|
|
}
|
|
|
|
// Lookup uses a Docker config file to lookup authentication information
|
|
func (c *ConfigAuthLookup) Lookup(repoInfo *registry.RepositoryInfo) types.AuthConfig {
|
|
if c.context.ConfigFile == nil || repoInfo == nil || repoInfo.Index == nil {
|
|
return types.AuthConfig{}
|
|
}
|
|
return registry.ResolveAuthConfig(c.context.ConfigFile.AuthConfigs, repoInfo.Index)
|
|
}
|
|
|
|
// All uses a Docker config file to get all authentication information
|
|
func (c *ConfigAuthLookup) All() map[string]types.AuthConfig {
|
|
if c.context.ConfigFile == nil {
|
|
return map[string]types.AuthConfig{}
|
|
}
|
|
return c.context.ConfigFile.AuthConfigs
|
|
}
|