Skip to content

Commit ec08832

Browse files
committed
Implement run command for typescript node clients
1 parent e26b15a commit ec08832

File tree

3 files changed

+59
-10
lines changed

3 files changed

+59
-10
lines changed

new_client.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strings"
77

88
"github.com/Bananenpro/cli"
9+
"github.com/code-game-project/go-utils/cgfile"
910
"github.com/code-game-project/go-utils/cggenevents"
1011
"github.com/code-game-project/go-utils/exec"
1112
"github.com/code-game-project/go-utils/modules"
@@ -51,6 +52,17 @@ func CreateNewClient(projectName string) error {
5152
if err != nil {
5253
return err
5354
}
55+
56+
cgConf, err := cgfile.LoadCodeGameFile("")
57+
if err != nil {
58+
return err
59+
}
60+
cgConf.LangConfig["runtime"] = runtime
61+
err = cgConf.Write("")
62+
if err != nil {
63+
return err
64+
}
65+
5466
node := runtime == "node"
5567

5668
if !node {

new_server.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package main
22

33
import (
4-
"os"
5-
64
"github.com/Bananenpro/cli"
75
"github.com/code-game-project/go-utils/exec"
86
"github.com/code-game-project/go-utils/modules"
@@ -17,8 +15,7 @@ var serverDockerfileTemplate string
1715
var serverDockerignoreTemplate string
1816

1917
func CreateNewServer(projectName string) error {
20-
cli.Error("not implemented")
21-
os.Exit(1)
18+
panic("not implemented")
2219

2320
data, err := modules.ReadCommandConfig[modules.NewServerData]()
2421
_ = data

run.go

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,79 @@ package main
22

33
import (
44
"fmt"
5+
"os"
6+
"os/exec"
7+
"strings"
58

69
"github.com/code-game-project/go-utils/cgfile"
10+
cgExec "github.com/code-game-project/go-utils/exec"
711
"github.com/code-game-project/go-utils/external"
812
"github.com/code-game-project/go-utils/modules"
913
)
1014

1115
func Run() error {
12-
config, err := cgfile.LoadCodeGameFile("")
16+
data, err := modules.ReadCommandConfig[modules.RunData]()
1317
if err != nil {
1418
return err
1519
}
1620

17-
data, err := modules.ReadCommandConfig[modules.RunData]()
21+
typescript := data.Lang == "ts"
22+
23+
config, err := cgfile.LoadCodeGameFile("")
1824
if err != nil {
1925
return err
2026
}
27+
runtime := config.LangConfig["runtime"]
28+
node := runtime == "node"
29+
30+
if !typescript || !node {
31+
panic("not implemented")
32+
}
2133

2234
url := external.TrimURL(config.URL)
2335

2436
switch config.Type {
2537
case "client":
26-
return runClient(url, data.Args)
38+
return runClient(url, data.Args, typescript, node)
2739
case "server":
28-
return runServer(data.Args)
40+
return runServer(data.Args, typescript, node)
2941
default:
3042
return fmt.Errorf("Unknown project type: %s", config.Type)
3143
}
3244
}
3345

34-
func runClient(url string, args []string) error {
46+
func runClient(url string, args []string, typescript, node bool) error {
47+
if typescript {
48+
_, err := cgExec.Execute(true, "npx", "tsc")
49+
if err != nil {
50+
return err
51+
}
52+
}
53+
54+
cmdArgs := []string{"dist/index.js"}
55+
cmdArgs = append(cmdArgs, args...)
56+
57+
env := []string{"CG_GAME_URL=" + url}
58+
env = append(env, os.Environ()...)
59+
60+
if _, err := exec.LookPath("node"); err != nil {
61+
return fmt.Errorf("'node' ist not installed!")
62+
}
63+
64+
cmd := exec.Command("node", cmdArgs...)
65+
cmd.Stdin = os.Stdin
66+
cmd.Stdout = os.Stdout
67+
cmd.Stderr = os.Stderr
68+
cmd.Env = env
69+
70+
err := cmd.Run()
71+
if err != nil {
72+
return fmt.Errorf("Failed to run 'CG_GAME_URL=%s node %s'", url, strings.Join(cmdArgs, " "))
73+
}
3574
return nil
3675
}
3776

38-
func runServer(args []string) error {
77+
func runServer(args []string, typescript, node bool) error {
78+
panic("not implemented")
3979
return nil
4080
}

0 commit comments

Comments
 (0)