/
main.go
108 lines (76 loc) · 2.28 KB
/
main.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package golang
import (
"github.com/apibrew/apibrew/pkg/model"
"github.com/apibrew/apibrew/pkg/util"
log "github.com/sirupsen/logrus"
"go/format"
"os"
)
func GenerateGoResourceCode(pkg string, resources []*model.Resource, actions map[*model.Resource][]*model.Resource, path string, namespace string) error {
for _, resource := range resources {
if err := generateResourceCode(pkg, resource, path); err != nil {
return err
}
if err := generaDefCode(pkg, resource, path); err != nil {
return err
}
if err := generaMappingCode(pkg, resources, path, resource); err != nil {
return err
}
}
return nil
}
func generaMappingCode(pkg string, resources []*model.Resource, path string, resource *model.Resource) error {
rawCode := GenerateResourceMappingCode(pkg, resource, resources)
code, err := format.Source([]byte(rawCode))
if err != nil {
code = []byte(rawCode)
log.Warn(err)
}
resourceFileName := util.PathSlug(resource.Name) + "-mapping.go"
if err := os.MkdirAll(path, 0777); err != nil {
log.Fatal(err)
}
err = os.WriteFile(path+"/"+resourceFileName, code, 0777)
if err != nil {
return err
}
log.Println("Written to file: " + path + "/" + resourceFileName)
return nil
}
func generateResourceCode(pkg string, resource *model.Resource, path string) error {
rawCode := GenerateResourceCode(pkg, resource)
code, err := format.Source([]byte(rawCode))
if err != nil {
code = []byte(rawCode)
log.Warn(err)
}
resourceFileName := util.PathSlug(resource.Name) + ".go"
if err := os.MkdirAll(path, 0777); err != nil {
log.Fatal(err)
}
err = os.WriteFile(path+"/"+resourceFileName, code, 0777)
if err != nil {
return err
}
log.Println("Written to file: " + path + "/" + resourceFileName)
return nil
}
func generaDefCode(pkg string, resource *model.Resource, path string) error {
rawCode := GenerateResourceDefCode(pkg, resource)
code, err := format.Source([]byte(rawCode))
if err != nil {
code = []byte(rawCode)
log.Warn(err)
}
resourceFileName := util.PathSlug(resource.Name) + "-def" + ".go"
if err := os.MkdirAll(path, 0777); err != nil {
log.Fatal(err)
}
err = os.WriteFile(path+"/"+resourceFileName, code, 0777)
if err != nil {
return err
}
log.Println("Written to file: " + path + "/" + resourceFileName)
return nil
}