package sqlgen import ( "bytes" _ "embed" "fmt" "go/format" "os" "path/filepath" "text/template" ) //go:embed gen.go.tmpl var fileTemplate string func render(driver, schemaPath, outputPath string) (err error) { outputPath, err = filepath.Abs(outputPath) if err != nil { return err } sch, err := parsePath(driver, schemaPath) if err != nil { return err } tmpl := template.Must(template.New("").Parse(fileTemplate)) buf := &bytes.Buffer{} err = tmpl.Execute(buf, struct { PackageName string Schema *schema }{filepath.Base(filepath.Dir(outputPath)), sch}) if err != nil { return err } formatted, err := format.Source(buf.Bytes()) if err != nil { return fmt.Errorf("formatting generated code: %w", err) } return os.WriteFile(outputPath, formatted, 0o644) }