mirror of https://github.com/docker/cli.git
39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package store
|
|
|
|
// TypeGetter is a func used to determine the concrete type of a context or
|
|
// endpoint metadata by returning a pointer to an instance of the object
|
|
// eg: for a context of type DockerContext, the corresponding TypeGetter should return new(DockerContext)
|
|
type TypeGetter func() interface{}
|
|
|
|
// NamedTypeGetter is a TypeGetter associated with a name
|
|
type NamedTypeGetter struct {
|
|
name string
|
|
typeGetter TypeGetter
|
|
}
|
|
|
|
// EndpointTypeGetter returns a NamedTypeGetter with the spcecified name and getter
|
|
func EndpointTypeGetter(name string, getter TypeGetter) NamedTypeGetter {
|
|
return NamedTypeGetter{
|
|
name: name,
|
|
typeGetter: getter,
|
|
}
|
|
}
|
|
|
|
// Config is used to configure the metadata marshaler of the context store
|
|
type Config struct {
|
|
contextType TypeGetter
|
|
endpointTypes map[string]TypeGetter
|
|
}
|
|
|
|
// NewConfig creates a config object
|
|
func NewConfig(contextType TypeGetter, endpoints ...NamedTypeGetter) Config {
|
|
res := Config{
|
|
contextType: contextType,
|
|
endpointTypes: make(map[string]TypeGetter),
|
|
}
|
|
for _, e := range endpoints {
|
|
res.endpointTypes[e.name] = e.typeGetter
|
|
}
|
|
return res
|
|
}
|