From 82d0f8f07bbaeb1dd7c60a729d5c981579d4f9d5 Mon Sep 17 00:00:00 2001 From: Sebastian Bernauer Date: Thu, 30 Nov 2023 08:54:27 +0100 Subject: [PATCH] Allow setting a description on a derived CRD --- examples/crd_derive.rs | 3 ++- kube-derive/src/custom_resource.rs | 5 ++++- kube-derive/tests/crd_schema_test.rs | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/crd_derive.rs b/examples/crd_derive.rs index 6715d5616..c96984d16 100644 --- a/examples/crd_derive.rs +++ b/examples/crd_derive.rs @@ -17,6 +17,7 @@ use serde::{Deserialize, Serialize}; plural = "fooz", root = "FooCrd", namespaced, + description = "Custom resource representing a Foo", status = "FooStatus", derive = "PartialEq", derive = "Default", @@ -119,7 +120,7 @@ fn verify_crd() { ], "schema": { "openAPIV3Schema": { - "description": "Auto-generated derived type for MyFoo via `CustomResource`", + "description": "Custom resource representing a Foo", "properties": { "spec": { "description": "Our spec for Foo\n\nA struct with our chosen Kind will be created for us, using the following kube attrs", diff --git a/kube-derive/src/custom_resource.rs b/kube-derive/src/custom_resource.rs index 177abe7de..a02160b16 100644 --- a/kube-derive/src/custom_resource.rs +++ b/kube-derive/src/custom_resource.rs @@ -10,6 +10,7 @@ struct KubeAttrs { group: String, version: String, kind: String, + description: Option, #[darling(rename = "root")] kind_struct: Option, /// lowercase plural of kind (inferred if omitted) @@ -145,6 +146,7 @@ pub(crate) fn derive(input: proc_macro2::TokenStream) -> proc_macro2::TokenStrea kind, kind_struct, version, + description, namespaced, derives, schema: schema_mode, @@ -239,7 +241,8 @@ pub(crate) fn derive(input: proc_macro2::TokenStream) -> proc_macro2::TokenStrea derive_paths.push(syn::parse_quote! { #schemars::JsonSchema }); } - let docstr = format!(" Auto-generated derived type for {ident} via `CustomResource`"); + let docstr = description + .unwrap_or_else(|| format!(" Auto-generated derived type for {ident} via `CustomResource`")); let quoted_serde = Literal::string(&serde.to_token_stream().to_string()); let root_obj = quote! { #[doc = #docstr] diff --git a/kube-derive/tests/crd_schema_test.rs b/kube-derive/tests/crd_schema_test.rs index 8e209e188..c9cf73af3 100644 --- a/kube-derive/tests/crd_schema_test.rs +++ b/kube-derive/tests/crd_schema_test.rs @@ -15,6 +15,7 @@ use std::collections::HashMap; kind = "Foo", category = "clux", namespaced, + description = "Custom resource representing a Foo", derive = "PartialEq", shortname = "fo", shortname = "f" @@ -195,7 +196,7 @@ fn test_crd_schema_matches_expected() { "additionalPrinterColumns": [], "schema": { "openAPIV3Schema": { - "description": "Auto-generated derived type for FooSpec via `CustomResource`", + "description": "Custom resource representing a Foo", "properties": { "spec": { "properties": {