37 lines
644 B
Go
37 lines
644 B
Go
|
package sqlgen
|
||
|
|
||
|
import (
|
||
|
_ "embed"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
"path/filepath"
|
||
|
"text/template"
|
||
|
)
|
||
|
|
||
|
//go:embed sqlite.go.tmpl
|
||
|
var sqliteTemplate string
|
||
|
|
||
|
func render(templateStr, schemaPath, outputPath string) error {
|
||
|
sch, err := parsePath(schemaPath)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
tmpl := template.Must(template.New("").Parse(templateStr))
|
||
|
fOut, err := os.Create(outputPath)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer fOut.Close()
|
||
|
|
||
|
err = tmpl.Execute(fOut, struct {
|
||
|
PackageName string
|
||
|
Schema *schema
|
||
|
}{filepath.Base(filepath.Dir(outputPath)), sch})
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return exec.Command("gofmt", "-w", outputPath).Run()
|
||
|
}
|