diff --git a/pkg/content/file/file.go b/pkg/content/file/file.go index db8715d..ad356b5 100644 --- a/pkg/content/file/file.go +++ b/pkg/content/file/file.go @@ -87,7 +87,11 @@ func (f *file) compute() error { return err } - cfg := f.client.Config(f.ref) + cfg := f.config + if cfg == nil { + cfg = f.client.Config(f.ref) + } + cfgDesc, err := partial.Descriptor(cfg) if err != nil { return err diff --git a/pkg/content/file/options.go b/pkg/content/file/options.go index 3f9661f..bc26b42 100644 --- a/pkg/content/file/options.go +++ b/pkg/content/file/options.go @@ -1,6 +1,9 @@ package file -import "github.com/rancherfederal/hauler/internal/getter" +import ( + "github.com/rancherfederal/hauler/internal/getter" + "github.com/rancherfederal/hauler/pkg/artifact" +) type Option func(*file) @@ -9,3 +12,15 @@ func WithClient(c *getter.Client) Option { f.client = c } } + +func WithConfig(obj interface{}, mediaType string) Option { + return func(f *file) { + f.config = artifact.ToConfig(obj, artifact.WithConfigMediaType(mediaType)) + } +} + +func WithAnnotations(m map[string]string) Option { + return func(f *file) { + f.annotations = m + } +}