Get config more directly

This commit is contained in:
Bryce Lampe
2025-05-09 10:09:51 -07:00
parent 1c575b0966
commit 6b17b3fec8
3 changed files with 13 additions and 13 deletions

View File

@@ -63,6 +63,7 @@ var _migration string
// Image is a Docker image build using buildkit.
type Image struct {
docker Client
config *Config
}
// Annotate provides a description of the Image resource.
@@ -331,22 +332,20 @@ func (is *ImageState) Annotate(a infer.Annotator) {
// client produces a CLI client scoped to this resource and layered on top of
// any host-level credentials.
func (i *Image) client(ctx context.Context, state ImageState, args ImageArgs) (Client, error) {
func (i *Image) client(_ context.Context, state ImageState, args ImageArgs) (Client, error) {
// Use our mock client, if it's set.
if i.docker != nil {
return i.docker, nil
}
cfg := infer.GetConfig[Config](ctx)
// We prefer auth from args, the provider, and state in that order. We
// build a slice in reverse order because wrap() will overwrite earlier
// entries with later ones.
auths := []Registry{}
auths = append(auths, cfg.Registries...)
auths = append(auths, i.config.Registries...)
auths = append(auths, args.Registries...)
return wrap(cfg.host, auths...)
return wrap(i.config.host, auths...)
}
// Check validates ImageArgs, sets defaults, and ensures our client is

View File

@@ -48,6 +48,7 @@ var _indexExamples string
// Index is an OCI index or manifest list on a remote registry.
type Index struct {
docker Client
config *Config
}
// IndexArgs instantiate an Index.
@@ -349,7 +350,7 @@ func (i *Index) Diff(
// client produces a CLI client scoped to this resource and layered on top of
// any host-level credentials.
func (i *Index) client(
ctx context.Context,
_ context.Context,
_ IndexState,
args IndexArgs,
) (Client, error) {
@@ -358,16 +359,14 @@ func (i *Index) client(
return i.docker, nil
}
cfg := infer.GetConfig[Config](ctx)
// We prefer auth from args, the provider, and state in that order. We
// build a slice in reverse order because wrap() will overwrite earlier
// entries with later ones.
auths := []Registry{}
auths = append(auths, cfg.Registries...)
auths = append(auths, i.config.Registries...)
if args.Registry != nil {
auths = append(auths, *args.Registry)
}
return wrap(cfg.host, auths...)
return wrap(i.config.host, auths...)
}

View File

@@ -64,6 +64,8 @@ func (c *Config) Configure(ctx context.Context) error {
// NewBuildxProvider returns a new buildx provider.
func NewBuildxProvider(mock Client) provider.Provider {
config := &Config{}
prov := infer.Provider(
infer.Options{
Metadata: pschema.Metadata{
@@ -111,13 +113,13 @@ func NewBuildxProvider(mock Client) provider.Provider {
},
},
Resources: []infer.InferredResource{
infer.Resource(&Image{docker: mock}),
infer.Resource(&Index{docker: mock}),
infer.Resource(&Image{docker: mock, config: config}),
infer.Resource(&Index{docker: mock, config: config}),
},
ModuleMap: map[tokens.ModuleName]tokens.ModuleName{
"internal": "index",
},
Config: infer.Config(&Config{}),
Config: infer.Config(config),
},
)