...
1
16
17 package generators
18
19 import (
20 "path"
21
22 "k8s.io/gengo/v2"
23 "k8s.io/gengo/v2/generator"
24 "k8s.io/gengo/v2/namer"
25 "k8s.io/gengo/v2/types"
26 "k8s.io/klog/v2"
27 "k8s.io/kube-openapi/cmd/openapi-gen/args"
28 )
29
30 type identityNamer struct{}
31
32 func (_ identityNamer) Name(t *types.Type) string {
33 return t.Name.String()
34 }
35
36 var _ namer.Namer = identityNamer{}
37
38
39 func NameSystems() namer.NameSystems {
40 return namer.NameSystems{
41 "raw": namer.NewRawNamer("", nil),
42 "sorting_namer": identityNamer{},
43 }
44 }
45
46
47
48 func DefaultNameSystem() string {
49 return "sorting_namer"
50 }
51
52 func GetTargets(context *generator.Context, args *args.Args) []generator.Target {
53 boilerplate, err := gengo.GoBoilerplate(args.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
54 if err != nil {
55 klog.Fatalf("Failed loading boilerplate: %v", err)
56 }
57
58 reportPath := "-"
59 if args.ReportFilename != "" {
60 reportPath = args.ReportFilename
61 }
62 context.FileTypes[apiViolationFileType] = apiViolationFile{
63 unmangledPath: reportPath,
64 }
65
66 return []generator.Target{
67 &generator.SimpleTarget{
68 PkgName: path.Base(args.OutputPkg),
69 PkgPath: args.OutputPkg,
70 PkgDir: args.OutputDir,
71 HeaderComment: boilerplate,
72 GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) {
73 return []generator.Generator{
74 newOpenAPIGen(
75 args.OutputFile,
76 args.OutputPkg,
77 ),
78 newAPIViolationGen(),
79 }
80 },
81 FilterFunc: apiTypeFilterFunc,
82 },
83 }
84 }
85
View as plain text