mirror of https://github.com/kubevela/kubevela.git
Fix(cli): return non-zero exit code on `vela def render` error (#6818)
* fix exit code on render error Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com> * minor changes Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com> * fix error catch logic Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com> --------- Signed-off-by: 7h3-3mp7y-m4n <emailtorash@gmail.com>
This commit is contained in:
parent
e533898192
commit
6fbeb6887f
|
@ -837,13 +837,20 @@ func NewDefinitionRenderCommand(c common.Args) *cobra.Command {
|
|||
return errors.Wrapf(err, "failed to read directory %s", args[0])
|
||||
}
|
||||
}
|
||||
var renderErrs []error
|
||||
for i, inputFilename := range inputFilenames {
|
||||
if err = render(inputFilename, outputFilenames[i]); err != nil {
|
||||
if _, err = fmt.Fprintf(cmd.ErrOrStderr(), "failed to render %s, reason: %v", inputFilename, err); err != nil {
|
||||
return errors.Wrapf(err, "failed to write err")
|
||||
renderErr := render(inputFilename, outputFilenames[i])
|
||||
if renderErr != nil {
|
||||
wrappedRenderErr := errors.Wrapf(renderErr, "failed to render %s", inputFilename)
|
||||
if _, writeErr := fmt.Fprintln(cmd.ErrOrStderr(), wrappedRenderErr); writeErr != nil {
|
||||
renderErrs = append(renderErrs, errors.Wrapf(writeErr, "failed to write to stderr for %s", inputFilename))
|
||||
}
|
||||
renderErrs = append(renderErrs, wrappedRenderErr)
|
||||
}
|
||||
}
|
||||
if len(renderErrs) > 0 {
|
||||
return fmt.Errorf("rendering failed for %d file(s)", len(renderErrs))
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
|
|
@ -543,7 +543,7 @@ func TestNewDefinitionRenderCommand(t *testing.T) {
|
|||
defer removeFile(traitFilename, t)
|
||||
cmd.SetArgs([]string{traitFilename})
|
||||
if err := cmd.Execute(); err != nil {
|
||||
t.Fatalf("unexpeced error when executing redner command: %v", err)
|
||||
t.Fatalf("unexpected error when executing render command on single file: %v", err)
|
||||
}
|
||||
// directory read/write test
|
||||
_ = os.Setenv(HelmChartFormatEnvName, "system")
|
||||
|
@ -558,16 +558,22 @@ func TestNewDefinitionRenderCommand(t *testing.T) {
|
|||
initCommand(cmd)
|
||||
cmd.SetArgs([]string{dirname, "-o", outputDir, "--message", "Author: KubeVela"})
|
||||
if err := cmd.Execute(); err != nil {
|
||||
t.Fatalf("unexpeced error when executing render command: %v", err)
|
||||
t.Fatalf("unexpected error when executing render command on valid directory: %v", err)
|
||||
}
|
||||
// directory read/print test
|
||||
_ = os.WriteFile(filepath.Join(dirname, "temp.json"), []byte("hello"), 0600)
|
||||
_ = os.WriteFile(filepath.Join(dirname, "temp.cue"), []byte("hello"), 0600)
|
||||
require.NoError(t, os.WriteFile(filepath.Join(dirname, "temp.json"), []byte("hello"), 0600)) // ignored
|
||||
badCueFile := filepath.Join(dirname, "temp.cue")
|
||||
require.NoError(t, os.WriteFile(badCueFile, []byte("hello"), 0600))
|
||||
|
||||
cmd = NewDefinitionRenderCommand(c)
|
||||
initCommand(cmd)
|
||||
cmd.SetArgs([]string{dirname})
|
||||
if err := cmd.Execute(); err != nil {
|
||||
t.Fatalf("unexpeced error when executing render command: %v", err)
|
||||
err = cmd.Execute()
|
||||
if err == nil {
|
||||
t.Fatalf("expected error when executing render command with invalid CUE file, got nil")
|
||||
}
|
||||
if !strings.Contains(err.Error(), "rendering failed for") {
|
||||
t.Fatalf("unexpected error message: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue