@@ -61,23 +61,42 @@ function cluster::codegen::internal::grep() {
6161# client. If this is not set, clients for all APIs under the input-dir
6262# will be generated (under the --output-pkg).
6363#
64+ # --boilerplate <string = path_to_kube_codegen_boilerplate>
65+ # An optional override for the header file to insert into generated files.
66+ #
6467# --output-dir <string>
6568# The root directory under which to emit code. Each aspect of client
66- # generation will make one or more subdirectories.
69+ # generation will make one or more subdirectories unless an explicit
70+ # directory for that aspect is configured also.
6771#
6872# --output-pkg <string>
6973# The Go package path (import path) of the --output-dir. Each aspect of
70- # client generation will make one or more sub-packages.
74+ # client generation will make one or more sub-packages unless an explicit
75+ # package for that aspect is configured also.
7176#
72- # --boilerplate <string = path_to_kube_codegen_boilerplate>
73- # An optional override for the header file to insert into generated files.
77+ # --versioned-clientset-dir <string>
78+ # The root directory under which to emit the generated cluster-aware clientset.
79+ # Overwrites the automatic detection based on --output-dir.
7480#
75- # --clientset-name <string = "clientset">
76- # An optional override for the leaf name of the generated "clientset" directory.
81+ # --versioned-clientset-pkg <string>
82+ # The Go package path (import path) of the --versioned-clientset-dir.
83+ # Overwrites the automatic detection based on --output-dir.
7784#
78- # --versioned-name <string = "versioned">
79- # An optional override for the leaf name of the generated
80- # "<clientset>/versioned" directory.
85+ # --informers-dir <string>
86+ # The root directory under which to emit the generated cluster-aware informers.
87+ # Overwrites the automatic detection based on --output-dir.
88+ #
89+ # --informers-pkg <string>
90+ # The Go package path (import path) of the --informers-dir.
91+ # Overwrites the automatic detection based on --output-dir.
92+ #
93+ # --listers-dir <string>
94+ # The root directory under which to emit the generated cluster-aware listers.
95+ # Overwrites the automatic detection based on --output-dir.
96+ #
97+ # --listers-pkg <string>
98+ # The Go package path (import path) of the --listers-dir.
99+ # Overwrites the automatic detection based on --output-dir.
81100#
82101# --single-cluster-versioned-clientset-pkg
83102# The package name of the generated versioned Kubernetes clientset, e.g.
@@ -89,55 +108,54 @@ function cluster::codegen::internal::grep() {
89108# "acme.corp/sdk/generated/applyconfigurations". This has to have already been
90109# generated by k8s.io/code-generator.
91110#
92- # --single-cluster-listers-pkg
93- # The optional name of the generated Kubernetes listers package, e.g.
94- # "acme.corp/sdk/generated/listers". This has to have already been
95- # generated by k8s.io/code-generator. If not specified, the generated cluster
96- # listers will include the necessary interfaces themselves.
97- #
98111# --single-cluster-informers-pkg
99112# The optional name of the generated Kubernetes informers package, e.g.
100113# "acme.corp/sdk/generated/informers". This has to have already been
101114# generated by k8s.io/code-generator. If not specified, the generated cluster
102115# informers will include the necessary interfaces themselves.
103116#
117+ # --single-cluster-listers-pkg
118+ # The optional name of the generated Kubernetes listers package, e.g.
119+ # "acme.corp/sdk/generated/listers". This has to have already been
120+ # generated by k8s.io/code-generator. If not specified, the generated cluster
121+ # listers will include the necessary interfaces themselves.
122+ #
104123# --with-watch
105124# Enables generation of listers and informers for APIs which support WATCH.
106125#
107- # --listers-name <string = "listers">
108- # An optional override for the leaf name of the generated "listers" directory.
109- #
110- # --informers-name <string = "informers">
111- # An optional override for the leaf name of the generated "informers" directory.
112- #
113126# --plural-exceptions <string = "">
114127# An optional list of comma separated plural exception definitions in Type:PluralizedType form.
115128#
116129function cluster::codegen::gen_client() {
117130 local in_dir=" "
118131 local one_input_api=" "
132+ local boilerplate=" ${CLUSTER_CODEGEN_ROOT} /hack/boilerplate.go.txt"
119133 local out_dir=" "
120134 local out_pkg=" "
121- local clientset_subdir=" clientset"
122- local clientset_versioned_name=" versioned"
123- local watchable=" false"
124- local listers_subdir=" listers"
125- local informers_subdir=" informers"
126- local boilerplate=" ${CLUSTER_CODEGEN_ROOT} /hack/boilerplate.go.txt"
127- local plural_exceptions=" "
128- local v=" ${KUBE_VERBOSE:- 0} "
129- local prefers_protobuf=" false"
135+ local versioned_clientset_dir=" "
136+ local versioned_clientset_pkg=" "
137+ local informers_dir=" "
138+ local informers_pkg=" "
139+ local listers_dir=" "
140+ local listers_pkg=" "
130141 local single_cluster_versioned_clientset_pkg=" "
131142 local single_cluster_applyconfigurations_pkg=" "
132- local single_cluster_listers_pkg=" "
133143 local single_cluster_informers_pkg=" "
144+ local single_cluster_listers_pkg=" "
145+ local watchable=" false"
146+ local plural_exceptions=" "
147+ local v=" ${KUBE_VERBOSE:- 0} "
134148
135149 while [ " $# " -gt 0 ]; do
136150 case " $1 " in
137151 " --one-input-api" )
138152 one_input_api=" /$2 "
139153 shift 2
140154 ;;
155+ " --boilerplate" )
156+ boilerplate=" $2 "
157+ shift 2
158+ ;;
141159 " --output-dir" )
142160 out_dir=" $2 "
143161 shift 2
@@ -146,28 +164,28 @@ function cluster::codegen::gen_client() {
146164 out_pkg=" $2 "
147165 shift 2
148166 ;;
149- " --boilerplate " )
150- boilerplate =" $2 "
167+ " --versioned-clientset-dir " )
168+ versioned_clientset_dir =" $2 "
151169 shift 2
152170 ;;
153- " --clientset-name " )
154- clientset_subdir =" $2 "
171+ " --versioned- clientset-pkg " )
172+ versioned_clientset_pkg =" $2 "
155173 shift 2
156174 ;;
157- " --versioned-name " )
158- clientset_versioned_name =" $2 "
175+ " --informers-dir " )
176+ informers_dir =" $2 "
159177 shift 2
160178 ;;
161- " --with-watch " )
162- watchable= " true "
163- shift
179+ " --informers-pkg " )
180+ informers_pkg= " $2 "
181+ shift 2
164182 ;;
165- " --listers-name " )
166- listers_subdir =" $2 "
183+ " --listers-dir " )
184+ listers_dir =" $2 "
167185 shift 2
168186 ;;
169- " --informers-name " )
170- informers_subdir =" $2 "
187+ " --listers-pkg " )
188+ listers_pkg =" $2 "
171189 shift 2
172190 ;;
173191 " --single-cluster-versioned-clientset-pkg" )
@@ -178,13 +196,17 @@ function cluster::codegen::gen_client() {
178196 single_cluster_applyconfigurations_pkg=" $2 "
179197 shift 2
180198 ;;
199+ " --single-cluster-informers-pkg" )
200+ single_cluster_informers_pkg=" $2 "
201+ shift 2
202+ ;;
181203 " --single-cluster-listers-pkg" )
182204 single_cluster_listers_pkg=" $2 "
183205 shift 2
184206 ;;
185- " --single-cluster-informers-pkg " )
186- single_cluster_informers_pkg= " $2 "
187- shift 2
207+ " --with-watch " )
208+ watchable= " true "
209+ shift
188210 ;;
189211 " --plural-exceptions" )
190212 plural_exceptions=" $2 "
@@ -209,14 +231,6 @@ function cluster::codegen::gen_client() {
209231 echo " input-dir argument is required" >&2
210232 return 1
211233 fi
212- if [ -z " ${out_dir} " ]; then
213- echo " --output-dir is required" >&2
214- return 1
215- fi
216- if [ -z " ${out_pkg} " ]; then
217- echo " --output-pkg is required" >&2
218- return 1
219- fi
220234 if [ -z " ${single_cluster_versioned_clientset_pkg} " ]; then
221235 echo " --single-cluster-versioned-clientset-pkg is required" >&2
222236 return 1
@@ -226,8 +240,6 @@ function cluster::codegen::gen_client() {
226240 return 1
227241 fi
228242
229- mkdir -p " ${out_dir} "
230-
231243 (
232244 # To support running this from anywhere, first cd into this directory,
233245 # and then install with forced module mode on and fully qualified name.
@@ -271,9 +283,25 @@ function cluster::codegen::gen_client() {
271283
272284 echo " Generating cluster client code for ${# group_versions[@]} targets"
273285
286+ if [[ -z " ${versioned_clientset_dir} " ]]; then
287+ if [ -z " ${out_dir} " ]; then
288+ echo " --output-dir is required when no --versioned-clientset-dir is provided" >&2
289+ return 1
290+ fi
291+ versioned_clientset_dir=" ${out_dir} /clientset/versioned"
292+ fi
293+
294+ if [[ -z " ${versioned_clientset_pkg} " ]]; then
295+ if [ -z " ${out_pkg} " ]; then
296+ echo " --output-pkg is required when no --versioned-clientset-pkg is provided" >&2
297+ return 1
298+ fi
299+ versioned_clientset_pkg=" ${out_pkg} /clientset/versioned"
300+ fi
301+
274302 ( cluster::codegen::internal::grep -l --null \
275303 -e ' ^// Code generated by cluster-client-gen. DO NOT EDIT.$' \
276- -r " ${out_dir} / ${clientset_subdir }" \
304+ -r " ${versioned_clientset_dir } " \
277305 --include ' *.go' \
278306 || true \
279307 ) | xargs -0 rm -f
@@ -285,9 +313,8 @@ function cluster::codegen::gen_client() {
285313 " ${gobin} /cluster-client-gen" \
286314 -v " ${v} " \
287315 --go-header-file " ${boilerplate} " \
288- --output-dir " ${out_dir} /${clientset_subdir} " \
289- --output-pkg " ${out_pkg} /${clientset_subdir} " \
290- --clientset-name " ${clientset_versioned_name} " \
316+ --output-dir " ${versioned_clientset_dir} " \
317+ --output-pkg " ${versioned_clientset_pkg} " \
291318 --input-base " $( cd " ${in_dir} " && pwd -P) " ` # must be absolute path or Go import path"` \
292319 --single-cluster-versioned-clientset-pkg " ${single_cluster_versioned_clientset_pkg} " \
293320 --single-cluster-applyconfigurations-pkg " ${single_cluster_applyconfigurations_pkg} " \
@@ -297,38 +324,70 @@ function cluster::codegen::gen_client() {
297324 if [ " ${watchable} " == " true" ]; then
298325 echo " Generating cluster lister code for ${# input_pkgs[@]} targets"
299326
327+ if [[ -z " ${listers_dir} " ]]; then
328+ if [ -z " ${out_dir} " ]; then
329+ echo " --output-dir is required when no --listers-dir is provided" >&2
330+ return 1
331+ fi
332+ listers_dir=" ${out_dir} /listers"
333+ fi
334+
335+ if [[ -z " ${listers_pkg} " ]]; then
336+ if [ -z " ${out_pkg} " ]; then
337+ echo " --output-pkg is required when no --listers-pkg is provided" >&2
338+ return 1
339+ fi
340+ listers_pkg=" ${out_pkg} /listers"
341+ fi
342+
300343 ( cluster::codegen::internal::grep -l --null \
301344 -e ' ^// Code generated by cluster-lister-gen. DO NOT EDIT.$' \
302- -r " ${out_dir} / ${listers_subdir }" \
345+ -r " ${listers_dir } " \
303346 --include ' *.go' \
304347 || true \
305348 ) | xargs -0 rm -f
306349
307350 " ${gobin} /cluster-lister-gen" \
308351 -v " ${v} " \
309352 --go-header-file " ${boilerplate} " \
310- --output-dir " ${out_dir} / ${listers_subdir }" \
311- --output-pkg " ${out_pkg} / ${listers_subdir }" \
353+ --output-dir " ${listers_dir } " \
354+ --output-pkg " ${listers_pkg } " \
312355 --single-cluster-listers-pkg " ${single_cluster_listers_pkg} " \
313356 --plural-exceptions " ${plural_exceptions} " \
314357 " ${input_pkgs[@]} "
315358
316359 echo " Generating cluster informer code for ${# input_pkgs[@]} targets"
317360
361+ if [[ -z " ${informers_dir} " ]]; then
362+ if [ -z " ${out_dir} " ]; then
363+ echo " --output-dir is required when no --informers-dir is provided" >&2
364+ return 1
365+ fi
366+ informers_dir=" ${out_dir} /informers"
367+ fi
368+
369+ if [[ -z " ${informers_pkg} " ]]; then
370+ if [ -z " ${out_pkg} " ]; then
371+ echo " --output-pkg is required when no --informers-pkg is provided" >&2
372+ return 1
373+ fi
374+ informers_pkg=" ${out_pkg} /informers"
375+ fi
376+
318377 ( cluster::codegen::internal::grep -l --null \
319378 -e ' ^// Code generated by cluster-informer-gen. DO NOT EDIT.$' \
320- -r " ${out_dir} / ${informers_subdir }" \
379+ -r " ${informers_dir } " \
321380 --include ' *.go' \
322381 || true \
323382 ) | xargs -0 rm -f
324383
325384 " ${gobin} /cluster-informer-gen" \
326385 -v " ${v} " \
327386 --go-header-file " ${boilerplate} " \
328- --output-dir " ${out_dir} / ${informers_subdir }" \
329- --output-pkg " ${out_pkg} / ${informers_subdir }" \
330- --versioned-clientset-pkg " ${out_pkg} / ${clientset_subdir} / ${clientset_versioned_name }" \
331- --listers-pkg " ${out_pkg} / ${listers_subdir }" \
387+ --output-dir " ${informers_dir } " \
388+ --output-pkg " ${informers_pkg } " \
389+ --versioned-clientset-pkg " ${versioned_clientset_pkg } " \
390+ --listers-pkg " ${listers_pkg } " \
332391 --single-cluster-listers-pkg " ${single_cluster_listers_pkg} " \
333392 --single-cluster-informers-pkg " ${single_cluster_informers_pkg} " \
334393 --single-cluster-versioned-clientset-pkg " ${single_cluster_versioned_clientset_pkg} " \
0 commit comments