diff --git a/provider/internal/image.go b/provider/internal/image.go index aefe865..e64e8d7 100644 --- a/provider/internal/image.go +++ b/provider/internal/image.go @@ -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 diff --git a/provider/internal/index.go b/provider/internal/index.go index b0bda76..6d296a8 100644 --- a/provider/internal/index.go +++ b/provider/internal/index.go @@ -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...) } diff --git a/provider/internal/provider.go b/provider/internal/provider.go index 794d58b..6931a8a 100644 --- a/provider/internal/provider.go +++ b/provider/internal/provider.go @@ -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), }, )