Make recurse logic public

This commit is contained in:
Phani Teja Marupaka
2020-10-14 14:00:01 -07:00
parent a458ed84f9
commit e9ff26bb1b
33 changed files with 217 additions and 198 deletions

View File

@@ -10,6 +10,7 @@ import (
"sigs.k8s.io/kustomize/cmd/config/internal/commands"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/api"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/tutorials"
"sigs.k8s.io/kustomize/cmd/config/runner"
)
// Export commands publicly for composition
@@ -35,13 +36,13 @@ var (
Wrap = commands.WrapCommand
XArgs = commands.XArgsCommand
StackOnError = &commands.StackOnError
ExitOnError = &commands.ExitOnError
StackOnError = &runner.StackOnError
ExitOnError = &runner.ExitOnError
)
// AddCommands adds the cfg and fn commands to kustomize.
func AddCommands(root *cobra.Command, name string) *cobra.Command {
commands.ExitOnError = true
runner.ExitOnError = true
root.PersistentFlags().BoolVar(StackOnError, "stack-trace", false,
"print a stack-trace on error")

View File

@@ -11,6 +11,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/errors"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -27,7 +28,7 @@ func NewAnnotateRunner(parent string) *AnnotateRunner {
Example: commands.AnnotateExamples,
RunE: r.runE,
}
fixDocs(parent, c)
runner.FixDocs(parent, c)
r.Command = c
c.Flags().StringVar(&r.Kind, "kind", "", "Resource kind to annotate")
c.Flags().StringVar(&r.ApiVersion, "apiVersion", "", "Resource apiVersion to annotate")
@@ -62,29 +63,29 @@ func (r *AnnotateRunner) runE(c *cobra.Command, args []string) error {
input = []kio.Reader{rw}
output = []kio.Writer{rw}
return handleError(c, kio.Pipeline{
return runner.HandleError(c, kio.Pipeline{
Inputs: input,
Filters: []kio.Filter{r},
Outputs: output,
}.Execute())
}
e := executeCmdOnPkgs{
writer: c.OutOrStdout(),
needOpenAPI: false,
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
rootPkgPath: args[0],
e := runner.ExecuteCmdOnPkgs{
Writer: c.OutOrStdout(),
NeedOpenAPI: false,
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
RootPkgPath: args[0],
}
err := e.execute()
err := e.Execute()
if err != nil {
return err
}
return nil
}
func (r *AnnotateRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *AnnotateRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
rw := &kio.LocalPackageReadWriter{
PackagePath: pkgPath,
NoDeleteFiles: true,

View File

@@ -13,6 +13,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/errors"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
@@ -30,7 +31,7 @@ func GetCatRunner(name string) *CatRunner {
RunE: r.runE,
Args: cobra.MaximumNArgs(1),
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().BoolVar(&r.Format, "format", true,
"format resource config yaml before printing.")
c.Flags().BoolVar(&r.KeepAnnotations, "annotate", false,
@@ -95,21 +96,21 @@ func (r *CatRunner) runE(c *cobra.Command, args []string) error {
if err != nil {
return err
}
return handleError(c, kio.Pipeline{Inputs: []kio.Reader{input}, Filters: r.catFilters(), Outputs: outputs}.Execute())
return runner.HandleError(c, kio.Pipeline{Inputs: []kio.Reader{input}, Filters: r.catFilters(), Outputs: outputs}.Execute())
}
out := &bytes.Buffer{}
e := executeCmdOnPkgs{
writer: out,
needOpenAPI: false,
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
rootPkgPath: args[0],
skipPkgPathPrint: true,
e := runner.ExecuteCmdOnPkgs{
Writer: out,
NeedOpenAPI: false,
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
RootPkgPath: args[0],
SkipPkgPathPrint: true,
}
err := e.execute()
err := e.Execute()
if err != nil {
return err
}
@@ -120,7 +121,7 @@ func (r *CatRunner) runE(c *cobra.Command, args []string) error {
return nil
}
func (r *CatRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *CatRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: ext.KRMFileName()}
out := &bytes.Buffer{}
outputs, err := r.out(out)

View File

@@ -15,6 +15,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/errors"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/setters"
@@ -63,7 +64,7 @@ func NewCreateSetterRunner(parent string) *CreateSetterRunner {
set.Flags().BoolVarP(&r.CreateSetter.RecurseSubPackages, "recurse-subpackages", "R", false,
"creates setter recursively in all the nested subpackages")
set.Flags().MarkHidden("version")
fixDocs(parent, set)
runner.FixDocs(parent, set)
r.Command = set
return r
}
@@ -81,7 +82,7 @@ type CreateSetterRunner struct {
}
func (r *CreateSetterRunner) runE(c *cobra.Command, args []string) error {
return handleError(c, r.createSetter(c, args))
return runner.HandleError(c, r.createSetter(c, args))
}
func (r *CreateSetterRunner) preRunE(c *cobra.Command, args []string) error {
@@ -179,16 +180,16 @@ func (r *CreateSetterRunner) processSchema() error {
func (r *CreateSetterRunner) createSetter(c *cobra.Command, args []string) error {
if setterVersion == "v2" {
e := executeCmdOnPkgs{
needOpenAPI: true,
writer: c.OutOrStdout(),
rootPkgPath: args[0],
recurseSubPackages: r.CreateSetter.RecurseSubPackages,
cmdRunner: r,
e := runner.ExecuteCmdOnPkgs{
NeedOpenAPI: true,
Writer: c.OutOrStdout(),
RootPkgPath: args[0],
RecurseSubPackages: r.CreateSetter.RecurseSubPackages,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if err != nil {
return handleError(c, err)
return runner.HandleError(c, err)
}
return nil
}
@@ -204,7 +205,7 @@ func (r *CreateSetterRunner) createSetter(c *cobra.Command, args []string) error
return nil
}
func (r *CreateSetterRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *CreateSetterRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
r.CreateSetter = settersutil.SetterCreator{
Name: r.CreateSetter.Name,
SetBy: r.CreateSetter.SetBy,

View File

@@ -10,6 +10,7 @@ import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/ext"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/setters2/settersutil"
)
@@ -32,7 +33,7 @@ func NewCreateSubstitutionRunner(parent string) *CreateSubstitutionRunner {
"creates substitution recursively in all the nested subpackages")
_ = cs.MarkFlagRequired("pattern")
_ = cs.MarkFlagRequired("field-value")
fixDocs(parent, cs)
runner.FixDocs(parent, cs)
r.Command = cs
return r
}
@@ -49,22 +50,22 @@ type CreateSubstitutionRunner struct {
}
func (r *CreateSubstitutionRunner) runE(c *cobra.Command, args []string) error {
e := executeCmdOnPkgs{
needOpenAPI: true,
writer: c.OutOrStdout(),
rootPkgPath: args[0],
recurseSubPackages: r.CreateSubstitution.RecurseSubPackages,
cmdRunner: r,
e := runner.ExecuteCmdOnPkgs{
NeedOpenAPI: true,
Writer: c.OutOrStdout(),
RootPkgPath: args[0],
RecurseSubPackages: r.CreateSubstitution.RecurseSubPackages,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if err != nil {
return handleError(c, err)
return runner.HandleError(c, err)
}
return nil
}
func (r *CreateSubstitutionRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *CreateSubstitutionRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
r.CreateSubstitution = settersutil.SubstitutionCreator{
Name: r.CreateSubstitution.Name,
FieldName: r.CreateSubstitution.FieldName,

View File

@@ -11,6 +11,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/fieldmeta"
"sigs.k8s.io/kustomize/kyaml/setters2/settersutil"
)
@@ -29,7 +30,7 @@ func NewDeleteSetterRunner(parent string) *DeleteSetterRunner {
}
c.Flags().BoolVarP(&r.RecurseSubPackages, "recurse-subpackages", "R", false,
"deletes setter recursively in all the nested subpackages")
fixDocs(parent, c)
runner.FixDocs(parent, c)
r.Command = c
return r
@@ -56,22 +57,21 @@ func (r *DeleteSetterRunner) preRunE(c *cobra.Command, args []string) error {
}
func (r *DeleteSetterRunner) runE(c *cobra.Command, args []string) error {
e := executeCmdOnPkgs{
needOpenAPI: true,
writer: c.OutOrStdout(),
rootPkgPath: args[0],
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
e := runner.ExecuteCmdOnPkgs{
NeedOpenAPI: true,
Writer: c.OutOrStdout(),
RootPkgPath: args[0],
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if err != nil {
return handleError(c, err)
return runner.HandleError(c, err)
}
return nil
}
func (r *DeleteSetterRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *DeleteSetterRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
r.DeleteSetter = settersutil.DeleterCreator{
Name: r.DeleteSetter.Name,
DefinitionPrefix: fieldmeta.SetterDefinitionPrefix,

View File

@@ -10,6 +10,7 @@ import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/ext"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/fieldmeta"
"sigs.k8s.io/kustomize/kyaml/setters2/settersutil"
)
@@ -25,7 +26,7 @@ func NewDeleteSubstitutionRunner(parent string) *DeleteSubstitutionRunner {
}
c.Flags().BoolVarP(&r.RecurseSubPackages, "recurse-subpackages", "R", false,
"deletes substitution recursively in all the nested subpackages")
fixDocs(parent, c)
runner.FixDocs(parent, c)
r.Command = c
return r
@@ -52,21 +53,21 @@ func (r *DeleteSubstitutionRunner) preRunE(c *cobra.Command, args []string) erro
}
func (r *DeleteSubstitutionRunner) runE(c *cobra.Command, args []string) error {
e := executeCmdOnPkgs{
needOpenAPI: true,
writer: c.OutOrStdout(),
rootPkgPath: args[0],
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
e := runner.ExecuteCmdOnPkgs{
NeedOpenAPI: true,
Writer: c.OutOrStdout(),
RootPkgPath: args[0],
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if err != nil {
return handleError(c, err)
return runner.HandleError(c, err)
}
return nil
}
func (r *DeleteSubstitutionRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *DeleteSubstitutionRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
r.DeleteSubstitution = settersutil.DeleterCreator{
Name: r.DeleteSubstitution.Name,
DefinitionPrefix: fieldmeta.SubstitutionDefinitionPrefix,

View File

@@ -11,6 +11,7 @@ import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/errors"
"sigs.k8s.io/kustomize/kyaml/krmfile"
)
@@ -26,7 +27,7 @@ func GetInitRunner(name string) *InitRunner {
Example: commands.InitExamples,
RunE: r.runE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
r.Command = c
return r
}

View File

@@ -14,6 +14,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/fieldmeta"
"sigs.k8s.io/kustomize/kyaml/setters"
"sigs.k8s.io/kustomize/kyaml/setters2"
@@ -37,7 +38,7 @@ func NewListSettersRunner(parent string) *ListSettersRunner {
"include substitutions in the output")
c.Flags().BoolVarP(&r.RecurseSubPackages, "recurse-subpackages", "R", true,
"list setters recursively in all the nested subpackages")
fixDocs(parent, c)
runner.FixDocs(parent, c)
r.Command = c
return r
}
@@ -67,24 +68,24 @@ func (r *ListSettersRunner) preRunE(c *cobra.Command, args []string) error {
func (r *ListSettersRunner) runE(c *cobra.Command, args []string) error {
if setterVersion == "v2" {
e := executeCmdOnPkgs{
needOpenAPI: true,
writer: c.OutOrStdout(),
rootPkgPath: args[0],
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
e := runner.ExecuteCmdOnPkgs{
NeedOpenAPI: true,
Writer: c.OutOrStdout(),
RootPkgPath: args[0],
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if err != nil {
return handleError(c, err)
return runner.HandleError(c, err)
}
return nil
}
return handleError(c, lookup(r.Lookup, c, args))
return runner.HandleError(c, lookup(r.Lookup, c, args))
}
func (r *ListSettersRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *ListSettersRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
r.List = setters2.List{
Name: r.List.Name,
OpenAPIFileName: ext.KRMFileName(),
@@ -130,7 +131,7 @@ func (r *ListSettersRunner) ListSetters(w io.Writer, openAPIPath, resourcePath s
if len(r.List.Setters) == 0 {
// exit non-0 if no matching setters are found
if ExitOnError {
if runner.ExitOnError {
os.Exit(1)
}
}

View File

@@ -13,6 +13,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/errors"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/setters"
@@ -31,7 +32,7 @@ func NewSetRunner(parent string) *SetRunner {
PreRunE: r.preRunE,
RunE: r.runE,
}
fixDocs(parent, c)
runner.FixDocs(parent, c)
r.Command = c
c.Flags().StringArrayVar(&r.Values, "values", []string{},
"optional flag, the values of the setter to be set to")
@@ -131,26 +132,26 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error {
func (r *SetRunner) runE(c *cobra.Command, args []string) error {
if setterVersion == "v2" {
e := executeCmdOnPkgs{
needOpenAPI: true,
writer: c.OutOrStdout(),
rootPkgPath: args[0],
recurseSubPackages: r.Set.RecurseSubPackages,
cmdRunner: r,
e := runner.ExecuteCmdOnPkgs{
NeedOpenAPI: true,
Writer: c.OutOrStdout(),
RootPkgPath: args[0],
RecurseSubPackages: r.Set.RecurseSubPackages,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if err != nil {
return handleError(c, err)
return runner.HandleError(c, err)
}
return nil
}
if len(args) > 2 || c.Flag("values").Changed {
return handleError(c, r.perform(c, args))
return runner.HandleError(c, r.perform(c, args))
}
return handleError(c, lookup(r.Lookup, c, args))
return runner.HandleError(c, lookup(r.Lookup, c, args))
}
func (r *SetRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *SetRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
r.Set = settersutil.FieldSetter{
Name: r.Set.Name,
Value: r.Set.Value,

View File

@@ -10,6 +10,7 @@ import (
"path/filepath"
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
)
@@ -135,5 +136,5 @@ func (r *WrapRunner) runE(c *cobra.Command, args []string) error {
Writer: c.OutOrStdout(),
WrappingKind: kio.ResourceListKind,
WrappingAPIVersion: kio.ResourceListAPIVersion}}}.Execute()
return handleError(c, err)
return runner.HandleError(c, err)
}

View File

@@ -11,6 +11,7 @@ import (
"unicode"
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/yaml"
)
@@ -211,7 +212,7 @@ func (r *XArgsRunner) runE(c *cobra.Command, _ []string) error {
return err
}
return handleError(c, run.Run())
return runner.HandleError(c, run.Run())
}
func parseYNode(node *yaml.Node) string {

View File

@@ -11,6 +11,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/sets"
"sigs.k8s.io/kustomize/kyaml/yaml"
@@ -26,7 +27,7 @@ func GetCountRunner(name string) *CountRunner {
Example: commands.CountExamples,
RunE: r.runE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().BoolVar(&r.Kind, "kind", true,
"count resources by kind.")
c.Flags().BoolVarP(&r.RecurseSubPackages, "recurse-subpackages", "R", true,
@@ -51,24 +52,24 @@ func (r *CountRunner) runE(c *cobra.Command, args []string) error {
if len(args) == 0 {
input := &kio.ByteReader{Reader: c.InOrStdin()}
return handleError(c, kio.Pipeline{
return runner.HandleError(c, kio.Pipeline{
Inputs: []kio.Reader{input},
Outputs: r.out(c.OutOrStdout()),
}.Execute())
}
e := executeCmdOnPkgs{
writer: c.OutOrStdout(),
needOpenAPI: false,
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
rootPkgPath: args[0],
e := runner.ExecuteCmdOnPkgs{
Writer: c.OutOrStdout(),
NeedOpenAPI: false,
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
RootPkgPath: args[0],
}
return e.execute()
return e.Execute()
}
func (r *CountRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *CountRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: ext.KRMFileName()}
err := kio.Pipeline{

View File

@@ -10,6 +10,7 @@ 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/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
)
@@ -25,7 +26,7 @@ func GetFmtRunner(name string) *FmtRunner {
RunE: r.runE,
PreRunE: r.preRunE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().StringVar(&r.FilenamePattern, "pattern", filters.DefaultFilenamePattern,
`pattern to use for generating filenames for resources -- may contain the following
formatting substitution verbs {'%n': 'metadata.name', '%s': 'metadata.namespace', '%k': 'kind'}`)
@@ -74,20 +75,20 @@ func (r *FmtRunner) runE(c *cobra.Command, args []string) error {
Writer: c.OutOrStdout(),
KeepReaderAnnotations: r.KeepAnnotations,
}
return handleError(c, kio.Pipeline{
return runner.HandleError(c, kio.Pipeline{
Inputs: []kio.Reader{rw}, Filters: r.fmtFilters(), Outputs: []kio.Writer{rw}}.Execute())
}
for _, rootPkgPath := range args {
e := executeCmdOnPkgs{
writer: c.OutOrStdout(),
needOpenAPI: false,
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
rootPkgPath: rootPkgPath,
e := runner.ExecuteCmdOnPkgs{
Writer: c.OutOrStdout(),
NeedOpenAPI: false,
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
RootPkgPath: rootPkgPath,
}
err := e.execute()
err := e.Execute()
if err != nil {
return err
}
@@ -95,7 +96,7 @@ func (r *FmtRunner) runE(c *cobra.Command, args []string) error {
return nil
}
func (r *FmtRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *FmtRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
rw := &kio.LocalPackageReadWriter{
NoDeleteFiles: true,
PackagePath: pkgPath,

View File

@@ -13,6 +13,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"sigs.k8s.io/kustomize/cmd/config/ext"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
)
@@ -29,7 +30,7 @@ func GetGrepRunner(name string) *GrepRunner {
RunE: r.runE,
Args: cobra.MaximumNArgs(2),
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().BoolVar(&r.KeepAnnotations, "annotate", true,
"annotate resources with their file origins.")
c.Flags().BoolVarP(&r.InvertMatch, "invert-match", "", false,
@@ -66,7 +67,7 @@ func (r *GrepRunner) preRunE(c *cobra.Command, args []string) error {
return qa.Cmp(qb), err
}
parts, err := parseFieldPath(args[0])
parts, err := runner.ParseFieldPath(args[0])
if err != nil {
return err
}
@@ -105,7 +106,7 @@ func (r *GrepRunner) preRunE(c *cobra.Command, args []string) error {
func (r *GrepRunner) runE(c *cobra.Command, args []string) error {
if len(args) == 1 {
input := &kio.ByteReader{Reader: c.InOrStdin()}
return handleError(c, kio.Pipeline{
return runner.HandleError(c, kio.Pipeline{
Inputs: []kio.Reader{input},
Filters: []kio.Filter{r.GrepFilter},
Outputs: []kio.Writer{kio.ByteWriter{
@@ -117,16 +118,16 @@ func (r *GrepRunner) runE(c *cobra.Command, args []string) error {
out := bytes.Buffer{}
e := executeCmdOnPkgs{
writer: &out,
needOpenAPI: false,
recurseSubPackages: r.RecurseSubPackages,
cmdRunner: r,
rootPkgPath: args[1],
skipPkgPathPrint: true,
e := runner.ExecuteCmdOnPkgs{
Writer: &out,
NeedOpenAPI: false,
RecurseSubPackages: r.RecurseSubPackages,
CmdRunner: r,
RootPkgPath: args[1],
SkipPkgPathPrint: true,
}
err := e.execute()
err := e.Execute()
if err != nil {
return err
}
@@ -138,7 +139,7 @@ func (r *GrepRunner) runE(c *cobra.Command, args []string) error {
}
func (r *GrepRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *GrepRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: ext.KRMFileName()}
out := &bytes.Buffer{}
err := kio.Pipeline{

View File

@@ -6,6 +6,7 @@ package commands
import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
)
@@ -19,7 +20,7 @@ func GetMergeRunner(name string) *MergeRunner {
Example: commands.MergeExamples,
RunE: r.runE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
r.Command = c
r.Command.Flags().BoolVar(&r.InvertOrder, "invert-order", false,
"if true, merge Resources in the reverse order")
@@ -64,5 +65,5 @@ func (r *MergeRunner) runE(c *cobra.Command, args []string) error {
}
filters := []kio.Filter{filters.MergeFilter{}, filters.FormatFilter{}}
return handleError(c, kio.Pipeline{Inputs: inputs, Filters: filters, Outputs: outputs}.Execute())
return runner.HandleError(c, kio.Pipeline{Inputs: inputs, Filters: filters, Outputs: outputs}.Execute())
}

View File

@@ -6,6 +6,7 @@ package commands
import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
)
@@ -18,7 +19,7 @@ func GetMerge3Runner(name string) *Merge3Runner {
Example: commands.Merge3Examples,
RunE: r.runE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().StringVar(&r.ancestor, "ancestor", "",
"Path to original package")
c.Flags().StringVar(&r.fromDir, "from", "",

View File

@@ -9,6 +9,7 @@ import (
"strings"
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/errors"
"sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil"
@@ -29,7 +30,7 @@ func GetRunFnRunner(name string) *RunFnRunner {
RunE: r.runE,
PreRunE: r.preRunE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().BoolVar(&r.IncludeSubpackages, "include-subpackages", true,
"also print resources from subpackages.")
r.Command = c
@@ -103,7 +104,7 @@ type RunFnRunner struct {
}
func (r *RunFnRunner) runE(c *cobra.Command, args []string) error {
return handleError(c, r.RunFns.Execute())
return runner.HandleError(c, r.RunFns.Execute())
}
// getContainerFunctions parses the commandline flags and arguments into explicit

View File

@@ -6,6 +6,7 @@ package commands
import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/kio/kioutil"
)
@@ -21,7 +22,7 @@ func GetSinkRunner(name string) *SinkRunner {
RunE: r.runE,
Args: cobra.MaximumNArgs(1),
}
fixDocs(name, c)
runner.FixDocs(name, c)
r.Command = c
return r
}
@@ -49,5 +50,5 @@ func (r *SinkRunner) runE(c *cobra.Command, args []string) error {
err := kio.Pipeline{
Inputs: []kio.Reader{&kio.ByteReader{Reader: c.InOrStdin()}},
Outputs: outputs}.Execute()
return handleError(c, err)
return runner.HandleError(c, err)
}

View File

@@ -8,6 +8,7 @@ import (
"github.com/spf13/cobra"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio"
"sigs.k8s.io/kustomize/kyaml/yaml"
)
@@ -22,7 +23,7 @@ func GetSourceRunner(name string) *SourceRunner {
Example: commands.SourceExamples,
RunE: r.runE,
}
fixDocs(name, c)
runner.FixDocs(name, c)
c.Flags().StringVar(&r.WrapKind, "wrap-kind", kio.ResourceListKind,
"output using this format.")
c.Flags().StringVar(&r.WrapApiVersion, "wrap-version", kio.ResourceListAPIVersion,
@@ -78,5 +79,5 @@ func (r *SourceRunner) runE(c *cobra.Command, args []string) error {
}
err := kio.Pipeline{Inputs: inputs, Outputs: outputs}.Execute()
return handleError(c, err)
return runner.HandleError(c, err)
}

View File

@@ -9,6 +9,7 @@ import (
"sigs.k8s.io/kustomize/cmd/config/ext"
"sigs.k8s.io/kustomize/cmd/config/internal/generateddocs/commands"
"sigs.k8s.io/kustomize/cmd/config/runner"
"sigs.k8s.io/kustomize/kyaml/kio/filters"
"github.com/spf13/cobra"
@@ -26,7 +27,7 @@ func GetTreeRunner(name string) *TreeRunner {
RunE: r.runE,
Args: cobra.MaximumNArgs(1),
}
fixDocs(name, c)
runner.FixDocs(name, c)
// TODO(pwittrock): Figure out if these are the right things to expose, and consider making it
// a list of options instead of individual flags
@@ -91,7 +92,7 @@ func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
var fields []kio.TreeWriterField
for _, field := range r.fields {
path, err := parseFieldPath(field)
path, err := runner.ParseFieldPath(field)
if err != nil {
return err
}
@@ -155,7 +156,7 @@ func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
ExcludeNonLocalConfig: r.excludeNonLocal,
}}
return handleError(c, kio.Pipeline{
return runner.HandleError(c, kio.Pipeline{
Inputs: []kio.Reader{input},
Filters: fltrs,
Outputs: []kio.Writer{kio.TreeWriter{

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
//
package commands
package runner
import (
"fmt"
@@ -17,72 +17,72 @@ import (
"sigs.k8s.io/kustomize/kyaml/pathutil"
)
// cmdRunner interface holds executeCmd definition which executes respective command's
// CmdRunner interface holds ExecuteCmd definition which executes respective command's
// implementation on single package
type cmdRunner interface {
executeCmd(w io.Writer, pkgPath string) error
type CmdRunner interface {
ExecuteCmd(w io.Writer, pkgPath string) error
}
// executeCmdOnPkgs struct holds the parameters necessary to
// ExecuteCmdOnPkgs struct holds the parameters necessary to
// execute the filter command on packages in rootPkgPath
type executeCmdOnPkgs struct {
rootPkgPath string
recurseSubPackages bool
needOpenAPI bool
cmdRunner cmdRunner
writer io.Writer
skipPkgPathPrint bool
type ExecuteCmdOnPkgs struct {
RootPkgPath string
RecurseSubPackages bool
NeedOpenAPI bool
CmdRunner CmdRunner
Writer io.Writer
SkipPkgPathPrint bool
}
// executeCmdOnPkgs takes the function definition for a command to be executed on single package, applies that definition
// ExecuteCmdOnPkgs takes the function definition for a command to be executed on single package, applies that definition
// recursively on all the subpackages present in rootPkgPath if recurseSubPackages is true, else applies the command on rootPkgPath only
func (e executeCmdOnPkgs) execute() error {
pkgsPaths, err := pathutil.DirsWithFile(e.rootPkgPath, ext.KRMFileName(), e.recurseSubPackages)
func (e ExecuteCmdOnPkgs) Execute() error {
pkgsPaths, err := pathutil.DirsWithFile(e.RootPkgPath, ext.KRMFileName(), e.RecurseSubPackages)
if err != nil {
return err
}
if len(pkgsPaths) == 0 {
// at this point, there are no openAPI files in the rootPkgPath
if e.needOpenAPI {
if e.NeedOpenAPI {
// few executions need openAPI file to be present(ex: setters commands), if true throw an error
return errors.Errorf("unable to find %q in package %q", ext.KRMFileName(), e.rootPkgPath)
return errors.Errorf("unable to find %q in package %q", ext.KRMFileName(), e.RootPkgPath)
}
// add root path for commands which doesn't need openAPI(ex: annotate, fmt)
pkgsPaths = []string{e.rootPkgPath}
pkgsPaths = []string{e.RootPkgPath}
}
// for commands which doesn't need openAPI file, make sure that the root package is
// included all the times
if !e.needOpenAPI && !containsString(pkgsPaths, e.rootPkgPath) {
pkgsPaths = append([]string{e.rootPkgPath}, pkgsPaths...)
if !e.NeedOpenAPI && !containsString(pkgsPaths, e.RootPkgPath) {
pkgsPaths = append([]string{e.RootPkgPath}, pkgsPaths...)
}
for i := range pkgsPaths {
pkgPath := pkgsPaths[i]
// Add schema present in openAPI file for current package
if e.needOpenAPI {
if e.NeedOpenAPI {
if err := openapi.AddSchemaFromFile(filepath.Join(pkgPath, ext.KRMFileName())); err != nil {
return err
}
}
if !e.skipPkgPathPrint {
fmt.Fprintf(e.writer, "%s/\n", pkgPath)
if !e.SkipPkgPathPrint {
fmt.Fprintf(e.Writer, "%s/\n", pkgPath)
}
err := e.cmdRunner.executeCmd(e.writer, pkgPath)
err := e.CmdRunner.ExecuteCmd(e.Writer, pkgPath)
if err != nil {
return err
}
if i != len(pkgsPaths)-1 {
fmt.Fprint(e.writer, "\n")
fmt.Fprint(e.Writer, "\n")
}
// Delete schema present in openAPI file for current package
if e.needOpenAPI {
if e.NeedOpenAPI {
if err := openapi.DeleteSchemaInFile(filepath.Join(pkgPath, ext.KRMFileName())); err != nil {
return err
}
@@ -91,8 +91,8 @@ func (e executeCmdOnPkgs) execute() error {
return nil
}
// parseFieldPath parse a flag value into a field path
func parseFieldPath(path string) ([]string, error) {
// ParseFieldPath parse a flag value into a field path
func ParseFieldPath(path string) ([]string, error) {
// fixup '\.' so we don't split on it
match := strings.ReplaceAll(path, "\\.", "$$$$")
parts := strings.Split(match, ".")
@@ -118,7 +118,7 @@ func parseFieldPath(path string) ([]string, error) {
return newParts, nil
}
func handleError(c *cobra.Command, err error) error {
func HandleError(c *cobra.Command, err error) error {
if err == nil {
return nil
}
@@ -145,7 +145,7 @@ var StackOnError bool
const cmdName = "kustomize config"
// FixDocs replaces instances of old with new in the docs for c
func fixDocs(new string, c *cobra.Command) {
func FixDocs(new string, c *cobra.Command) {
c.Use = strings.ReplaceAll(c.Use, cmdName, new)
c.Short = strings.ReplaceAll(c.Short, cmdName, new)
c.Long = strings.ReplaceAll(c.Long, cmdName, new)

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package commands
package runner
import (
"bytes"
@@ -76,14 +76,14 @@ ${baseDir}/subpkg2/subpkg3/
t.Run(test.name, func(t *testing.T) {
actual := &bytes.Buffer{}
r := &TestRunner{}
e := executeCmdOnPkgs{
needOpenAPI: test.needOpenAPI,
writer: actual,
rootPkgPath: filepath.Join(dir, test.pkgPath),
recurseSubPackages: test.recurse,
cmdRunner: r,
e := ExecuteCmdOnPkgs{
NeedOpenAPI: test.needOpenAPI,
Writer: actual,
RootPkgPath: filepath.Join(dir, test.pkgPath),
RecurseSubPackages: test.recurse,
CmdRunner: r,
}
err := e.execute()
err := e.Execute()
if test.errMsg == "" {
if !assert.NoError(t, err) {
t.FailNow()
@@ -170,7 +170,7 @@ func createTestDirStructure(dir string) error {
type TestRunner struct{}
func (r *TestRunner) executeCmd(w io.Writer, pkgPath string) error {
func (r *TestRunner) ExecuteCmd(w io.Writer, pkgPath string) error {
children, err := ioutil.ReadDir(pkgPath)
if err != nil {
return err

View File

@@ -8,7 +8,7 @@ import (
)
// EnabkeAlphaCommmandsEnvName is the environment variable used to enable Alpha kustomize commands.
//If set to "true" alpha commands will be enabled.
// If set to "true" alpha commands will be enabled.
const EnableAlphaCommmandsEnvName = "KUSTOMIZE_ENABLE_ALPHA_COMMANDS"
// GetAlphaEnabled returns true if alpha commands should be enabled.

View File

@@ -64,7 +64,7 @@ run(ctx.resource_list["items"])
Filters: []kio.Filter{fltr},
Outputs: []kio.Writer{&kio.ByteWriter{Writer: output}}}.Execute()
if err != nil {
log.Fatal(err)
log.Println(err)
}
fmt.Println(output.String())
@@ -131,7 +131,7 @@ spec:
value: "hello world"
`)
if err != nil {
log.Fatal(err)
log.Println(err)
}
// fltr transforms the input using a starlark program
@@ -156,7 +156,7 @@ run(ctx.resource_list["items"], ctx.resource_list["functionConfig"]["spec"]["val
Filters: []kio.Filter{fltr},
Outputs: []kio.Writer{&kio.ByteWriter{Writer: output}}}.Execute()
if err != nil {
log.Fatal(err)
log.Println(err)
}
fmt.Println(output.String())
@@ -197,7 +197,7 @@ func ExampleFilter_Filter_file() {
// setup the configuration
d, err := ioutil.TempDir("", "")
if err != nil {
log.Fatal(err)
log.Println(err)
}
defer os.RemoveAll(d)
@@ -214,7 +214,7 @@ spec:
image: nginx:1.8.1 # {"$ref": "#/definitions/io.k8s.cli.substitutions.image-1"}
`), 0600)
if err != nil {
log.Fatal(err)
log.Println(err)
}
err = ioutil.WriteFile(filepath.Join(d, "deploy2.yaml"), []byte(`
@@ -230,7 +230,7 @@ spec:
image: nginx:1.7.9 # {"$ref": "#/definitions/io.k8s.cli.substitutions.image-2"}
`), 0600)
if err != nil {
log.Fatal(err)
log.Println(err)
}
err = ioutil.WriteFile(filepath.Join(d, "annotate.star"), []byte(`
@@ -241,7 +241,7 @@ def run(items):
run(ctx.resource_list["items"])
`), 0600)
if err != nil {
log.Fatal(err)
log.Println(err)
}
fltr := &starlark.Filter{
@@ -261,7 +261,7 @@ run(ctx.resource_list["items"])
ClearAnnotations: []string{"config.kubernetes.io/path"},
}}}.Execute()
if err != nil {
log.Fatal(err)
log.Println(err)
}
fmt.Println(output.String())

View File

@@ -117,7 +117,7 @@ func (r *ByteReader) Read() ([]*yaml.RNode, error) {
}
// replace the ending \r\n (line ending used in windows) with \n and then separate by \n---\n
values := strings.Split(strings.Replace(input.String(), "\r\n", "\n", -1), "\n---\n")
values := strings.Split(strings.ReplaceAll(input.String(), "\r\n", "\n"), "\n---\n")
index := 0
for i := range values {

View File

@@ -170,9 +170,9 @@ func (f *FileSetter) Filter(input []*yaml.RNode) ([]*yaml.RNode, error) {
return nil, err
}
file := f.FilenamePattern
file = strings.Replace(file, string(KindFmt), strings.ToLower(m.Kind), -1)
file = strings.Replace(file, string(NameFmt), strings.ToLower(m.Name), -1)
file = strings.Replace(file, string(NamespaceFmt), strings.ToLower(m.Namespace), -1)
file = strings.ReplaceAll(file, string(KindFmt), strings.ToLower(m.Kind))
file = strings.ReplaceAll(file, string(NameFmt), strings.ToLower(m.Name))
file = strings.ReplaceAll(file, string(NamespaceFmt), strings.ToLower(m.Namespace))
if _, found := m.Annotations[kioutil.PathAnnotation]; !found || f.Override {
if _, err := input[i].Pipe(yaml.SetAnnotation(kioutil.PathAnnotation, file)); err != nil {

View File

@@ -68,7 +68,7 @@ func (f GrepFilter) Filter(input []*yaml.RNode) ([]*yaml.RNode, error) {
if err != nil {
return err
}
str = strings.TrimSpace(strings.Replace(str, `"`, "", -1))
str = strings.TrimSpace(strings.ReplaceAll(str, `"`, ""))
} else {
// if not regexp, then it needs to parse into a quantity and comments will
// break that

View File

@@ -5,7 +5,6 @@ package kio_test
import (
"bytes"
"fmt"
"testing"
"github.com/stretchr/testify/assert"
@@ -69,7 +68,7 @@ spec:
t.FailNow()
}
if !assert.Equal(t, fmt.Sprintf(`
if !assert.Equal(t, `
├── bar-package
│   └── [f2.yaml] Deployment bar
└── foo-package
@@ -77,7 +76,7 @@ spec:
├── [f1.yaml] Service default/foo
└── 3
└── [f3.yaml] Deployment default/foo
`), out.String()) {
`, out.String()) {
t.FailNow()
}
}

View File

@@ -114,7 +114,7 @@ func (fs *fieldSetter) set(
}
// be sure to set the tag to the matching type so the yaml doesn't incorrectly quote
//integers or booleans as strings
// integers or booleans as strings
fType := fieldmeta.FieldValueType(f.Schema.Type[0])
if err := fType.Validate(field.YNode().Value); err != nil {
return err

View File

@@ -281,13 +281,13 @@ packageMetadata:
func TestAdd_Filter2(t *testing.T) {
path := filepath.Join(os.TempDir(), "resourcefile")
//write initial resourcefile to temp path
// write initial resourcefile to temp path
err := ioutil.WriteFile(path, []byte(resourcefile), 0666)
if !assert.NoError(t, err) {
t.FailNow()
}
//add a setter definition
// add a setter definition
sd := SetterDefinition{
Name: "image",
Value: "1",

View File

@@ -36,7 +36,7 @@ type substitutionSetterReference struct {
Marker string `yaml:"marker,omitempty" json:"marker,omitempty"`
}
//K8sCliExtensionKey is the name of the OpenAPI field containing the setter extensions
// K8sCliExtensionKey is the name of the OpenAPI field containing the setter extensions
const K8sCliExtensionKey = "x-k8s-cli"
// GetExtFromSchema returns the cliExtension openAPI extension if it is present in schema

View File

@@ -15,7 +15,7 @@ var fieldSortOrder = []string{
// secret and configmap
"stringData", "data", "binaryData",
//cronjobspec, daemonsetspec, deploymentspec, statefulsetspec,
// cronjobspec, daemonsetspec, deploymentspec, statefulsetspec,
// jobspec fields
"parallelism", "completions", "activeDeadlineSeconds", "backoffLimit",
"replicas", "selector", "manualSelector", "template",