From d29febecb71aebc7b6db89e4e6071ed0ccdfdc7f Mon Sep 17 00:00:00 2001 From: Ahmed AbouZaid Date: Sun, 9 Oct 2022 15:22:42 +0200 Subject: [PATCH] Fix krm exec function working dir --- api/internal/plugins/loader/loader.go | 14 ++++++++++++-- api/internal/plugins/loader/loader_test.go | 14 ++++++++++++++ api/internal/target/kusttarget.go | 4 +++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/api/internal/plugins/loader/loader.go b/api/internal/plugins/loader/loader.go index 26441ed51..36d929d7d 100644 --- a/api/internal/plugins/loader/loader.go +++ b/api/internal/plugins/loader/loader.go @@ -47,8 +47,18 @@ func (l *Loader) Config() *types.PluginConfig { return l.pc } -// SetWorkDir sets the working directory for this loader's plugins -func (l *Loader) SetWorkDir(wd string) { +// DeepCopyPluginConfig makes a full copy the actual values of PluginConfig. +func (l *Loader) DeepCopyPluginConfig() { + l.pc = &types.PluginConfig{ + PluginRestrictions: l.pc.PluginRestrictions, + BpLoadingOptions: l.pc.BpLoadingOptions, + FnpLoadingOptions: l.pc.FnpLoadingOptions, + HelmConfig: l.pc.HelmConfig, + } +} + +// SetPluginConfigWorkingDir sets the working directory for the loader's plugins. +func (l *Loader) SetPluginConfigWorkingDir(wd string) { l.pc.FnpLoadingOptions.WorkingDir = wd } diff --git a/api/internal/plugins/loader/loader_test.go b/api/internal/plugins/loader/loader_test.go index c5e30b808..ba40762b8 100644 --- a/api/internal/plugins/loader/loader_test.go +++ b/api/internal/plugins/loader/loader_test.go @@ -78,3 +78,17 @@ func TestLoader(t *testing.T) { } } } + +func TestLoaderSetPluginConfigWorkingDir(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") + } +} diff --git a/api/internal/target/kusttarget.go b/api/internal/target/kusttarget.go index 4bbf7e98a..17318c396 100644 --- a/api/internal/target/kusttarget.go +++ b/api/internal/target/kusttarget.go @@ -45,7 +45,9 @@ func NewKustTarget( rFactory *resmap.Factory, pLdr *loader.Loader) *KustTarget { pLdrCopy := *pLdr - pLdrCopy.SetWorkDir(ldr.Root()) + pLdrCopy.DeepCopyPluginConfig() + pLdrCopy.SetPluginConfigWorkingDir(ldr.Root()) + return &KustTarget{ ldr: ldr, validator: validator,