From 1909c533a2220ad6cb0bfc29a792077e35cb9145 Mon Sep 17 00:00:00 2001 From: Phillip Wittrock Date: Mon, 14 May 2018 15:18:43 -0700 Subject: [PATCH] Fixes #152 Allow plural resource names. --- cmd/kubebuilder/create/resource/run.go | 1 + cmd/kubebuilder/create/util/util.go | 10 +++++++--- test.sh | 9 +++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cmd/kubebuilder/create/resource/run.go b/cmd/kubebuilder/create/resource/run.go index 4882bee610..f698670aab 100644 --- a/cmd/kubebuilder/create/resource/run.go +++ b/cmd/kubebuilder/create/resource/run.go @@ -62,6 +62,7 @@ func AddCreateResource(cmd *cobra.Command) { createResourceCmd.Flags().BoolVar(&nonNamespacedKind, "non-namespaced", false, "if set, the API kind will be non namespaced") createResourceCmd.Flags().BoolVar(&controller, "controller", true, "if true, generate the controller code for the resource") createResourceCmd.Flags().BoolVar(&generate, "generate", true, "generate source code") + createResourceCmd.Flags().BoolVar(&createutil.AllowPluralKind, "plural-kind", false, "allow the kind to be plural") cmd.AddCommand(createResourceCmd) } diff --git a/cmd/kubebuilder/create/util/util.go b/cmd/kubebuilder/create/util/util.go index 42a0595cdf..84879307e4 100644 --- a/cmd/kubebuilder/create/util/util.go +++ b/cmd/kubebuilder/create/util/util.go @@ -30,6 +30,7 @@ import ( var ( GroupName, KindName, VersionName, ResourceName, Copyright string + AllowPluralKind bool ) func ValidateResourceFlags() { @@ -43,11 +44,14 @@ func ValidateResourceFlags() { if len(KindName) == 0 { log.Fatal("Must specify --kind") } + + rs := inflect.NewDefaultRuleset() if len(ResourceName) == 0 { - if inflect.NewDefaultRuleset().Pluralize(KindName) == KindName { - log.Fatal("Client code generation expects singular --kind.") + if !AllowPluralKind && rs.Pluralize(KindName) == KindName && rs.Singularize(KindName) != KindName { + log.Fatalf("Client code generation expects singular --kind (e.g. %s)."+ + "Or to be run with --pural-kind=true.", rs.Singularize(KindName)) } - ResourceName = inflect.NewDefaultRuleset().Pluralize(strings.ToLower(KindName)) + ResourceName = rs.Pluralize(strings.ToLower(KindName)) } groupMatch := regexp.MustCompile("^[a-z]+$") diff --git a/test.sh b/test.sh index 9edc6fa398..492f7b3299 100755 --- a/test.sh +++ b/test.sh @@ -538,6 +538,13 @@ function generate_resource_with_coretype_controller { update_controller_test } +function test_plural_resource { + header_text "generating CRD for plural resource" + + kubebuilder create resource --plural-kind=true --group testing --version v1beta1 --kind Metadata + kubebuilder create resource --group testing --version v1beta1 --kind Postgress +} + prepare_staging_dir fetch_tools build_kb @@ -559,4 +566,6 @@ prepare_testdir_under_gopath generate_coretype_controller test_generated_controller +test_plural_resource + exit $rc