From 5c482646d1b0cd48d89f47c5e9dbeca2b5dde345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Sun, 3 Sep 2023 22:14:42 +0200 Subject: [PATCH] refactor: introduce experimental cli package (#8222) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- cmd/cli/kubectl-kyverno/main.go | 13 +--- .../utils/experimental/experimental.go | 15 +++++ .../utils/experimental/experimental_test.go | 62 +++++++++++++++++++ 3 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 cmd/cli/kubectl-kyverno/utils/experimental/experimental.go create mode 100644 cmd/cli/kubectl-kyverno/utils/experimental/experimental_test.go diff --git a/cmd/cli/kubectl-kyverno/main.go b/cmd/cli/kubectl-kyverno/main.go index 2d7ba8b3f2..acadabe64e 100644 --- a/cmd/cli/kubectl-kyverno/main.go +++ b/cmd/cli/kubectl-kyverno/main.go @@ -4,7 +4,6 @@ import ( "flag" "fmt" "os" - "strconv" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/apply" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create" @@ -13,13 +12,12 @@ import ( "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/jp" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/oci" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/experimental" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/version" "github.com/kyverno/kyverno/pkg/logging" "github.com/spf13/cobra" ) -const enableExperimentalEnv = "KYVERNO_EXPERIMENTAL" - func main() { cli := &cobra.Command{ Use: "kyverno", @@ -42,13 +40,6 @@ func configureLogs(cli *cobra.Command) { cli.PersistentFlags().AddGoFlagSet(flag.CommandLine) } -func enableExperimental() bool { - if b, err := strconv.ParseBool(os.Getenv(enableExperimentalEnv)); err == nil { - return b - } - return false -} - func registerCommands(cli *cobra.Command) { cli.AddCommand( apply.Command(), @@ -58,7 +49,7 @@ func registerCommands(cli *cobra.Command) { test.Command(), version.Command(), ) - if enableExperimental() { + if experimental.IsExperimentalEnabled() { cli.AddCommand( fix.Command(), oci.Command(), diff --git a/cmd/cli/kubectl-kyverno/utils/experimental/experimental.go b/cmd/cli/kubectl-kyverno/utils/experimental/experimental.go new file mode 100644 index 0000000000..d8f26d12de --- /dev/null +++ b/cmd/cli/kubectl-kyverno/utils/experimental/experimental.go @@ -0,0 +1,15 @@ +package experimental + +import ( + "os" + "strconv" +) + +const experimentalEnv = "KYVERNO_EXPERIMENTAL" + +func IsExperimentalEnabled() bool { + if b, err := strconv.ParseBool(os.Getenv(experimentalEnv)); err == nil { + return b + } + return false +} diff --git a/cmd/cli/kubectl-kyverno/utils/experimental/experimental_test.go b/cmd/cli/kubectl-kyverno/utils/experimental/experimental_test.go new file mode 100644 index 0000000000..bcb1fcce12 --- /dev/null +++ b/cmd/cli/kubectl-kyverno/utils/experimental/experimental_test.go @@ -0,0 +1,62 @@ +package experimental + +import "testing" + +func TestIsExperimentalEnabled(t *testing.T) { + tests := []struct { + name string + env map[string]string + want bool + }{ + { + name: "enabled", + env: map[string]string{ + experimentalEnv: "true", + }, + want: true, + }, + { + name: "enabled", + env: map[string]string{ + experimentalEnv: "1", + }, + want: true, + }, + { + name: "enabled", + env: map[string]string{ + experimentalEnv: "t", + }, + want: true, + }, + { + name: "disabled", + env: map[string]string{ + experimentalEnv: "false", + }, + want: false, + }, + { + name: "not specified", + env: map[string]string{}, + want: false, + }, + { + name: "bad format", + env: map[string]string{ + experimentalEnv: "maybe", + }, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for k, v := range tt.env { + t.Setenv(k, v) + } + if got := IsExperimentalEnabled(); got != tt.want { + t.Errorf("IsExperimentalEnabled() = %v, want %v", got, tt.want) + } + }) + } +}