@@ -2,20 +2,15 @@ package commands
22
33import (
44 "fmt"
5- "os"
65 "path/filepath"
76 "strings"
8- "text/template"
97
108 _ "embed"
119
1210 "github.com/code-game-project/codegame-cli/cli"
1311 "github.com/code-game-project/codegame-cli/external"
1412)
1513
16- //go:embed templates/go/client/main.go.tmpl
17- var goClientMainTemplate string
18-
1914//go:embed templates/go/server/main.go.tmpl
2015var goServerMainTemplate string
2116
@@ -25,10 +20,10 @@ var goServerGameTemplate string
2520//go:embed templates/go/server/events.cge.tmpl
2621var goServerCGETemplate string
2722
28- //go:embed templates/go/server/events .go.tmpl
23+ //go:embed templates/go/server/event_definitions .go.tmpl
2924var goServerEventsTemplate string
3025
31- func newGoClient (projectName , serverURL , cgVersion string ) error {
26+ func newGoClient (projectName , gameName , serverURL , cgVersion , cgeVersion string ) error {
3227 module , err := cli .Input ("Project module path:" )
3328 if err != nil {
3429 return err
@@ -42,12 +37,25 @@ func newGoClient(projectName, serverURL, cgVersion string) error {
4237 return err
4338 }
4439
45- cli .Begin ("Installing correct go-client version..." )
4640 libraryURL , libraryTag , err := getGoClientLibraryURL (projectName , cgVersion )
4741 if err != nil {
4842 return err
4943 }
5044
45+ cgeMajor , cgeMinor , _ , err := external .ParseVersion (cgeVersion )
46+ if err != nil {
47+ return cli .Error (err .Error ())
48+ }
49+
50+ wrappers := false
51+ if cgeMajor > 0 || cgeMinor >= 3 {
52+ wrappers , err = cli .YesNo ("Do you want to generate helper functions?" , true )
53+ if err != nil {
54+ return err
55+ }
56+ }
57+
58+ cli .Begin ("Installing correct go-client version..." )
5159 out , err = external .ExecuteInDirHidden (projectName , "go" , "get" , fmt .Sprintf ("%s@%s" , libraryURL , libraryTag ))
5260 if err != nil {
5361 if out != "" {
@@ -58,7 +66,7 @@ func newGoClient(projectName, serverURL, cgVersion string) error {
5866 cli .Finish ()
5967
6068 cli .Begin ("Creating project template..." )
61- err = createGoClientTemplate (projectName , serverURL , libraryURL )
69+ err = createGoClientTemplate (libraryTag , projectName , module , gameName , serverURL , libraryURL , cgeVersion , wrappers )
6270 if err != nil {
6371 return err
6472 }
@@ -89,27 +97,12 @@ func newGoClient(projectName, serverURL, cgVersion string) error {
8997 return nil
9098}
9199
92- func createGoClientTemplate (projectName , serverURL , libraryURL string ) error {
93- tmpl , err := template .New ("main.go" ).Parse (goClientMainTemplate )
94- if err != nil {
95- return err
96- }
97-
98- file , err := os .Create (filepath .Join (projectName , "main.go" ))
100+ func createGoClientTemplate (libraryTag , projectName , modulePath , gameName , serverURL , libraryURL , cgeVersion string , wrappers bool ) error {
101+ err := createGoClientTemplatev0_8 (projectName , modulePath , gameName , serverURL , libraryURL , cgeVersion , wrappers )
99102 if err != nil {
100- return err
101- }
102- defer file .Close ()
103-
104- type data struct {
105- URL string
106- LibraryURL string
103+ cli .Error (err .Error ())
107104 }
108-
109- return tmpl .Execute (file , data {
110- URL : serverURL ,
111- LibraryURL : libraryURL ,
112- })
105+ return err
113106}
114107
115108func getGoClientLibraryURL (projectName , cgVersion string ) (url string , tag string , err error ) {
@@ -215,26 +208,10 @@ func createGoServerTemplate(projectName, module, cgeVersion, libraryURL string)
215208 return err
216209 }
217210
218- return executeGoServerTemplate (goServerEventsTemplate , filepath .Join (packageName , "events .go" ), projectName , cgeVersion , libraryURL , module )
211+ return executeGoServerTemplate (goServerEventsTemplate , filepath .Join (packageName , "event_definitions .go" ), projectName , cgeVersion , libraryURL , module )
219212}
220213
221214func executeGoServerTemplate (templateText , fileName , projectName , cgeVersion , libraryURL , modulePath string ) error {
222- tmpl , err := template .New (fileName ).Parse (templateText )
223- if err != nil {
224- return err
225- }
226-
227- err = os .MkdirAll (filepath .Join (projectName , filepath .Dir (fileName )), 0755 )
228- if err != nil {
229- return err
230- }
231-
232- file , err := os .Create (filepath .Join (projectName , fileName ))
233- if err != nil {
234- return err
235- }
236- defer file .Close ()
237-
238215 type data struct {
239216 Name string
240217 PackageName string
@@ -244,7 +221,7 @@ func executeGoServerTemplate(templateText, fileName, projectName, cgeVersion, li
244221 ModulePath string
245222 }
246223
247- return tmpl . Execute ( file , data {
224+ return execTemplate ( templateText , filepath . Join ( projectName , fileName ) , data {
248225 Name : projectName ,
249226 PackageName : strings .ReplaceAll (strings .ReplaceAll (projectName , "_" , "" ), "-" , "" ),
250227 SnakeCaseName : strings .ReplaceAll (projectName , "-" , "_" ),
0 commit comments