@@ -10,6 +10,7 @@ import (
1010 "strconv"
1111 "strings"
1212 "sync"
13+ "text/template"
1314
1415 "github.com/quickfixgo/quickfix/cmd/generate-fix/internal"
1516 "github.com/quickfixgo/quickfix/datadictionary"
@@ -53,48 +54,28 @@ type component struct {
5354}
5455
5556func genHeader (pkg string , spec * datadictionary.DataDictionary ) {
56- defer waitGroup .Done ()
57- writer := new (bytes.Buffer )
5857 c := component {
5958 Package : pkg ,
6059 Name : "Header" ,
6160 MessageDef : spec .Header ,
6261 FIXSpec : spec ,
6362 }
64- if err := internal .HeaderTemplate .Execute (writer , c ); err != nil {
65- errors <- err
66- return
67- }
68-
69- if err := internal .WriteFile (path .Join (pkg , "header.generated.go" ), writer .String ()); err != nil {
70- errors <- err
71- }
63+ gen (internal .HeaderTemplate , path .Join (pkg , "header.generated.go" ), c )
7264}
7365
7466func genTrailer (pkg string , spec * datadictionary.DataDictionary ) {
75- defer waitGroup .Done ()
76- writer := new (bytes.Buffer )
7767 c := component {
7868 Package : pkg ,
7969 Name : "Trailer" ,
8070 MessageDef : spec .Trailer ,
8171 }
82- if err := internal .TrailerTemplate .Execute (writer , c ); err != nil {
83- errors <- err
84- return
85- }
86-
87- if err := internal .WriteFile (path .Join (pkg , "trailer.generated.go" ), writer .String ()); err != nil {
88- errors <- err
89- }
72+ gen (internal .TrailerTemplate , path .Join (pkg , "trailer.generated.go" ), c )
9073}
9174
9275func genMessage (fixPkg string , spec * datadictionary.DataDictionary , msg * datadictionary.MessageDef ) {
93- defer waitGroup .Done ()
9476 pkgName := strings .ToLower (msg .Name )
9577 transportPkg := getTransportPackageName (spec )
9678
97- writer := new (bytes.Buffer )
9879 c := component {
9980 Package : pkgName ,
10081 FIXPackage : fixPkg ,
@@ -104,54 +85,31 @@ func genMessage(fixPkg string, spec *datadictionary.DataDictionary, msg *datadic
10485 MessageDef : msg ,
10586 }
10687
107- if err := internal .MessageTemplate .Execute (writer , c ); err != nil {
108- errors <- err
109- return
110- }
111-
112- if err := internal .WriteFile (path .Join (fixPkg , pkgName , msg .Name + ".generated.go" ), writer .String ()); err != nil {
113- errors <- err
114- }
88+ gen (internal .MessageTemplate , path .Join (fixPkg , pkgName , msg .Name + ".generated.go" ), c )
11589}
11690
11791func genTags () {
118- defer waitGroup .Done ()
119- writer := new (bytes.Buffer )
120-
121- if err := internal .TagTemplate .Execute (writer , internal .GlobalFieldTypes ); err != nil {
122- errors <- err
123- return
124- }
125-
126- if err := internal .WriteFile ("tag/tag_numbers.generated.go" , writer .String ()); err != nil {
127- errors <- err
128- }
92+ gen (internal .TagTemplate , "tag/tag_numbers.generated.go" , internal .GlobalFieldTypes )
12993}
13094
13195func genFields () {
132- defer waitGroup .Done ()
133- writer := new (bytes.Buffer )
134-
135- if err := internal .FieldTemplate .Execute (writer , internal .GlobalFieldTypes ); err != nil {
136- errors <- err
137- return
138- }
139-
140- if err := internal .WriteFile ("field/fields.generated.go" , writer .String ()); err != nil {
141- errors <- err
142- }
96+ gen (internal .FieldTemplate , "field/fields.generated.go" , internal .GlobalFieldTypes )
14397}
14498
14599func genEnums () {
100+ gen (internal .EnumTemplate , "enum/enums.generated.go" , internal .GlobalFieldTypes )
101+ }
102+
103+ func gen (t * template.Template , fileOut string , data interface {}) {
146104 defer waitGroup .Done ()
147105 writer := new (bytes.Buffer )
148106
149- if err := internal . EnumTemplate . Execute (writer , internal . GlobalFieldTypes ); err != nil {
107+ if err := t . Execute (writer , data ); err != nil {
150108 errors <- err
151109 return
152110 }
153111
154- if err := internal .WriteFile ("enum/enums.generated.go" , writer .String ()); err != nil {
112+ if err := internal .WriteFile (fileOut , writer .String ()); err != nil {
155113 errors <- err
156114 }
157115}
0 commit comments