@@ -2,39 +2,79 @@ package main
2
2
3
3
import (
4
4
"fmt"
5
+ "os"
6
+ "os/exec"
7
+ "strings"
5
8
6
9
"github.com/code-game-project/go-utils/cgfile"
10
+ cgExec "github.com/code-game-project/go-utils/exec"
7
11
"github.com/code-game-project/go-utils/external"
8
12
"github.com/code-game-project/go-utils/modules"
9
13
)
10
14
11
15
func Run () error {
12
- config , err := cgfile . LoadCodeGameFile ( "" )
16
+ data , err := modules . ReadCommandConfig [modules. RunData ]( )
13
17
if err != nil {
14
18
return err
15
19
}
16
20
17
- data , err := modules .ReadCommandConfig [modules.RunData ]()
21
+ typescript := data .Lang == "ts"
22
+
23
+ config , err := cgfile .LoadCodeGameFile ("" )
18
24
if err != nil {
19
25
return err
20
26
}
27
+ runtime := config .LangConfig ["runtime" ]
28
+ node := runtime == "node"
29
+
30
+ if ! typescript || ! node {
31
+ panic ("not implemented" )
32
+ }
21
33
22
34
url := external .TrimURL (config .URL )
23
35
24
36
switch config .Type {
25
37
case "client" :
26
- return runClient (url , data .Args )
38
+ return runClient (url , data .Args , typescript , node )
27
39
case "server" :
28
- return runServer (data .Args )
40
+ return runServer (data .Args , typescript , node )
29
41
default :
30
42
return fmt .Errorf ("Unknown project type: %s" , config .Type )
31
43
}
32
44
}
33
45
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
+ }
35
74
return nil
36
75
}
37
76
38
- func runServer (args []string ) error {
77
+ func runServer (args []string , typescript , node bool ) error {
78
+ panic ("not implemented" )
39
79
return nil
40
80
}
0 commit comments