@@ -2,39 +2,79 @@ package main
22
33import (
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
1115func 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