@@ -7,30 +7,20 @@ import (
77 yamlformat "github.com/arttor/helmify/pkg/yaml"
88 "github.com/pkg/errors"
99 "io"
10- extensionv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
1110 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
12- "k8s.io/apimachinery/pkg/runtime"
1311 "k8s.io/apimachinery/pkg/runtime/schema"
1412 "sigs.k8s.io/yaml"
1513)
1614
1715const crdTeml = `apiVersion: apiextensions.k8s.io/v1
1816kind: CustomResourceDefinition
1917metadata:
20- name: {{ .Values.crd. %[1]s.plural }}.{{ .Values.crd.%[1]s.group }}
18+ name: %[1]s
2119 annotations:
2220 controller-gen.kubebuilder.io/version: v0.4.1
2321 labels:
2422 {{- include "%[2]s.labels" . | nindent 4 }}
2523spec:
26- group: {{ .Values.crd.%[1]s.group }}
27- names:
28- kind: {{ .Values.crd.%[1]s.kind }}
29- listKind: {{ .Values.crd.%[1]s.listKind }}
30- plural: {{ .Values.crd.%[1]s.plural }}
31- singular: {{ .Values.crd.%[1]s.singular }}
32- scope: {{ .Values.crd.%[1]s.scope }}
33- versions:
3424%[3]s
3525status:
3626 acceptedNames:
@@ -56,67 +46,36 @@ func (d deployment) Process(info helmify.ChartInfo, obj *unstructured.Unstructur
5646 if obj .GroupVersionKind () != crdGVC {
5747 return false , nil , nil
5848 }
59-
60- crd := extensionv1beta1.CustomResourceDefinition {}
61- err := runtime .DefaultUnstructuredConverter .FromUnstructured (obj .Object , & crd )
62- if err != nil {
63- return true , nil , errors .Wrap (err , "unable to cast unstructured to crd" )
64- }
65-
66- versionsUnstr , ok , err := unstructured .NestedSlice (obj .Object , "spec" , "versions" )
49+ specUnstr , ok , err := unstructured .NestedMap (obj .Object , "spec" )
6750 if err != nil || ! ok {
6851 return true , nil , errors .Wrap (err , "unable to create crd template" )
6952 }
70- versions , _ := yaml .Marshal (versionsUnstr )
53+ versions , _ := yaml .Marshal (specUnstr )
7154 versions = yamlformat .Indent (versions , 2 )
7255 versions = bytes .TrimRight (versions , "\n " )
7356
74- res := fmt .Sprintf (crdTeml , crd .Spec .Names .Singular , info .ChartName , string (versions ))
75-
76- values := helmify.Values {}
77- err = unstructured .SetNestedField (values , crd .Spec .Group , "crd" , crd .Spec .Names .Singular , "group" )
78- if err != nil {
79- return true , nil , errors .Wrap (err , "unable to set crd value field" )
80- }
81- err = unstructured .SetNestedField (values , crd .Spec .Names .Kind , "crd" , crd .Spec .Names .Singular , "kind" )
82- if err != nil {
83- return true , nil , errors .Wrap (err , "unable to set crd value field" )
84- }
85- err = unstructured .SetNestedField (values , crd .Spec .Names .ListKind , "crd" , crd .Spec .Names .Singular , "listKind" )
86- if err != nil {
87- return true , nil , errors .Wrap (err , "unable to set crd value field" )
88- }
89- err = unstructured .SetNestedField (values , crd .Spec .Names .Singular , "crd" , crd .Spec .Names .Singular , "singular" )
90- if err != nil {
91- return true , nil , errors .Wrap (err , "unable to set crd value field" )
92- }
93- err = unstructured .SetNestedField (values , crd .Spec .Names .Plural , "crd" , crd .Spec .Names .Singular , "plural" )
94- if err != nil {
95- return true , nil , errors .Wrap (err , "unable to set crd value field" )
96- }
97- err = unstructured .SetNestedField (values , string (crd .Spec .Scope ), "crd" , crd .Spec .Names .Singular , "scope" )
98- if err != nil {
99- return true , nil , errors .Wrap (err , "unable to set crd value field" )
57+ res := fmt .Sprintf (crdTeml , obj .GetName (), info .ChartName , string (versions ))
58+ name , _ , err := unstructured .NestedString (obj .Object , "spec" , "names" , "singular" )
59+ if err != nil || ! ok {
60+ return true , nil , errors .Wrap (err , "unable to create crd template" )
10061 }
10162 return true , & result {
102- name : crd .Spec .Names .Singular + "-crd.yaml" ,
103- values : values ,
104- data : []byte (res ),
63+ name : name + "-crd.yaml" ,
64+ data : []byte (res ),
10565 }, nil
10666}
10767
10868type result struct {
109- name string
110- data []byte
111- values helmify.Values
69+ name string
70+ data []byte
11271}
11372
11473func (r * result ) Filename () string {
11574 return r .name
11675}
11776
11877func (r * result ) Values () helmify.Values {
119- return r . values
78+ return helmify. Values {}
12079}
12180
12281func (r * result ) Write (writer io.Writer ) error {
0 commit comments