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.
43 lines
862 B
43 lines
862 B
package generate
|
|
|
|
import "text/template"
|
|
|
|
//nolint:gochecknoglobals
|
|
var (
|
|
tpl = template.Must(template.New("tpls").Parse(baseTemplate))
|
|
baseTemplate = `// Code generated gitoa.ru/go-4devs/config DO NOT EDIT.
|
|
package {{.Pkg}}
|
|
|
|
import (
|
|
{{range .Imports}}
|
|
{{- .Alias }}"{{ .Package }}"
|
|
{{end}}
|
|
)
|
|
|
|
func With{{.StructName}}Log(log func(context.Context, string, ...any)) func(*{{.StructName}}) {
|
|
return func(ci *{{.StructName}}) {
|
|
ci.log = log
|
|
}
|
|
}
|
|
|
|
func New{{.StructName}}(prov config.Provider, opts ...func(*{{.StructName}})) {{.StructName}} {
|
|
i := {{.StructName}}{
|
|
Provider: prov,
|
|
log: func(_ context.Context, format string, args ...any) {
|
|
fmt.Printf(format, args...)
|
|
},
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(&i)
|
|
}
|
|
|
|
return i
|
|
}
|
|
|
|
type {{.StructName}} struct {
|
|
config.Provider
|
|
log func(context.Context, string, ...any)
|
|
}
|
|
`
|
|
)
|
|
|