You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
47 lines
1.4 KiB
package templates |
|
|
|
import ( |
|
"text/template" |
|
|
|
"github.com/lyft/protoc-gen-star" |
|
"github.com/lyft/protoc-gen-star/lang/go" |
|
"github.com/envoyproxy/protoc-gen-validate/templates/cc" |
|
"github.com/envoyproxy/protoc-gen-validate/templates/go" |
|
"github.com/envoyproxy/protoc-gen-validate/templates/java" |
|
"github.com/envoyproxy/protoc-gen-validate/templates/shared" |
|
) |
|
|
|
type RegisterFn func(tpl *template.Template, params pgs.Parameters) |
|
type FilePathFn func(f pgs.File, ctx pgsgo.Context, tpl *template.Template) *pgs.FilePath |
|
|
|
func makeTemplate(ext string, fn RegisterFn, params pgs.Parameters) *template.Template { |
|
tpl := template.New(ext) |
|
shared.RegisterFunctions(tpl, params) |
|
fn(tpl, params) |
|
return tpl |
|
} |
|
|
|
func Template(params pgs.Parameters) map[string][]*template.Template { |
|
return map[string][]*template.Template{ |
|
"cc": {makeTemplate("h", cc.RegisterHeader, params), makeTemplate("cc", cc.RegisterModule, params)}, |
|
"go": {makeTemplate("go", golang.Register, params)}, |
|
"java": {makeTemplate("java", java.Register, params)}, |
|
} |
|
} |
|
|
|
func FilePathFor(tpl *template.Template) FilePathFn { |
|
switch tpl.Name() { |
|
case "h": |
|
return cc.CcFilePath |
|
case "cc": |
|
return cc.CcFilePath |
|
case "java": |
|
return java.JavaFilePath |
|
default: |
|
return func(f pgs.File, ctx pgsgo.Context, tpl *template.Template) *pgs.FilePath { |
|
out := ctx.OutputPath(f) |
|
out = out.SetExt(".validate." + tpl.Name()) |
|
return &out |
|
} |
|
} |
|
}
|
|
|