@@ -116,9 +116,17 @@ func doGen() error {
116
116
}
117
117
118
118
if gen ["client-gen" ] {
119
+ inputBase := ""
120
+ versionsInputs := inputs
121
+ // e.g. base = "example.io/foo/api", strippedVersions = "v1,v1beta1"
122
+ // e.g. base = "example.io/foo/pkg/apis", strippedVersions = "test/v1,test/v1beta1"
123
+ if base , strippedVersions , ok := findInputBase (module , versions ); ok {
124
+ inputBase = base
125
+ versionsInputs = strings .Join (strippedVersions , "," )
126
+ }
119
127
err := run (getCmd ("client-gen" ,
120
- "--clientset-name" , "versioned" , "--input-base" , "" ,
121
- "--input" , inputs , "--output-package" , path .Join (module , "pkg/generated/clientset" )))
128
+ "--clientset-name" , "versioned" , "--input-base" , inputBase ,
129
+ "--input" , versionsInputs , "--output-package" , path .Join (module , "pkg/generated/clientset" )))
122
130
if err != nil {
123
131
return err
124
132
}
@@ -238,3 +246,32 @@ func findModuleRoot(dir string) string {
238
246
}
239
247
return ""
240
248
}
249
+
250
+ func findInputBase (module string , versions []string ) (string , []string , bool ) {
251
+ if allHasPrefix (filepath .Join (module , "api" ), versions ) {
252
+ base := filepath .Join (module , "api" )
253
+ return base , allTrimPrefix (base + "/" , versions ), true
254
+ }
255
+ if allHasPrefix (filepath .Join (module , "pkg" , "apis" ), versions ) {
256
+ base := filepath .Join (module , "pkg" , "apis" )
257
+ return base , allTrimPrefix (base + "/" , versions ), true
258
+ }
259
+ return "" , nil , false
260
+ }
261
+
262
+ func allHasPrefix (prefix string , paths []string ) bool {
263
+ for _ , p := range paths {
264
+ if ! strings .HasPrefix (p , prefix ) {
265
+ return false
266
+ }
267
+ }
268
+ return true
269
+ }
270
+
271
+ func allTrimPrefix (prefix string , versions []string ) []string {
272
+ vs := make ([]string , 0 )
273
+ for _ , v := range versions {
274
+ vs = append (vs , strings .TrimPrefix (v , prefix ))
275
+ }
276
+ return vs
277
+ }
0 commit comments