Skip to content

Commit c42823f

Browse files
committed
Automatically detect input, output and lang in gen-events for game servers
1 parent a9b63df commit c42823f

File tree

1 file changed

+39
-9
lines changed

1 file changed

+39
-9
lines changed

cmd/genEvents.go

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cmd
22

33
import (
4+
"errors"
45
"fmt"
56
"io"
67
"net/http"
@@ -9,6 +10,7 @@ import (
910
"strings"
1011

1112
"github.com/adrg/xdg"
13+
"github.com/code-game-project/go-utils/cgfile"
1214
"github.com/code-game-project/go-utils/cggenevents"
1315
"github.com/code-game-project/go-utils/exec"
1416
"github.com/spf13/cobra"
@@ -18,11 +20,44 @@ import (
1820
var genEventsCmd = &cobra.Command{
1921
Use: "gen-events",
2022
Short: "Generate event definitions from CGE files.",
21-
Args: cobra.ExactArgs(1),
23+
Args: cobra.MaximumNArgs(1),
2224
Run: func(cmd *cobra.Command, args []string) {
23-
filename := args[0]
25+
var output string
26+
output, err := cmd.Flags().GetString("output")
27+
abort(err)
28+
languages, err := cmd.Flags().GetStringSlice("languages")
29+
abort(err)
30+
31+
var filename string
32+
if len(args) == 0 {
33+
root, err := cgfile.FindProjectRootRelative()
34+
if err != nil || cmd.Flags().Changed("output") || cmd.Flags().Changed("languages") {
35+
fmt.Println(err, output, languages)
36+
abort(errors.New("Expected game URL."))
37+
}
38+
data, err := cgfile.LoadCodeGameFile(root)
39+
if err != nil {
40+
abortf("Failed to load CodeGame data: %s", err)
41+
}
42+
if data.Type == "client" {
43+
abort(errors.New("Use `codegame update` instead."))
44+
} else if data.Type != "server" {
45+
fmt.Println("hi")
46+
abort(errors.New("Expected game URL."))
47+
} else {
48+
filename = filepath.Join(root, "events.cge")
49+
languages = []string{data.Lang}
50+
switch data.Lang {
51+
case "go":
52+
output = filepath.Join(root, strings.ReplaceAll(strings.ReplaceAll(data.Game, "_", ""), "-", ""))
53+
default:
54+
abort(errors.New("Expected game URL."))
55+
fmt.Println("hi2")
56+
}
57+
}
58+
}
59+
2460
var cge []byte
25-
var err error
2661
if strings.HasPrefix(filename, "http://") || strings.HasPrefix(filename, "https://") {
2762
if !strings.HasSuffix(filename, "/api/events") && !strings.HasSuffix(filename, ".cge") {
2863
if strings.HasSuffix(filename, "/api") {
@@ -47,17 +82,12 @@ var genEventsCmd = &cobra.Command{
4782
abortf("Failed to read CGE file: %s", err)
4883
} else {
4984
cge, err = os.ReadFile(filename)
50-
abortf("Failed to read CGE file: ", err)
85+
abortf("Failed to read CGE file: %s", err)
5186
}
5287

5388
cgeVersion, err := cggenevents.ParseCGEVersion(string(cge))
5489
abortf("Failed to determine CGE file version: %s", err)
5590

56-
output, err := cmd.Flags().GetString("output")
57-
abort(err)
58-
languages, err := cmd.Flags().GetStringSlice("languages")
59-
abort(err)
60-
6191
cgGenEvents, err := cggenevents.InstallCGGenEvents(cgeVersion)
6292
abortf("Failed to install cg-gen-events: %s", err)
6393
_, err = exec.Execute(false, filepath.Join(xdg.DataHome, "codegame", "bin", "cg-gen-events", cgGenEvents), filename, "-o", output, "-l", strings.Join(languages, ","))

0 commit comments

Comments
 (0)