diff --git a/cmd/cli/kubectl-kyverno/apply/.gitignore b/cmd/cli/kubectl-kyverno/commands/apply/.gitignore similarity index 100% rename from cmd/cli/kubectl-kyverno/apply/.gitignore rename to cmd/cli/kubectl-kyverno/commands/apply/.gitignore diff --git a/cmd/cli/kubectl-kyverno/apply/command.go b/cmd/cli/kubectl-kyverno/commands/apply/command.go similarity index 99% rename from cmd/cli/kubectl-kyverno/apply/command.go rename to cmd/cli/kubectl-kyverno/commands/apply/command.go index 92c425ce69..a9fdba207e 100644 --- a/cmd/cli/kubectl-kyverno/apply/command.go +++ b/cmd/cli/kubectl-kyverno/commands/apply/command.go @@ -12,7 +12,7 @@ import ( "github.com/go-git/go-billy/v5/memfs" kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" "github.com/kyverno/kyverno/api/kyverno/v1beta1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/color" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/common" reportutils "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/report" diff --git a/cmd/cli/kubectl-kyverno/apply/command_test.go b/cmd/cli/kubectl-kyverno/commands/apply/command_test.go similarity index 69% rename from cmd/cli/kubectl-kyverno/apply/command_test.go rename to cmd/cli/kubectl-kyverno/commands/apply/command_test.go index 0db8590b23..27a5aa77d9 100644 --- a/cmd/cli/kubectl-kyverno/apply/command_test.go +++ b/cmd/cli/kubectl-kyverno/commands/apply/command_test.go @@ -20,14 +20,14 @@ func Test_Apply(t *testing.T) { stdinFile string } // copy disallow_latest_tag.yaml to local path - localFileName, err := copyFileToThisDir("../../../../test/best_practices/disallow_latest_tag.yaml") + localFileName, err := copyFileToThisDir("../../../../../test/best_practices/disallow_latest_tag.yaml") assert.NilError(t, err) defer func() { _ = os.Remove(localFileName) }() testcases := []*TestCase{{ config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/best_practices/disallow_latest_tag.yaml"}, - ResourcePaths: []string{"../../../../test/resources/pod_with_version_tag.yaml"}, + PolicyPaths: []string{"../../../../../test/best_practices/disallow_latest_tag.yaml"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_version_tag.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -42,7 +42,7 @@ func Test_Apply(t *testing.T) { }, { config: ApplyCommandConfig{ PolicyPaths: []string{localFileName}, - ResourcePaths: []string{"../../../../test/resources/pod_with_version_tag.yaml"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_version_tag.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -56,8 +56,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/best_practices/disallow_latest_tag.yaml"}, - ResourcePaths: []string{"../../../../test/resources/pod_with_latest_tag.yaml"}, + PolicyPaths: []string{"../../../../../test/best_practices/disallow_latest_tag.yaml"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_latest_tag.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -71,8 +71,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/apply/policies"}, - ResourcePaths: []string{"../../../../test/cli/apply/resource"}, + PolicyPaths: []string{"../../../../../test/cli/apply/policies"}, + ResourcePaths: []string{"../../../../../test/cli/apply/resource"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -86,8 +86,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/best_practices/disallow_latest_tag.yaml"}, - ResourcePaths: []string{"../../../../test/resources/pod_with_latest_tag.yaml"}, + PolicyPaths: []string{"../../../../../test/best_practices/disallow_latest_tag.yaml"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_latest_tag.yaml"}, PolicyReport: true, AuditWarn: true, }, @@ -103,11 +103,11 @@ func Test_Apply(t *testing.T) { }, { config: ApplyCommandConfig{ PolicyPaths: []string{"-"}, - ResourcePaths: []string{"../../../../test/resources/pod_with_latest_tag.yaml"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_latest_tag.yaml"}, PolicyReport: true, AuditWarn: true, }, - stdinFile: "../../../../test/best_practices/disallow_latest_tag.yaml", + stdinFile: "../../../../../test/best_practices/disallow_latest_tag.yaml", expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ Summary: policyreportv1alpha2.PolicyReportSummary{ Pass: 1, @@ -119,12 +119,12 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/best_practices/disallow_latest_tag.yaml"}, + PolicyPaths: []string{"../../../../../test/best_practices/disallow_latest_tag.yaml"}, ResourcePaths: []string{"-"}, PolicyReport: true, AuditWarn: true, }, - stdinFile: "../../../../test/resources/pod_with_latest_tag.yaml", + stdinFile: "../../../../../test/resources/pod_with_latest_tag.yaml", expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ Summary: policyreportv1alpha2.PolicyReportSummary{ Pass: 1, @@ -137,7 +137,7 @@ func Test_Apply(t *testing.T) { }, { config: ApplyCommandConfig{ PolicyPaths: []string{"https://github.com/kyverno/policies/openshift/team-validate-ns-name/"}, - ResourcePaths: []string{"../../../../test/openshift/team-validate-ns-name.yaml"}, + ResourcePaths: []string{"../../../../../test/openshift/team-validate-ns-name.yaml"}, GitBranch: "main", PolicyReport: true, }, @@ -152,8 +152,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/apply/policies-set"}, - ResourcePaths: []string{"../../../../test/cli/apply/resources-set"}, + PolicyPaths: []string{"../../../../../test/cli/apply/policies-set"}, + ResourcePaths: []string{"../../../../../test/cli/apply/resources-set"}, Variables: []string{"request.operation=UPDATE"}, PolicyReport: true, }, @@ -168,8 +168,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployments-replica/policy.yaml"}, - ResourcePaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployments-replica/deployment1.yaml"}, + PolicyPaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployments-replica/policy.yaml"}, + ResourcePaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployments-replica/deployment1.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -183,8 +183,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployments-replica/policy.yaml"}, - ResourcePaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployments-replica/deployment2.yaml"}, + PolicyPaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployments-replica/policy.yaml"}, + ResourcePaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployments-replica/deployment2.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -198,8 +198,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/test-validating-admission-policy/disallow-host-path/policy.yaml"}, - ResourcePaths: []string{"../../../../test/cli/test-validating-admission-policy/disallow-host-path/pod1.yaml"}, + PolicyPaths: []string{"../../../../../test/cli/test-validating-admission-policy/disallow-host-path/policy.yaml"}, + ResourcePaths: []string{"../../../../../test/cli/test-validating-admission-policy/disallow-host-path/pod1.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -213,8 +213,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/test-validating-admission-policy/disallow-host-path/policy.yaml"}, - ResourcePaths: []string{"../../../../test/cli/test-validating-admission-policy/disallow-host-path/pod2.yaml"}, + PolicyPaths: []string{"../../../../../test/cli/test-validating-admission-policy/disallow-host-path/policy.yaml"}, + ResourcePaths: []string{"../../../../../test/cli/test-validating-admission-policy/disallow-host-path/pod2.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -228,8 +228,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployment-labels/policy.yaml"}, - ResourcePaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployment-labels/deployment1.yaml"}, + PolicyPaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployment-labels/policy.yaml"}, + ResourcePaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployment-labels/deployment1.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -243,8 +243,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployment-labels/policy.yaml"}, - ResourcePaths: []string{"../../../../test/cli/test-validating-admission-policy/check-deployment-labels/deployment2.yaml"}, + PolicyPaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployment-labels/policy.yaml"}, + ResourcePaths: []string{"../../../../../test/cli/test-validating-admission-policy/check-deployment-labels/deployment2.yaml"}, PolicyReport: true, }, expectedPolicyReports: []policyreportv1alpha2.PolicyReport{{ @@ -258,8 +258,8 @@ func Test_Apply(t *testing.T) { }}, }, { config: ApplyCommandConfig{ - PolicyPaths: []string{"https://github.com/kyverno/policies/best-practices/require-labels/", "../../../../test/best_practices/disallow_latest_tag.yaml"}, - ResourcePaths: []string{"../../../../test/resources/pod_with_version_tag.yaml"}, + PolicyPaths: []string{"https://github.com/kyverno/policies/best-practices/require-labels/", "../../../../../test/best_practices/disallow_latest_tag.yaml"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_version_tag.yaml"}, GitBranch: "main", PolicyReport: true, }, @@ -275,8 +275,8 @@ func Test_Apply(t *testing.T) { }, { // Same as the above test case but the policy paths are reordered config: ApplyCommandConfig{ - PolicyPaths: []string{"../../../../test/best_practices/disallow_latest_tag.yaml", "https://github.com/kyverno/policies/best-practices/require-labels/"}, - ResourcePaths: []string{"../../../../test/resources/pod_with_version_tag.yaml"}, + PolicyPaths: []string{"../../../../../test/best_practices/disallow_latest_tag.yaml", "https://github.com/kyverno/policies/best-practices/require-labels/"}, + ResourcePaths: []string{"../../../../../test/resources/pod_with_version_tag.yaml"}, GitBranch: "main", PolicyReport: true, }, diff --git a/cmd/cli/kubectl-kyverno/apply/log.go b/cmd/cli/kubectl-kyverno/commands/apply/log.go similarity index 100% rename from cmd/cli/kubectl-kyverno/apply/log.go rename to cmd/cli/kubectl-kyverno/commands/apply/log.go diff --git a/cmd/cli/kubectl-kyverno/apply/table.go b/cmd/cli/kubectl-kyverno/commands/apply/table.go similarity index 100% rename from cmd/cli/kubectl-kyverno/apply/table.go rename to cmd/cli/kubectl-kyverno/commands/apply/table.go diff --git a/cmd/cli/kubectl-kyverno/commands/command.go b/cmd/cli/kubectl-kyverno/commands/command.go new file mode 100644 index 0000000000..109717b8ce --- /dev/null +++ b/cmd/cli/kubectl-kyverno/commands/command.go @@ -0,0 +1,40 @@ +package commands + +import ( + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/apply" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/docs" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/fix" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/jp" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/oci" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/version" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/experimental" + "github.com/spf13/cobra" +) + +func RootCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "kyverno", + Long: "To enable experimental commands, KYVERNO_EXPERIMENTAL should be configured with true or 1.", + Short: "Kubernetes Native Policy Management", + RunE: func(cmd *cobra.Command, args []string) error { + return cmd.Help() + }, + } + cmd.AddCommand( + apply.Command(), + create.Command(), + docs.Command(cmd), + jp.Command(), + test.Command(), + version.Command(), + ) + if experimental.IsExperimentalEnabled() { + cmd.AddCommand( + fix.Command(), + oci.Command(), + ) + } + return cmd +} diff --git a/cmd/cli/kubectl-kyverno/create/command.go b/cmd/cli/kubectl-kyverno/commands/create/command.go similarity index 66% rename from cmd/cli/kubectl-kyverno/create/command.go rename to cmd/cli/kubectl-kyverno/commands/create/command.go index dd39edff40..bed130c935 100644 --- a/cmd/cli/kubectl-kyverno/create/command.go +++ b/cmd/cli/kubectl-kyverno/commands/create/command.go @@ -1,10 +1,10 @@ package create import ( - metricsconfig "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/metrics-config" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/test" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/userinfo" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/values" + metricsconfig "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/metrics-config" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/test" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/userinfo" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/values" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/create/metrics-config/command.go b/cmd/cli/kubectl-kyverno/commands/create/metrics-config/command.go similarity index 94% rename from cmd/cli/kubectl-kyverno/create/metrics-config/command.go rename to cmd/cli/kubectl-kyverno/commands/create/metrics-config/command.go index 152e20905b..55ba7dfec9 100644 --- a/cmd/cli/kubectl-kyverno/create/metrics-config/command.go +++ b/cmd/cli/kubectl-kyverno/commands/create/metrics-config/command.go @@ -5,7 +5,7 @@ import ( "text/template" "github.com/Masterminds/sprig/v3" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/templates" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/templates" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/create/templates/metrics-config.yaml b/cmd/cli/kubectl-kyverno/commands/create/templates/metrics-config.yaml similarity index 100% rename from cmd/cli/kubectl-kyverno/create/templates/metrics-config.yaml rename to cmd/cli/kubectl-kyverno/commands/create/templates/metrics-config.yaml diff --git a/cmd/cli/kubectl-kyverno/create/templates/templates.go b/cmd/cli/kubectl-kyverno/commands/create/templates/templates.go similarity index 100% rename from cmd/cli/kubectl-kyverno/create/templates/templates.go rename to cmd/cli/kubectl-kyverno/commands/create/templates/templates.go diff --git a/cmd/cli/kubectl-kyverno/create/templates/test.yaml b/cmd/cli/kubectl-kyverno/commands/create/templates/test.yaml similarity index 100% rename from cmd/cli/kubectl-kyverno/create/templates/test.yaml rename to cmd/cli/kubectl-kyverno/commands/create/templates/test.yaml diff --git a/cmd/cli/kubectl-kyverno/create/templates/user-info.yaml b/cmd/cli/kubectl-kyverno/commands/create/templates/user-info.yaml similarity index 100% rename from cmd/cli/kubectl-kyverno/create/templates/user-info.yaml rename to cmd/cli/kubectl-kyverno/commands/create/templates/user-info.yaml diff --git a/cmd/cli/kubectl-kyverno/create/templates/values.yaml b/cmd/cli/kubectl-kyverno/commands/create/templates/values.yaml similarity index 100% rename from cmd/cli/kubectl-kyverno/create/templates/values.yaml rename to cmd/cli/kubectl-kyverno/commands/create/templates/values.yaml diff --git a/cmd/cli/kubectl-kyverno/create/test/command.go b/cmd/cli/kubectl-kyverno/commands/create/test/command.go similarity index 97% rename from cmd/cli/kubectl-kyverno/create/test/command.go rename to cmd/cli/kubectl-kyverno/commands/create/test/command.go index b74275283e..ba1fc54e6f 100644 --- a/cmd/cli/kubectl-kyverno/create/test/command.go +++ b/cmd/cli/kubectl-kyverno/commands/create/test/command.go @@ -5,7 +5,7 @@ import ( "strings" "text/template" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/templates" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/templates" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/create/userinfo/command.go b/cmd/cli/kubectl-kyverno/commands/create/userinfo/command.go similarity index 94% rename from cmd/cli/kubectl-kyverno/create/userinfo/command.go rename to cmd/cli/kubectl-kyverno/commands/create/userinfo/command.go index bf806b4c13..494b2ee915 100644 --- a/cmd/cli/kubectl-kyverno/create/userinfo/command.go +++ b/cmd/cli/kubectl-kyverno/commands/create/userinfo/command.go @@ -5,7 +5,7 @@ import ( "text/template" "github.com/kyverno/kyverno/api/kyverno/v1beta1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/templates" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/templates" "github.com/spf13/cobra" authenticationv1 "k8s.io/api/authentication/v1" ) diff --git a/cmd/cli/kubectl-kyverno/create/values/command.go b/cmd/cli/kubectl-kyverno/commands/create/values/command.go similarity index 95% rename from cmd/cli/kubectl-kyverno/create/values/command.go rename to cmd/cli/kubectl-kyverno/commands/create/values/command.go index 3181eabdc4..501ccf43f5 100644 --- a/cmd/cli/kubectl-kyverno/create/values/command.go +++ b/cmd/cli/kubectl-kyverno/commands/create/values/command.go @@ -5,8 +5,8 @@ import ( "strings" "text/template" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create/templates" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/create/templates" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/docs/command.go b/cmd/cli/kubectl-kyverno/commands/docs/command.go similarity index 100% rename from cmd/cli/kubectl-kyverno/docs/command.go rename to cmd/cli/kubectl-kyverno/commands/docs/command.go diff --git a/cmd/cli/kubectl-kyverno/fix/command.go b/cmd/cli/kubectl-kyverno/commands/fix/command.go similarity index 84% rename from cmd/cli/kubectl-kyverno/fix/command.go rename to cmd/cli/kubectl-kyverno/commands/fix/command.go index c0aafcecaf..4c92509ecd 100644 --- a/cmd/cli/kubectl-kyverno/fix/command.go +++ b/cmd/cli/kubectl-kyverno/commands/fix/command.go @@ -1,7 +1,7 @@ package fix import ( - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/fix/test" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/fix/test" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/fix/test/command.go b/cmd/cli/kubectl-kyverno/commands/fix/test/command.go similarity index 100% rename from cmd/cli/kubectl-kyverno/fix/test/command.go rename to cmd/cli/kubectl-kyverno/commands/fix/test/command.go diff --git a/cmd/cli/kubectl-kyverno/jp/command.go b/cmd/cli/kubectl-kyverno/commands/jp/command.go similarity index 73% rename from cmd/cli/kubectl-kyverno/jp/command.go rename to cmd/cli/kubectl-kyverno/commands/jp/command.go index af5d0f4d10..52d5c6274b 100644 --- a/cmd/cli/kubectl-kyverno/jp/command.go +++ b/cmd/cli/kubectl-kyverno/commands/jp/command.go @@ -3,9 +3,9 @@ package jp import ( "strings" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/jp/function" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/jp/parse" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/jp/query" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/jp/function" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/jp/parse" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/jp/query" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/jp/function/command.go b/cmd/cli/kubectl-kyverno/commands/jp/function/command.go similarity index 100% rename from cmd/cli/kubectl-kyverno/jp/function/command.go rename to cmd/cli/kubectl-kyverno/commands/jp/function/command.go diff --git a/cmd/cli/kubectl-kyverno/jp/parse/command.go b/cmd/cli/kubectl-kyverno/commands/jp/parse/command.go similarity index 100% rename from cmd/cli/kubectl-kyverno/jp/parse/command.go rename to cmd/cli/kubectl-kyverno/commands/jp/parse/command.go diff --git a/cmd/cli/kubectl-kyverno/jp/query/command.go b/cmd/cli/kubectl-kyverno/commands/jp/query/command.go similarity index 100% rename from cmd/cli/kubectl-kyverno/jp/query/command.go rename to cmd/cli/kubectl-kyverno/commands/jp/query/command.go diff --git a/cmd/cli/kubectl-kyverno/oci/command.go b/cmd/cli/kubectl-kyverno/commands/oci/command.go similarity index 88% rename from cmd/cli/kubectl-kyverno/oci/command.go rename to cmd/cli/kubectl-kyverno/commands/oci/command.go index eab70c0722..2757e98a7e 100644 --- a/cmd/cli/kubectl-kyverno/oci/command.go +++ b/cmd/cli/kubectl-kyverno/commands/oci/command.go @@ -8,8 +8,8 @@ import ( "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/authn/github" "github.com/google/go-containerregistry/pkg/v1/google" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/oci/pull" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/oci/push" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/oci/pull" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/oci/push" "github.com/spf13/cobra" ) diff --git a/cmd/cli/kubectl-kyverno/oci/internal/annotations.go b/cmd/cli/kubectl-kyverno/commands/oci/internal/annotations.go similarity index 100% rename from cmd/cli/kubectl-kyverno/oci/internal/annotations.go rename to cmd/cli/kubectl-kyverno/commands/oci/internal/annotations.go diff --git a/cmd/cli/kubectl-kyverno/oci/internal/annotations_test.go b/cmd/cli/kubectl-kyverno/commands/oci/internal/annotations_test.go similarity index 100% rename from cmd/cli/kubectl-kyverno/oci/internal/annotations_test.go rename to cmd/cli/kubectl-kyverno/commands/oci/internal/annotations_test.go diff --git a/cmd/cli/kubectl-kyverno/oci/pull/command.go b/cmd/cli/kubectl-kyverno/commands/oci/pull/command.go similarity index 97% rename from cmd/cli/kubectl-kyverno/oci/pull/command.go rename to cmd/cli/kubectl-kyverno/commands/oci/pull/command.go index 60f983eb58..8ae2fd1c0a 100644 --- a/cmd/cli/kubectl-kyverno/oci/pull/command.go +++ b/cmd/cli/kubectl-kyverno/commands/oci/pull/command.go @@ -11,7 +11,7 @@ import ( "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/name" "github.com/google/go-containerregistry/pkg/v1/remote" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/oci/internal" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/oci/internal" policyutils "github.com/kyverno/kyverno/pkg/utils/policy" yamlutils "github.com/kyverno/kyverno/pkg/utils/yaml" "github.com/spf13/cobra" diff --git a/cmd/cli/kubectl-kyverno/oci/push/command.go b/cmd/cli/kubectl-kyverno/commands/oci/push/command.go similarity index 97% rename from cmd/cli/kubectl-kyverno/oci/push/command.go rename to cmd/cli/kubectl-kyverno/commands/oci/push/command.go index eabd0b33a9..2b6ab0f6e8 100644 --- a/cmd/cli/kubectl-kyverno/oci/push/command.go +++ b/cmd/cli/kubectl-kyverno/commands/oci/push/command.go @@ -12,7 +12,7 @@ import ( "github.com/google/go-containerregistry/pkg/v1/remote" "github.com/google/go-containerregistry/pkg/v1/static" "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/oci/internal" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/oci/internal" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/common" "github.com/kyverno/kyverno/pkg/config" "github.com/kyverno/kyverno/pkg/openapi" diff --git a/cmd/cli/kubectl-kyverno/test/api/types.go b/cmd/cli/kubectl-kyverno/commands/test/api/types.go similarity index 100% rename from cmd/cli/kubectl-kyverno/test/api/types.go rename to cmd/cli/kubectl-kyverno/commands/test/api/types.go diff --git a/cmd/cli/kubectl-kyverno/test/command.go b/cmd/cli/kubectl-kyverno/commands/test/command.go similarity index 99% rename from cmd/cli/kubectl-kyverno/test/command.go rename to cmd/cli/kubectl-kyverno/commands/test/command.go index 3f62a81412..17aa098428 100644 --- a/cmd/cli/kubectl-kyverno/test/command.go +++ b/cmd/cli/kubectl-kyverno/commands/test/command.go @@ -7,7 +7,7 @@ import ( "github.com/go-git/go-billy/v5" policyreportv1alpha2 "github.com/kyverno/kyverno/api/policyreport/v1alpha2" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/color" filterutils "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/filter" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/output/table" diff --git a/cmd/cli/kubectl-kyverno/test/command_test.go b/cmd/cli/kubectl-kyverno/commands/test/command_test.go similarity index 94% rename from cmd/cli/kubectl-kyverno/test/command_test.go rename to cmd/cli/kubectl-kyverno/commands/test/command_test.go index fc44f48c88..a81dac5c9b 100644 --- a/cmd/cli/kubectl-kyverno/test/command_test.go +++ b/cmd/cli/kubectl-kyverno/commands/test/command_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/go-git/go-billy/v5/memfs" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/common" "gotest.tools/assert" "sigs.k8s.io/yaml" @@ -20,7 +20,7 @@ func Test_selectResourcesForCheck(t *testing.T) { expectedDuplicates int expectedUnused int } - baseTestDir := "../../../../test/cli/test-unit/selectResourcesForCheck/" + baseTestDir := "../../../../../test/cli/test-unit/selectResourcesForCheck/" testcases := []*TestCase{ { diff --git a/cmd/cli/kubectl-kyverno/test/help.go b/cmd/cli/kubectl-kyverno/commands/test/help.go similarity index 100% rename from cmd/cli/kubectl-kyverno/test/help.go rename to cmd/cli/kubectl-kyverno/commands/test/help.go diff --git a/cmd/cli/kubectl-kyverno/test/load.go b/cmd/cli/kubectl-kyverno/commands/test/load.go similarity index 100% rename from cmd/cli/kubectl-kyverno/test/load.go rename to cmd/cli/kubectl-kyverno/commands/test/load.go diff --git a/cmd/cli/kubectl-kyverno/test/load_test.go b/cmd/cli/kubectl-kyverno/commands/test/load_test.go similarity index 100% rename from cmd/cli/kubectl-kyverno/test/load_test.go rename to cmd/cli/kubectl-kyverno/commands/test/load_test.go diff --git a/cmd/cli/kubectl-kyverno/test/test.go b/cmd/cli/kubectl-kyverno/commands/test/test.go similarity index 99% rename from cmd/cli/kubectl-kyverno/test/test.go rename to cmd/cli/kubectl-kyverno/commands/test/test.go index f3ec2d897b..681ebe4ed5 100644 --- a/cmd/cli/kubectl-kyverno/test/test.go +++ b/cmd/cli/kubectl-kyverno/commands/test/test.go @@ -8,7 +8,7 @@ import ( "github.com/go-git/go-billy/v5" kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" "github.com/kyverno/kyverno/api/kyverno/v1beta1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/common" filterutils "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/filter" pathutils "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/path" diff --git a/cmd/cli/kubectl-kyverno/version/command.go b/cmd/cli/kubectl-kyverno/commands/version/command.go similarity index 100% rename from cmd/cli/kubectl-kyverno/version/command.go rename to cmd/cli/kubectl-kyverno/commands/version/command.go diff --git a/cmd/cli/kubectl-kyverno/main.go b/cmd/cli/kubectl-kyverno/main.go index acadabe64e..53a317825f 100644 --- a/cmd/cli/kubectl-kyverno/main.go +++ b/cmd/cli/kubectl-kyverno/main.go @@ -5,28 +5,15 @@ import ( "fmt" "os" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/apply" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/create" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/docs" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/fix" - "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/cmd/cli/kubectl-kyverno/commands" "github.com/kyverno/kyverno/pkg/logging" "github.com/spf13/cobra" ) func main() { - cli := &cobra.Command{ - Use: "kyverno", - Long: "To enable experimental commands, KYVERNO_EXPERIMENTAL should be configured with true or 1.", - Short: "Kubernetes Native Policy Management", - } - configureLogs(cli) - registerCommands(cli) - if err := cli.Execute(); err != nil { + cmd := commands.RootCommand() + configureLogs(cmd) + if err := cmd.Execute(); err != nil { os.Exit(1) } } @@ -39,20 +26,3 @@ func configureLogs(cli *cobra.Command) { } cli.PersistentFlags().AddGoFlagSet(flag.CommandLine) } - -func registerCommands(cli *cobra.Command) { - cli.AddCommand( - apply.Command(), - create.Command(), - docs.Command(cli), - jp.Command(), - test.Command(), - version.Command(), - ) - if experimental.IsExperimentalEnabled() { - cli.AddCommand( - fix.Command(), - oci.Command(), - ) - } -} diff --git a/cmd/cli/kubectl-kyverno/utils/common/common.go b/cmd/cli/kubectl-kyverno/utils/common/common.go index 9eeb79bed4..784eb76c83 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/common.go +++ b/cmd/cli/kubectl-kyverno/utils/common/common.go @@ -14,7 +14,7 @@ import ( "github.com/go-git/go-billy/v5" kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" kyvernov1beta1 "github.com/kyverno/kyverno/api/kyverno/v1beta1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" annotationsutils "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/annotations" sanitizederror "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/sanitizedError" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/source" diff --git a/cmd/cli/kubectl-kyverno/utils/common/common_test.go b/cmd/cli/kubectl-kyverno/utils/common/common_test.go index 4503263d17..932efad022 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/common_test.go +++ b/cmd/cli/kubectl-kyverno/utils/common/common_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/kyverno/kyverno/api/kyverno/v1beta1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" yamlutils "github.com/kyverno/kyverno/pkg/utils/yaml" "gotest.tools/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/cmd/cli/kubectl-kyverno/utils/common/fetch.go b/cmd/cli/kubectl-kyverno/utils/common/fetch.go index 2ac369ab56..b084368de5 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/fetch.go +++ b/cmd/cli/kubectl-kyverno/utils/common/fetch.go @@ -12,7 +12,7 @@ import ( "github.com/go-git/go-billy/v5" kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/source" "github.com/kyverno/kyverno/pkg/autogen" "github.com/kyverno/kyverno/pkg/clients/dclient" diff --git a/cmd/cli/kubectl-kyverno/utils/common/kyverno_resources_types.go b/cmd/cli/kubectl-kyverno/utils/common/kyverno_resources_types.go index d9f3c38535..73e8aedea8 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/kyverno_resources_types.go +++ b/cmd/cli/kubectl-kyverno/utils/common/kyverno_resources_types.go @@ -2,7 +2,7 @@ package common import ( kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/pkg/autogen" "github.com/kyverno/kyverno/pkg/clients/dclient" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" diff --git a/cmd/cli/kubectl-kyverno/utils/common/validatingadmission_resources_types.go b/cmd/cli/kubectl-kyverno/utils/common/validatingadmission_resources_types.go index 888316f2b8..594645943a 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/validatingadmission_resources_types.go +++ b/cmd/cli/kubectl-kyverno/utils/common/validatingadmission_resources_types.go @@ -1,7 +1,7 @@ package common import ( - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/pkg/clients/dclient" "k8s.io/api/admissionregistration/v1alpha1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" diff --git a/cmd/cli/kubectl-kyverno/utils/common/variables.go b/cmd/cli/kubectl-kyverno/utils/common/variables.go index 189386d730..b4c1f93af7 100644 --- a/cmd/cli/kubectl-kyverno/utils/common/variables.go +++ b/cmd/cli/kubectl-kyverno/utils/common/variables.go @@ -8,7 +8,7 @@ import ( "github.com/go-git/go-billy/v5" kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" sanitizederror "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/sanitizedError" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/store" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/values" diff --git a/cmd/cli/kubectl-kyverno/utils/filter/filter.go b/cmd/cli/kubectl-kyverno/utils/filter/filter.go index 6afc8baf42..ddb2bf0eae 100644 --- a/cmd/cli/kubectl-kyverno/utils/filter/filter.go +++ b/cmd/cli/kubectl-kyverno/utils/filter/filter.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "github.com/kyverno/kyverno/pkg/utils/wildcard" ) diff --git a/cmd/cli/kubectl-kyverno/utils/filter/filter_test.go b/cmd/cli/kubectl-kyverno/utils/filter/filter_test.go index 7009e4ec43..fe5d57a194 100644 --- a/cmd/cli/kubectl-kyverno/utils/filter/filter_test.go +++ b/cmd/cli/kubectl-kyverno/utils/filter/filter_test.go @@ -5,7 +5,7 @@ import ( "reflect" "testing" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" ) func Test_policy_Apply(t *testing.T) { diff --git a/cmd/cli/kubectl-kyverno/utils/test/test.go b/cmd/cli/kubectl-kyverno/utils/test/test.go index d865c36e31..6ee60992dc 100644 --- a/cmd/cli/kubectl-kyverno/utils/test/test.go +++ b/cmd/cli/kubectl-kyverno/utils/test/test.go @@ -6,7 +6,7 @@ import ( "path/filepath" "github.com/go-git/go-billy/v5" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "k8s.io/apimachinery/pkg/util/yaml" ) diff --git a/cmd/cli/kubectl-kyverno/utils/test/test_test.go b/cmd/cli/kubectl-kyverno/utils/test/test_test.go index d041b7528f..204d386216 100644 --- a/cmd/cli/kubectl-kyverno/utils/test/test_test.go +++ b/cmd/cli/kubectl-kyverno/utils/test/test_test.go @@ -6,7 +6,7 @@ import ( "testing" policyreportv1alpha2 "github.com/kyverno/kyverno/api/policyreport/v1alpha2" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" ) func TestTestCases_Errors(t *testing.T) { diff --git a/cmd/cli/kubectl-kyverno/utils/values/load.go b/cmd/cli/kubectl-kyverno/utils/values/load.go index 9d2174d4a0..a0254a1c5d 100644 --- a/cmd/cli/kubectl-kyverno/utils/values/load.go +++ b/cmd/cli/kubectl-kyverno/utils/values/load.go @@ -5,7 +5,7 @@ import ( "os" "github.com/go-git/go-billy/v5" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" "k8s.io/apimachinery/pkg/util/yaml" ) diff --git a/cmd/cli/kubectl-kyverno/utils/values/load_test.go b/cmd/cli/kubectl-kyverno/utils/values/load_test.go index 6fa61d7c42..3b12dde21b 100644 --- a/cmd/cli/kubectl-kyverno/utils/values/load_test.go +++ b/cmd/cli/kubectl-kyverno/utils/values/load_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/go-git/go-billy/v5" - "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api" + "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/commands/test/api" ) func Test_readFile(t *testing.T) { diff --git a/docs/user/cli/kyverno.md b/docs/user/cli/kyverno.md index 7e2cd0c8b7..1825c84214 100644 --- a/docs/user/cli/kyverno.md +++ b/docs/user/cli/kyverno.md @@ -6,6 +6,10 @@ Kubernetes Native Policy Management To enable experimental commands, KYVERNO_EXPERIMENTAL should be configured with true or 1. +``` +kyverno [flags] +``` + ### Options ```