From 12bd3f800636a0f0a3d2bae70f9345ae7f072a7b Mon Sep 17 00:00:00 2001 From: Dayuan Date: Thu, 24 Nov 2022 15:54:56 +0800 Subject: [PATCH 1/3] fix: empty resources in stack will generate panic --- go.mod | 2 +- go.sum | 3 ++- pkg/kusionctl/cmd/apply/options.go | 8 ++++++++ pkg/kusionctl/cmd/preview/options.go | 8 ++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 11383f8a..9dd64ce7 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,7 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/src-d/go-git.v4 v4.13.1 gopkg.in/yaml.v2 v2.4.0 - gopkg.in/yaml.v3 v3.0.0 + gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.24.2 k8s.io/apimachinery v0.24.2 k8s.io/client-go v10.0.0+incompatible diff --git a/go.sum b/go.sum index dd8d7123..34cacfbb 100644 --- a/go.sum +++ b/go.sum @@ -1433,8 +1433,9 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20220512140231-539c8e751b99/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= diff --git a/pkg/kusionctl/cmd/apply/options.go b/pkg/kusionctl/cmd/apply/options.go index 894f027d..27aaebfe 100644 --- a/pkg/kusionctl/cmd/apply/options.go +++ b/pkg/kusionctl/cmd/apply/options.go @@ -24,6 +24,7 @@ import ( "kusionstack.io/kusion/pkg/log" "kusionstack.io/kusion/pkg/projectstack" "kusionstack.io/kusion/pkg/status" + "kusionstack.io/kusion/pkg/util/pretty" ) // ApplyOptions defines flags for the `apply` command @@ -73,6 +74,13 @@ func (o *ApplyOptions) Run() error { sp.Fail() return err } + + // return immediately if no resource found in stack + if planResources == nil || len(planResources.Resources) == 0 { + fmt.Println(pretty.GreenBold("\nNo resource found in this stack.")) + return nil + } + sp.Success() // Resolve spinner with success message. pterm.Println() diff --git a/pkg/kusionctl/cmd/preview/options.go b/pkg/kusionctl/cmd/preview/options.go index 00d3a16a..00fc5d1e 100644 --- a/pkg/kusionctl/cmd/preview/options.go +++ b/pkg/kusionctl/cmd/preview/options.go @@ -19,6 +19,7 @@ import ( "kusionstack.io/kusion/pkg/log" "kusionstack.io/kusion/pkg/projectstack" "kusionstack.io/kusion/pkg/status" + "kusionstack.io/kusion/pkg/util/pretty" ) type PreviewOptions struct { @@ -63,6 +64,13 @@ func (o *PreviewOptions) Run() error { // Get compile result planResources, sp, err := compile.CompileWithSpinner(o.WorkDir, o.Filenames, o.Settings, o.Arguments, o.Overrides, stack) + + // return immediately if no resource found in stack + if planResources == nil || len(planResources.Resources) == 0 { + fmt.Println(pretty.GreenBold("\nNo resource found in this stack.")) + return nil + } + if err != nil { sp.Fail() return err From d0516f19e3183f7769d25f5ac2f9ba1de679a694 Mon Sep 17 00:00:00 2001 From: Dayuan Date: Thu, 24 Nov 2022 15:54:56 +0800 Subject: [PATCH 2/3] fix: empty resources in stack will generate panic --- go.mod | 2 +- go.sum | 3 ++- pkg/kusionctl/cmd/apply/options.go | 8 ++++++++ pkg/kusionctl/cmd/preview/options.go | 8 ++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 11383f8a..9dd64ce7 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,7 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/src-d/go-git.v4 v4.13.1 gopkg.in/yaml.v2 v2.4.0 - gopkg.in/yaml.v3 v3.0.0 + gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.24.2 k8s.io/apimachinery v0.24.2 k8s.io/client-go v10.0.0+incompatible diff --git a/go.sum b/go.sum index dd8d7123..34cacfbb 100644 --- a/go.sum +++ b/go.sum @@ -1433,8 +1433,9 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20220512140231-539c8e751b99/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= diff --git a/pkg/kusionctl/cmd/apply/options.go b/pkg/kusionctl/cmd/apply/options.go index 894f027d..27aaebfe 100644 --- a/pkg/kusionctl/cmd/apply/options.go +++ b/pkg/kusionctl/cmd/apply/options.go @@ -24,6 +24,7 @@ import ( "kusionstack.io/kusion/pkg/log" "kusionstack.io/kusion/pkg/projectstack" "kusionstack.io/kusion/pkg/status" + "kusionstack.io/kusion/pkg/util/pretty" ) // ApplyOptions defines flags for the `apply` command @@ -73,6 +74,13 @@ func (o *ApplyOptions) Run() error { sp.Fail() return err } + + // return immediately if no resource found in stack + if planResources == nil || len(planResources.Resources) == 0 { + fmt.Println(pretty.GreenBold("\nNo resource found in this stack.")) + return nil + } + sp.Success() // Resolve spinner with success message. pterm.Println() diff --git a/pkg/kusionctl/cmd/preview/options.go b/pkg/kusionctl/cmd/preview/options.go index 00d3a16a..8e8c84c2 100644 --- a/pkg/kusionctl/cmd/preview/options.go +++ b/pkg/kusionctl/cmd/preview/options.go @@ -19,6 +19,7 @@ import ( "kusionstack.io/kusion/pkg/log" "kusionstack.io/kusion/pkg/projectstack" "kusionstack.io/kusion/pkg/status" + "kusionstack.io/kusion/pkg/util/pretty" ) type PreviewOptions struct { @@ -67,6 +68,13 @@ func (o *PreviewOptions) Run() error { sp.Fail() return err } + + // return immediately if no resource found in stack + if planResources == nil || len(planResources.Resources) == 0 { + fmt.Println(pretty.GreenBold("\nNo resource found in this stack.")) + return nil + } + sp.Success() // Resolve spinner with success message. pterm.Println() From aa6e9019b22fdd20d9709167a79b589e4d20367d Mon Sep 17 00:00:00 2001 From: Dayuan Date: Fri, 25 Nov 2022 14:24:10 +0800 Subject: [PATCH 3/3] fix: empty resources in stack will generate panic --- pkg/kusionctl/cmd/preview/options.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pkg/kusionctl/cmd/preview/options.go b/pkg/kusionctl/cmd/preview/options.go index 63ca8ebd..8e8c84c2 100644 --- a/pkg/kusionctl/cmd/preview/options.go +++ b/pkg/kusionctl/cmd/preview/options.go @@ -64,13 +64,6 @@ func (o *PreviewOptions) Run() error { // Get compile result planResources, sp, err := compile.CompileWithSpinner(o.WorkDir, o.Filenames, o.Settings, o.Arguments, o.Overrides, stack) - - // return immediately if no resource found in stack - if planResources == nil || len(planResources.Resources) == 0 { - fmt.Println(pretty.GreenBold("\nNo resource found in this stack.")) - return nil - } - if err != nil { sp.Fail() return err