-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate.go
57 lines (49 loc) · 2.71 KB
/
generate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package gormgenerator
import (
"fmt"
"io/ioutil"
"os"
"text/template"
"gopkg.in/yaml.v2"
)
// Template converted to utf-8 format
//
// package models
//
// type {{ .Name }} struct {
// ID uint `gorm:"primary_key;AUTO_INCREMENT" json:"id" form:"id"`
// {{range .ColumnList}}
// {{- .Name }} {{.DataType }} `{{- if .GormTag -}}gorm:"{{- range .GormTag -}}{{- .Tag -}};{{- end -}}"{{- end -}}{{- if .JSONTag }} json:"{{- .JSONTag -}}" {{end }} {{- if .FormTag }}form:"{{- .FormTag -}}"{{ end }}`
// {{ end }}
//
// }
//
var templ = "\x70\x61\x63\x6b\x61\x67\x65\x20\x6d\x6f\x64\x65\x6c\x73\x0a\x0a\x74\x79\x70\x65\x20\x7b\x7b\x20\x2e\x4e\x61\x6d\x65\x20\x7d\x7d\x20\x73\x74\x72\x75\x63\x74\x20\x7b\x0a\x20\x20\x20\x20\x49\x44\x20\x20\x75\x69\x6e\x74\x20\x20\x60\x67\x6f\x72\x6d\x3a\x22\x70\x72\x69\x6d\x61\x72\x79\x5f\x6b\x65\x79\x3b\x41\x55\x54\x4f\x5f\x49\x4e\x43\x52\x45\x4d\x45\x4e\x54\x22\x20\x6a\x73\x6f\x6e\x3a\x22\x69\x64\x22\x20\x66\x6f\x72\x6d\x3a\x22\x69\x64\x22\x60\x0a\x20\x20\x20\x20\x7b\x7b\x72\x61\x6e\x67\x65\x20\x2e\x43\x6f\x6c\x75\x6d\x6e\x4c\x69\x73\x74\x7d\x7d\x0a\x20\x20\x20\x20\x7b\x7b\x2d\x20\x2e\x4e\x61\x6d\x65\x20\x7d\x7d\x20\x20\x20\x20\x20\x7b\x7b\x2e\x44\x61\x74\x61\x54\x79\x70\x65\x20\x7d\x7d\x20\x20\x60\x7b\x7b\x2d\x20\x69\x66\x20\x2e\x47\x6f\x72\x6d\x54\x61\x67\x20\x2d\x7d\x7d\x67\x6f\x72\x6d\x3a\x22\x7b\x7b\x2d\x20\x72\x61\x6e\x67\x65\x20\x2e\x47\x6f\x72\x6d\x54\x61\x67\x20\x2d\x7d\x7d\x7b\x7b\x2d\x20\x2e\x54\x61\x67\x20\x2d\x7d\x7d\x3b\x7b\x7b\x2d\x20\x65\x6e\x64\x20\x2d\x7d\x7d\x22\x7b\x7b\x2d\x20\x65\x6e\x64\x20\x2d\x7d\x7d\x7b\x7b\x2d\x20\x69\x66\x20\x2e\x4a\x53\x4f\x4e\x54\x61\x67\x20\x7d\x7d\x20\x6a\x73\x6f\x6e\x3a\x22\x7b\x7b\x2d\x20\x2e\x4a\x53\x4f\x4e\x54\x61\x67\x20\x2d\x7d\x7d\x22\x20\x7b\x7b\x65\x6e\x64\x20\x7d\x7d\x20\x7b\x7b\x2d\x20\x69\x66\x20\x2e\x46\x6f\x72\x6d\x54\x61\x67\x20\x7d\x7d\x66\x6f\x72\x6d\x3a\x22\x7b\x7b\x2d\x20\x2e\x46\x6f\x72\x6d\x54\x61\x67\x20\x2d\x7d\x7d\x22\x7b\x7b\x20\x65\x6e\x64\x20\x7d\x7d\x60\x0a\x20\x20\x20\x20\x7b\x7b\x20\x65\x6e\x64\x20\x7d\x7d\x0a\x0a\x7d"
// Generate generate model files according to their name
func Generate(modelPath, fileName string) {
modelList := []Model{}
yamlFile, err := ioutil.ReadFile(fileName)
if err != nil {
panic(err)
}
err = yaml.Unmarshal([]byte(yamlFile), &modelList)
if err != nil {
panic("cannot unmarshal yaml file")
}
tmpl, err := template.New("model").Parse(string(templ))
if err != nil {
panic(err)
}
for _, modelT := range modelList {
modelFilePath := fmt.Sprintf("%s/%s.go", modelPath, modelT.Name)
f, err := os.Create(modelFilePath)
if err != nil {
panic(err)
}
err = tmpl.Execute(f, &modelT)
if err != nil {
panic("Template execution failed")
}
f.Close()
}
}