mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 18:10:59 +00:00
Improve error handling in kyaml libraries
This commit is contained in:
@@ -126,5 +126,5 @@ func (r *CatRunner) runE(c *cobra.Command, args []string) error {
|
||||
Style: yaml.GetStyle(r.Styles...),
|
||||
})
|
||||
|
||||
return kio.Pipeline{Inputs: inputs, Filters: fltr, Outputs: outputs}.Execute()
|
||||
return handleError(c, kio.Pipeline{Inputs: inputs, Filters: fltr, Outputs: outputs}.Execute())
|
||||
}
|
||||
|
||||
@@ -85,8 +85,8 @@ func (r *CountRunner) runE(c *cobra.Command, args []string) error {
|
||||
return nil
|
||||
}))
|
||||
}
|
||||
return kio.Pipeline{
|
||||
return handleError(c, kio.Pipeline{
|
||||
Inputs: inputs,
|
||||
Outputs: out,
|
||||
}.Execute()
|
||||
}.Execute())
|
||||
}
|
||||
|
||||
@@ -107,8 +107,8 @@ func (r *FmtRunner) runE(c *cobra.Command, args []string) error {
|
||||
Writer: c.OutOrStdout(),
|
||||
KeepReaderAnnotations: r.KeepAnnotations,
|
||||
}
|
||||
return kio.Pipeline{
|
||||
Inputs: []kio.Reader{rw}, Filters: f, Outputs: []kio.Writer{rw}}.Execute()
|
||||
return handleError(c, kio.Pipeline{
|
||||
Inputs: []kio.Reader{rw}, Filters: f, Outputs: []kio.Writer{rw}}.Execute())
|
||||
}
|
||||
|
||||
for i := range args {
|
||||
@@ -120,7 +120,7 @@ func (r *FmtRunner) runE(c *cobra.Command, args []string) error {
|
||||
err := kio.Pipeline{
|
||||
Inputs: []kio.Reader{rw}, Filters: f, Outputs: []kio.Writer{rw}}.Execute()
|
||||
if err != nil {
|
||||
return err
|
||||
return handleError(c, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -8,9 +8,9 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"sigs.k8s.io/kustomize/pseudo/k8s/apimachinery/pkg/api/resource"
|
||||
"sigs.k8s.io/kustomize/kyaml/kio"
|
||||
"sigs.k8s.io/kustomize/kyaml/kio/filters"
|
||||
"sigs.k8s.io/kustomize/pseudo/k8s/apimachinery/pkg/api/resource"
|
||||
)
|
||||
|
||||
// Cmd returns a command GrepRunner.
|
||||
@@ -133,12 +133,12 @@ func (r *GrepRunner) runE(c *cobra.Command, args []string) error {
|
||||
inputs = append(inputs, &kio.ByteReader{Reader: c.InOrStdin()})
|
||||
}
|
||||
|
||||
return kio.Pipeline{
|
||||
return handleError(c, kio.Pipeline{
|
||||
Inputs: inputs,
|
||||
Filters: filters,
|
||||
Outputs: []kio.Writer{kio.ByteWriter{
|
||||
Writer: c.OutOrStdout(),
|
||||
KeepReaderAnnotations: r.KeepAnnotations,
|
||||
}},
|
||||
}.Execute()
|
||||
}.Execute())
|
||||
}
|
||||
|
||||
@@ -76,5 +76,5 @@ func (r *MergeRunner) runE(c *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
filters := []kio.Filter{filters.MergeFilter{}, filters.FormatFilter{}}
|
||||
return kio.Pipeline{Inputs: inputs, Filters: filters, Outputs: outputs}.Execute()
|
||||
return handleError(c, kio.Pipeline{Inputs: inputs, Filters: filters, Outputs: outputs}.Execute())
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
|
||||
IncludeNonReconcilers: !r.excludeNonReconcilers,
|
||||
}}
|
||||
|
||||
return kio.Pipeline{
|
||||
return handleError(c, kio.Pipeline{
|
||||
Inputs: []kio.Reader{input},
|
||||
Filters: fltrs,
|
||||
Outputs: []kio.Writer{kio.TreeWriter{
|
||||
@@ -202,7 +202,7 @@ func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
|
||||
Writer: c.OutOrStdout(),
|
||||
Fields: fields,
|
||||
Structure: kio.TreeStructure(r.structure)}},
|
||||
}.Execute()
|
||||
}.Execute())
|
||||
}
|
||||
|
||||
func newField(val ...string) kio.TreeWriterField {
|
||||
|
||||
@@ -5,7 +5,11 @@ package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/go-errors/errors"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
// parseFieldPath parse a flag value into a field path
|
||||
@@ -34,3 +38,27 @@ func parseFieldPath(path string) ([]string, error) {
|
||||
}
|
||||
return newParts, nil
|
||||
}
|
||||
|
||||
func handleError(c *cobra.Command, err error) error {
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
if StackOnError {
|
||||
if err, ok := err.(*errors.Error); ok {
|
||||
fmt.Fprint(os.Stderr, fmt.Sprintf("%s", err.Stack()))
|
||||
}
|
||||
}
|
||||
|
||||
if ExitOnError {
|
||||
fmt.Fprintf(c.ErrOrStderr(), "Error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// ExitOnError if true, will cause commands to call os.Exit instead of returning an error.
|
||||
// Used for skipping printing usage on failure.
|
||||
var ExitOnError bool
|
||||
|
||||
// StackOnError if true, will print a stack trace on failure.
|
||||
var StackOnError bool
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
module sigs.k8s.io/kustomize/cmd/kyaml
|
||||
|
||||
go 1.12
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
github.com/go-errors/errors v1.0.1
|
||||
github.com/spf13/cobra v0.0.5
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
github.com/stretchr/testify v1.4.0
|
||||
sigs.k8s.io/kustomize/kyaml v0.0.0
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.0.0-20191109010559-74255f6badd9
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.0.0
|
||||
)
|
||||
|
||||
replace sigs.k8s.io/kustomize/kyaml v0.0.0 => ../../kyaml
|
||||
replace (
|
||||
sigs.k8s.io/kustomize/kyaml v0.0.0 => ../../kyaml
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.0.0 => ../../pseudo/k8s
|
||||
)
|
||||
|
||||
@@ -94,7 +94,6 @@ github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s=
|
||||
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
|
||||
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
@@ -143,7 +142,5 @@ k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||
k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
|
||||
k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.0.0-20191109010559-74255f6badd9 h1:y5HZbxpf+KDyXpXSIUaxkcDB2ot78v80aLHCJ/UiyLo=
|
||||
sigs.k8s.io/kustomize/pseudo/k8s v0.0.0-20191109010559-74255f6badd9/go.mod h1:bl/gVJgYYhJZCZdYU2BfnaKYAlqFkgbJEkpl302jEss=
|
||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
|
||||
@@ -22,6 +22,10 @@ var root = &cobra.Command{
|
||||
}
|
||||
|
||||
func main() {
|
||||
root.PersistentFlags().BoolVar(&cmd.StackOnError, "stack-trace", false,
|
||||
"print a stack-trace on failure")
|
||||
|
||||
cmd.ExitOnError = true
|
||||
root.AddCommand(cmd.GrepCommand())
|
||||
root.AddCommand(cmd.TreeCommand())
|
||||
root.AddCommand(cmd.CatCommand())
|
||||
|
||||
Reference in New Issue
Block a user