/
controller.go
69 lines (57 loc) · 1.32 KB
/
controller.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
58
59
60
61
62
63
64
65
66
67
68
69
package generator
import (
"fmt"
"strings"
)
type Controller struct {
Name string `yaml:"name"`
IsView bool `yaml:"is_view"`
Routes []Route `yaml:"routes"`
Bodies map[string]string `yaml:"-"`
}
type Route struct {
Kind string `yaml:"kind"`
Path string `yaml:"path"`
Target string `yaml:"target"`
}
type Controllers struct {
*Generator
}
func NewControllers(cfg *Vectra) *Generator {
var files []SourceFile
for _, controller := range cfg.Controllers {
kindStr := "service"
if controller.IsView {
kindStr = "view"
}
files = append(files,
NewDynSourceFile(
fmt.Sprintf("src/controller/%s_controller.go.tmpl", kindStr),
fmt.Sprintf("src/controller/%s_controller.go",
strings.ToLower(controller.Name)),
Skeleton),
)
}
generator := NewAbstractGenerator(
"controllers",
[]string{
"Controllers",
},
Report{
Files: files,
Version: 1,
}, cfg)
n := &Controllers{}
n.Generator = generator
n.IGenerator = n
return generator
}
func (i *Controllers) Generate() {
for n, controller := range i.vectra.Controllers {
i.vectra.Controllers[n].Bodies = extractFunctionBody(
i.vectra.ProjectPath + "/src/controller/" +
fmt.Sprintf("%s_controller.go", strings.ToLower(controller.Name)),
)
}
i.Generator.Generate(i.vectra.Controllers)
}