/
writer.go
97 lines (76 loc) · 1.53 KB
/
writer.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
package kiwi
import (
"fmt"
"go/format"
"os"
)
type IWriter interface {
setBuilder(builder *builder)
Builder() *builder
Module() string
Dirty() bool
SetDirty(bool)
WriteHeader()
WriteMsg(idx int, msg *Msg)
WriteFooter()
SetSvc(svc *Svc)
Svc() *Svc
Reset()
Save() error
}
type baseWriter struct {
bdr *builder
dirty bool
svc *Svc
}
func (w *baseWriter) setBuilder(builder *builder) {
w.bdr = builder
}
func (w *baseWriter) Builder() *builder {
return w.bdr
}
func (w *baseWriter) WriteHeader() {
}
func (w *baseWriter) WriteMsg(idx int, msg *Msg) {
}
func (w *baseWriter) WriteFooter() {
}
func (w *baseWriter) Reset() {
}
func (w *baseWriter) Save() error {
//TODO implement me
panic("implement me")
}
func (w *baseWriter) Module() string {
return w.bdr.module
}
func (w *baseWriter) Dirty() bool {
return w.dirty
}
func (w *baseWriter) SetDirty(dirty bool) {
w.dirty = dirty
}
func (w *baseWriter) SetSvc(svc *Svc) {
w.svc = svc
}
func (w *baseWriter) Svc() *Svc {
return w.svc
}
func (w *baseWriter) save(path, data string) error {
f := w.bdr.plugin.NewGeneratedFile(path, "test")
data = "// Code generated by protoc-gen-go-kiwi. DO NOT EDIT.\n\n" + data
bytes, _ := format.Source([]byte(data))
_, e := f.Write(bytes)
if e != nil {
return e
}
return nil
}
func (w *baseWriter) saveCustom(path, data string) error {
data = "// Code generated by protoc-gen-go-kiwi. DO NOT EDIT.\n\n" + data
e := os.WriteFile(fmt.Sprintf("../%s", path), []byte(data), os.ModePerm)
if e != nil {
return e
}
return nil
}