From ea21b37d67f27c22f2d8fce76794bbe4b8a21d4d Mon Sep 17 00:00:00 2001 From: Ahmed AbouZaid Date: Sat, 15 Oct 2022 16:45:50 +0200 Subject: [PATCH] proposal v2 --- api/internal/plugins/loader/loader.go | 20 +++++++++----------- api/internal/plugins/loader/loader_test.go | 14 +++++++------- api/internal/target/kusttarget.go | 6 +----- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/api/internal/plugins/loader/loader.go b/api/internal/plugins/loader/loader.go index 36d929d7d..43b11d6ff 100644 --- a/api/internal/plugins/loader/loader.go +++ b/api/internal/plugins/loader/loader.go @@ -42,24 +42,22 @@ func NewLoader( return &Loader{pc: pc, rf: rf, fs: fs} } -// Config provides the global (not plugin specific) PluginConfig data. -func (l *Loader) Config() *types.PluginConfig { - return l.pc -} - -// DeepCopyPluginConfig makes a full copy the actual values of PluginConfig. -func (l *Loader) DeepCopyPluginConfig() { - l.pc = &types.PluginConfig{ +// LoaderWithWorkingDir returns loader after setting its working directory. +// NOTE: This is not really a new loader since some of the Loader struct fields are pointers. +func (l *Loader) LoaderWithWorkingDir(wd string) *Loader { + lpc := &types.PluginConfig{ PluginRestrictions: l.pc.PluginRestrictions, BpLoadingOptions: l.pc.BpLoadingOptions, FnpLoadingOptions: l.pc.FnpLoadingOptions, HelmConfig: l.pc.HelmConfig, } + lpc.FnpLoadingOptions.WorkingDir = wd + return &Loader{pc: lpc, rf: l.rf, fs: l.fs} } -// SetPluginConfigWorkingDir sets the working directory for the loader's plugins. -func (l *Loader) SetPluginConfigWorkingDir(wd string) { - l.pc.FnpLoadingOptions.WorkingDir = wd +// Config provides the global (not plugin specific) PluginConfig data. +func (l *Loader) Config() *types.PluginConfig { + return l.pc } func (l *Loader) LoadGenerators( diff --git a/api/internal/plugins/loader/loader_test.go b/api/internal/plugins/loader/loader_test.go index ba40762b8..53992db52 100644 --- a/api/internal/plugins/loader/loader_test.go +++ b/api/internal/plugins/loader/loader_test.go @@ -6,6 +6,7 @@ package loader_test import ( "testing" + "github.com/stretchr/testify/require" . "sigs.k8s.io/kustomize/api/internal/plugins/loader" "sigs.k8s.io/kustomize/api/loader" "sigs.k8s.io/kustomize/api/provider" @@ -79,16 +80,15 @@ func TestLoader(t *testing.T) { } } -func TestLoaderSetPluginConfigWorkingDir(t *testing.T) { +func TestLoaderWithWorkingDir(t *testing.T) { p := provider.NewDefaultDepProvider() rmF := resmap.NewFactory(p.GetResourceFactory()) fsys := filesys.MakeFsInMemory() c := types.EnabledPluginConfig(types.BploLoadFromFileSys) pLdr := NewLoader(c, rmF, fsys) - pLdrCopy := *pLdr - pLdrCopy.DeepCopyPluginConfig() - pLdrCopy.SetPluginConfigWorkingDir("/tmp/dummy") - if pLdrCopy.Config().FnpLoadingOptions.WorkingDir != "/tmp/dummy" { - t.Fatal("plugin working dir is not set correctly") - } + npLdr := pLdr.LoaderWithWorkingDir("/tmp/dummy") + require.Equal(t, + "/tmp/dummy", + npLdr.Config().FnpLoadingOptions.WorkingDir, + "plugin working dir is not set correctly") } diff --git a/api/internal/target/kusttarget.go b/api/internal/target/kusttarget.go index 17318c396..d5d7c1474 100644 --- a/api/internal/target/kusttarget.go +++ b/api/internal/target/kusttarget.go @@ -44,15 +44,11 @@ func NewKustTarget( validator ifc.Validator, rFactory *resmap.Factory, pLdr *loader.Loader) *KustTarget { - pLdrCopy := *pLdr - pLdrCopy.DeepCopyPluginConfig() - pLdrCopy.SetPluginConfigWorkingDir(ldr.Root()) - return &KustTarget{ ldr: ldr, validator: validator, rFactory: rFactory, - pLdr: &pLdrCopy, + pLdr: pLdr.LoaderWithWorkingDir(ldr.Root()), } }