snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
This commit is contained in:
59
internal/gen/api/main.go
Normal file
59
internal/gen/api/main.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"slices"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/centrifugal/centrifugo/v6/internal/gen"
|
||||
)
|
||||
|
||||
func main() {
|
||||
generateHandlersHTTP()
|
||||
generateHandlersGRPC()
|
||||
generateHandlersConsumer()
|
||||
generateRequestDecoder()
|
||||
generateResponseEncoder()
|
||||
generateResultEncoder()
|
||||
}
|
||||
|
||||
type TemplateData struct {
|
||||
RequestCapitalized string
|
||||
RequestLower string
|
||||
RequestSnake string
|
||||
}
|
||||
|
||||
func generateToFile(header, funcTmpl, outFile string, excludeRequests []string, includeRequests []string) {
|
||||
tmpl := template.Must(template.New("").Parse(funcTmpl))
|
||||
|
||||
var buf bytes.Buffer
|
||||
buf.WriteString(header)
|
||||
|
||||
for _, req := range gen.Requests {
|
||||
if slices.Contains(excludeRequests, req) {
|
||||
continue
|
||||
}
|
||||
if len(includeRequests) > 0 && !slices.Contains(includeRequests, req) {
|
||||
continue
|
||||
}
|
||||
err := tmpl.Execute(&buf, TemplateData{
|
||||
RequestCapitalized: req,
|
||||
RequestLower: strings.ToLower(req),
|
||||
RequestSnake: gen.CamelToSnake(req),
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
file, err := os.Create(outFile) //nolint:gosec // Used only for code generation.
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer func() {
|
||||
_ = file.Close()
|
||||
}()
|
||||
_, _ = buf.WriteTo(file)
|
||||
}
|
||||
Reference in New Issue
Block a user