Skip to content

Commit 4b0e9ea

Browse files
committed
Generate .codegame.json file
1 parent d25f11e commit 4b0e9ea

File tree

7 files changed

+83
-17
lines changed

7 files changed

+83
-17
lines changed

commands/docs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func Docs() error {
3535
return err
3636
}
3737

38-
err = cggenevents.CGGenEvents(os.TempDir(), url, cgeVersion, "markdown")
38+
err = cggenevents.CGGenEvents(cgeVersion, os.TempDir(), url, "markdown")
3939
if err != nil {
4040
return err
4141
}

commands/new.go

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"time"
1515

1616
"github.com/Bananenpro/cli"
17+
"github.com/code-game-project/codegame-cli/util/cgfile"
1718
"github.com/code-game-project/codegame-cli/util/cggenevents"
1819
"github.com/code-game-project/codegame-cli/util/exec"
1920
"github.com/code-game-project/codegame-cli/util/external"
@@ -100,7 +101,16 @@ func newServer(projectName string) error {
100101
}
101102
}
102103

103-
var err error
104+
file := cgfile.CodeGameFileData{
105+
Game: projectName,
106+
Type: "server",
107+
Lang: language,
108+
}
109+
err := file.Write("")
110+
if err != nil {
111+
return cli.Error("Failed to create .codegame.json: %s", err)
112+
}
113+
104114
switch language {
105115
case "go":
106116
err = modules.Execute("go", "latest", "server", "new", "server")
@@ -130,13 +140,13 @@ func newServer(projectName string) error {
130140
return err
131141
}
132142

133-
file, err := os.Create("events.cge")
143+
eventsFile, err := os.Create("events.cge")
134144
if err != nil {
135145
return err
136146
}
137-
defer file.Close()
147+
defer eventsFile.Close()
138148

139-
return tmpl.Execute(file, data{
149+
return tmpl.Execute(eventsFile, data{
140150
SnakeCaseName: strings.ReplaceAll(projectName, "-", "_"),
141151
CGEVersion: cgeVersion,
142152
})
@@ -173,6 +183,17 @@ func newClient() error {
173183
return cli.Error(err.Error())
174184
}
175185

186+
file := cgfile.CodeGameFileData{
187+
Game: name,
188+
Type: "client",
189+
Lang: language,
190+
URL: trimURL(url),
191+
}
192+
err = file.Write("")
193+
if err != nil {
194+
return cli.Error("Failed to create .codegame.json: %s", err)
195+
}
196+
176197
switch language {
177198
case "go":
178199
libraryVersion := external.LibraryVersionFromCGVersion("code-game-project", "go-client", cgVersion)
@@ -196,7 +217,7 @@ func newClient() error {
196217
}
197218

198219
if language == "go" || language == "ts" {
199-
err = cggenevents.CGGenEvents(eventsOutput, url, cgeVersion, language)
220+
err = cggenevents.CGGenEvents(cgeVersion, eventsOutput, url, language)
200221
if err != nil {
201222
return err
202223
}
@@ -360,10 +381,11 @@ func writeReadmeLicense(templateText, username string, year int) error {
360381
})
361382
}
362383

363-
func getCodeGameInfo(baseURL string) (string, string, error) {
384+
func getCodeGameInfo(baseURL string) (name string, cgVersion string, err error) {
364385
type response struct {
365386
Name string `json:"name"`
366387
CGVersion string `json:"cg_version"`
388+
Version string `json:"version"`
367389
}
368390
url := baseURL + "/info"
369391
res, err := http.Get(url)

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ require (
1818
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect
1919
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect
2020
golang.org/x/text v0.3.7 // indirect
21+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
2122
)

go.sum

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,6 @@ golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
5050
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
5151
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
5252
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
53-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
5453
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
54+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
55+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

util/cgfile/codegame_json.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package cgfile
2+
3+
import (
4+
"encoding/json"
5+
"os"
6+
"path/filepath"
7+
)
8+
9+
type CodeGameFileData struct {
10+
Game string `json:"game"`
11+
Type string `json:"type"`
12+
Lang string `json:"lang"`
13+
LangConfig map[string]any `json:"lang_config,omitempty"`
14+
URL string `json:"url,omitempty"`
15+
}
16+
17+
func LoadCodeGameFile(dir string) (*CodeGameFileData, error) {
18+
file, err := os.Open(filepath.Join(dir, ".codegame.json"))
19+
if err != nil {
20+
return nil, err
21+
}
22+
defer file.Close()
23+
24+
data := &CodeGameFileData{}
25+
err = json.NewDecoder(file).Decode(data)
26+
if err != nil {
27+
return nil, err
28+
}
29+
30+
return data, nil
31+
}
32+
33+
func (c *CodeGameFileData) Write(dir string) error {
34+
os.MkdirAll(dir, 0755)
35+
36+
file, err := os.Create(filepath.Join(dir, ".codegame.json"))
37+
if err != nil {
38+
return err
39+
}
40+
defer file.Close()
41+
42+
encoder := json.NewEncoder(file)
43+
encoder.SetIndent("", " ")
44+
return encoder.Encode(c)
45+
}

util/cggenevents/cg_gen_events.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,9 @@ func installCGGenEvents(cgeVersion string) (string, error) {
4949

5050
// GetEventNames uses CGGenEvents() to get a list of all the available events of the game server at url.
5151
// It only works for CGE versions >= 0.3.
52-
// CGGenEvents must be installed first!
53-
func GetEventNames(exeName, url string) ([]string, error) {
52+
func GetEventNames(url, cgeVersion string) ([]string, error) {
5453
output := os.TempDir()
55-
err := CGGenEvents(exeName, output, url, "json")
54+
err := CGGenEvents(cgeVersion, output, url, "json")
5655
if err != nil {
5756
return nil, err
5857
}

util/external/install.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import (
1919
)
2020

2121
func InstallProgram(name, filename, url, version, path string) (string, error) {
22-
cli.BeginLoading("Installing %s v%s...", name, version)
23-
2422
exeName := fmt.Sprintf("%s_%s", name, strings.ReplaceAll(version, ".", "-"))
2523
if runtime.GOOS == "windows" {
2624
exeName = exeName + ".exe"
@@ -30,6 +28,9 @@ func InstallProgram(name, filename, url, version, path string) (string, error) {
3028
return exeName, nil
3129
}
3230

31+
cli.BeginLoading("Installing %s v%s...", name, version)
32+
defer cli.CancelLoading()
33+
3334
downloadFile := fmt.Sprintf("%s-%s-%s.tar.gz", name, runtime.GOOS, runtime.GOARCH)
3435
if runtime.GOOS == "windows" {
3536
downloadFile = fmt.Sprintf("%s-%s-%s.zip", name, runtime.GOOS, runtime.GOARCH)
@@ -41,10 +42,7 @@ func InstallProgram(name, filename, url, version, path string) (string, error) {
4142
}
4243
defer res.Body.Close()
4344

44-
err = os.MkdirAll(path, 0755)
45-
if err != nil {
46-
return "", err
47-
}
45+
os.MkdirAll(path, 0755)
4846

4947
binaries, err := os.ReadDir(path)
5048
if err == nil {

0 commit comments

Comments
 (0)