diff --git a/cmd/config/ext/ext.go b/cmd/config/ext/ext.go new file mode 100644 index 000000000..d9d64f2c1 --- /dev/null +++ b/cmd/config/ext/ext.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package ext + +import "path/filepath" + +// GetOpenAPIFile returns the path to the file containing supplementary OpenAPI definitions. +// Maybe be overridden to configure which file to read OpenAPI definitions from. +var GetOpenAPIFile = func(args []string) (string, error) { + return filepath.Join(args[0], "kustomization"), nil +} diff --git a/cmd/config/internal/commands/cmdcreatesetter.go b/cmd/config/internal/commands/cmdcreatesetter.go index 54725c54c..9bcbe03d0 100644 --- a/cmd/config/internal/commands/cmdcreatesetter.go +++ b/cmd/config/internal/commands/cmdcreatesetter.go @@ -5,6 +5,7 @@ package commands import ( "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/setters" @@ -85,7 +86,7 @@ func (r *CreateSetterRunner) preRunE(c *cobra.Command, args []string) error { } if setterVersion == "v2" { var err error - r.OpenAPIFile, err = GetOpenAPIFile(args) + r.OpenAPIFile, err = ext.GetOpenAPIFile(args) r.CreateSetter.Description = r.Set.SetPartialField.Description r.CreateSetter.SetBy = r.Set.SetPartialField.SetBy if err != nil { diff --git a/cmd/config/internal/commands/cmdcreatesetter_test.go b/cmd/config/internal/commands/cmdcreatesetter_test.go index 00cd1bb02..ac4141cd0 100644 --- a/cmd/config/internal/commands/cmdcreatesetter_test.go +++ b/cmd/config/internal/commands/cmdcreatesetter_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/commands" "sigs.k8s.io/kustomize/kyaml/openapi" ) @@ -77,7 +78,9 @@ kind: Example if !assert.NoError(t, err) { t.FailNow() } - commands.GetOpenAPIFile = func(args []string) (s string, err error) { + old := ext.GetOpenAPIFile + defer func() { ext.GetOpenAPIFile = old }() + ext.GetOpenAPIFile = func(args []string) (s string, err error) { return f.Name(), nil } diff --git a/cmd/config/internal/commands/cmdcreatesubstitution.go b/cmd/config/internal/commands/cmdcreatesubstitution.go index c7d5e63c6..66bbba070 100644 --- a/cmd/config/internal/commands/cmdcreatesubstitution.go +++ b/cmd/config/internal/commands/cmdcreatesubstitution.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/kyaml/errors" "sigs.k8s.io/kustomize/kyaml/setters2" "sigs.k8s.io/kustomize/kyaml/setters2/settersutil" @@ -58,7 +59,7 @@ func (r *CreateSubstitutionRunner) preRunE(c *cobra.Command, args []string) erro return err } - r.OpenAPIFile, err = GetOpenAPIFile(args) + r.OpenAPIFile, err = ext.GetOpenAPIFile(args) if err != nil { return err } diff --git a/cmd/config/internal/commands/cmdcreatesubstitution_test.go b/cmd/config/internal/commands/cmdcreatesubstitution_test.go index 73bd77fd9..86e80cbe9 100644 --- a/cmd/config/internal/commands/cmdcreatesubstitution_test.go +++ b/cmd/config/internal/commands/cmdcreatesubstitution_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/commands" "sigs.k8s.io/kustomize/kyaml/openapi" ) @@ -120,7 +121,9 @@ spec: if !assert.NoError(t, err) { t.FailNow() } - commands.GetOpenAPIFile = func(args []string) (s string, err error) { + old := ext.GetOpenAPIFile + defer func() { ext.GetOpenAPIFile = old }() + ext.GetOpenAPIFile = func(args []string) (s string, err error) { return f.Name(), nil } diff --git a/cmd/config/internal/commands/cmdlistsetters.go b/cmd/config/internal/commands/cmdlistsetters.go index c4a8e29b5..e51f84fff 100644 --- a/cmd/config/internal/commands/cmdlistsetters.go +++ b/cmd/config/internal/commands/cmdlistsetters.go @@ -10,6 +10,7 @@ import ( "github.com/olekukonko/tablewriter" "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands" "sigs.k8s.io/kustomize/kyaml/setters" "sigs.k8s.io/kustomize/kyaml/setters2" @@ -55,7 +56,7 @@ func (r *ListSettersRunner) preRunE(c *cobra.Command, args []string) error { func (r *ListSettersRunner) runE(c *cobra.Command, args []string) error { if setterVersion == "v2" { // use setters v2 - path, err := GetOpenAPIFile(args) + path, err := ext.GetOpenAPIFile(args) if err != nil { return err } diff --git a/cmd/config/internal/commands/cmdlistsetters_test.go b/cmd/config/internal/commands/cmdlistsetters_test.go index 017ba6ce7..dbd97a2b4 100644 --- a/cmd/config/internal/commands/cmdlistsetters_test.go +++ b/cmd/config/internal/commands/cmdlistsetters_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/commands" "sigs.k8s.io/kustomize/kyaml/openapi" ) @@ -261,7 +262,9 @@ spec: t.FailNow() } defer os.Remove(f.Name()) - commands.GetOpenAPIFile = func(args []string) (s string, err error) { + old := ext.GetOpenAPIFile + defer func() { ext.GetOpenAPIFile = old }() + ext.GetOpenAPIFile = func(args []string) (s string, err error) { err = ioutil.WriteFile(f.Name(), []byte(test.openapi), 0600) if !assert.NoError(t, err) { t.FailNow() diff --git a/cmd/config/internal/commands/cmdset.go b/cmd/config/internal/commands/cmdset.go index a646fd1de..d549a616b 100644 --- a/cmd/config/internal/commands/cmdset.go +++ b/cmd/config/internal/commands/cmdset.go @@ -6,10 +6,10 @@ package commands import ( "fmt" "os" - "path/filepath" "github.com/olekukonko/tablewriter" "github.com/spf13/cobra" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/setters" @@ -43,10 +43,6 @@ func NewSetRunner(parent string) *SetRunner { var setterVersion string -var GetOpenAPIFile = func(args []string) (string, error) { - return filepath.Join(args[0], "kustomization"), nil -} - func SetCommand(parent string) *cobra.Command { return NewSetRunner(parent).Command } @@ -100,7 +96,7 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error { r.Set.Value = args[2] r.Set.Description = r.Perform.Description r.Set.SetBy = r.Perform.SetBy - r.OpenAPIFile, err = GetOpenAPIFile(args) + r.OpenAPIFile, err = ext.GetOpenAPIFile(args) if err != nil { return err } diff --git a/cmd/config/internal/commands/cmdset_test.go b/cmd/config/internal/commands/cmdset_test.go index 97b45fba5..f617660b7 100644 --- a/cmd/config/internal/commands/cmdset_test.go +++ b/cmd/config/internal/commands/cmdset_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "sigs.k8s.io/kustomize/cmd/config/ext" "sigs.k8s.io/kustomize/cmd/config/internal/commands" "sigs.k8s.io/kustomize/kyaml/openapi" ) @@ -224,7 +225,9 @@ spec: if !assert.NoError(t, err) { t.FailNow() } - commands.GetOpenAPIFile = func(args []string) (s string, err error) { + old := ext.GetOpenAPIFile + defer func() { ext.GetOpenAPIFile = old }() + ext.GetOpenAPIFile = func(args []string) (s string, err error) { return f.Name(), nil }