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.
44 lines
862 B
44 lines
862 B
12 months ago
|
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)
|
||
|
}
|
||
|
`
|
||
|
)
|