From 4f0848520d4cdd679c76479949546002c5935e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arda=20G=C3=BC=C3=A7l=C3=BC?= Date: Mon, 4 Oct 2021 13:02:34 +0300 Subject: [PATCH] Add diff command return status code greater than 1 when flags invalid This PR adds flagerror handler function to detect when flags are invalid. Default flag handler returns status code 1. However, diff command embraces this status code as changes are found. By overriding flag errors, this PR shows same message with default case and returns status code 2. --- staging/src/k8s.io/kubectl/pkg/cmd/diff/diff.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/diff/diff.go b/staging/src/k8s.io/kubectl/pkg/cmd/diff/diff.go index 7b810ec938f..5c47744389b 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/diff/diff.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/diff/diff.go @@ -160,6 +160,14 @@ func NewCmdDiff(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.C }, } + // Flag errors exit with code 1, however according to the diff + // command it means changes were found. + // Thus, it should return status code greater than 1. + cmd.SetFlagErrorFunc(func(command *cobra.Command, err error) error { + cmdutil.CheckDiffErr(cmdutil.UsageErrorf(cmd, err.Error())) + return nil + }) + usage := "contains the configuration to diff" cmd.Flags().StringVarP(&options.Selector, "selector", "l", options.Selector, "Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)") cmdutil.AddFilenameOptionFlags(cmd, &options.FilenameOptions, usage)