1
- //go:generate statik -src=./templates -dest=. -f -Z -p=embed
2
1
package javascript
3
2
4
3
import (
5
4
"bytes"
6
- "io/ioutil"
7
- "os"
5
+ "embed"
8
6
"text/template"
9
7
10
- "github.com/goware/statik/fs "
8
+ "github.com/pkg/errors "
11
9
"github.com/webrpc/webrpc/gen"
12
- "github.com/webrpc/webrpc/gen/javascript/embed"
13
10
"github.com/webrpc/webrpc/schema"
14
11
)
15
12
16
13
func init () {
17
14
gen .Register ("js" , & generator {})
18
15
}
19
16
17
+ //go:embed templates/*.js.tmpl
18
+ var templatesFS embed.FS
19
+
20
20
type generator struct {}
21
21
22
22
func (g * generator ) Gen (proto * schema.WebRPCSchema , opts gen.TargetOptions ) (string , error ) {
23
- // Get templates from `embed` asset package
24
- // NOTE: make sure to `go generate` whenever you change the files in `templates/` folder
25
- templates , err := getTemplates ()
26
- if err != nil {
27
- return "" , err
28
- }
29
-
30
23
// Load templates
31
- tmpl := template .
24
+ tmpl , err := template .
32
25
New ("webrpc-gen-js" ).
33
- Funcs (templateFuncMap (opts ))
34
-
35
- for _ , tmplData := range templates {
36
- _ , err = tmpl .Parse (tmplData )
37
- if err != nil {
38
- return "" , err
39
- }
26
+ Funcs (templateFuncMap (opts )).
27
+ ParseFS (templatesFS , "templates/*.js.tmpl" )
28
+ if err != nil {
29
+ return "" , errors .Wrap (err , "failed to parse javascript templates" )
40
30
}
41
31
42
32
// generate deterministic schema hash of the proto file
@@ -63,30 +53,3 @@ func (g *generator) Gen(proto *schema.WebRPCSchema, opts gen.TargetOptions) (str
63
53
64
54
return string (genBuf .Bytes ()), nil
65
55
}
66
-
67
- func getTemplates () (map [string ]string , error ) {
68
- data := map [string ]string {}
69
-
70
- statikFS , err := fs .New (embed .Asset )
71
- if err != nil {
72
- return nil , err
73
- }
74
-
75
- fs .Walk (statikFS , "/" , func (path string , info os.FileInfo , err error ) error {
76
- if path == "/" {
77
- return nil
78
- }
79
- f , err := statikFS .Open (path )
80
- if err != nil {
81
- return err
82
- }
83
- buf , err := ioutil .ReadAll (f )
84
- if err != nil {
85
- return err
86
- }
87
- data [path ] = string (buf )
88
- return nil
89
- })
90
-
91
- return data , nil
92
- }
0 commit comments