@@ -3,11 +3,15 @@ package main
33import (
44 "fmt"
55
6+ "github.com/Bananenpro/cli"
67 "github.com/code-game-project/go-utils/cgfile"
8+ "github.com/code-game-project/go-utils/cggenevents"
9+ "github.com/code-game-project/go-utils/exec"
710 "github.com/code-game-project/go-utils/modules"
11+ "github.com/code-game-project/go-utils/server"
812)
913
10- func Update () error {
14+ func Update (projectName string ) error {
1115 config , err := cgfile .LoadCodeGameFile ("" )
1216 if err != nil {
1317 return err
@@ -19,16 +23,66 @@ func Update() error {
1923 }
2024 switch config .Type {
2125 case "client" :
22- return updateClient (data .LibraryVersion , config )
26+ return updateClient (projectName , data .LibraryVersion , config )
2327 default :
2428 return fmt .Errorf ("Unknown project type: %s" , config .Type )
2529 }
2630}
2731
28- func updateClient (libraryVersion string , config * cgfile.CodeGameFileData ) error {
32+ func updateClient (projectName , libraryVersion string , config * cgfile.CodeGameFileData ) error {
33+ api , err := server .NewAPI (config .URL )
34+ if err != nil {
35+ return err
36+ }
37+
38+ info , err := api .FetchGameInfo ()
39+ if err != nil {
40+ return err
41+ }
42+ if info .DisplayName == "" {
43+ info .DisplayName = info .Name
44+ }
45+
46+ cge , err := api .GetCGEFile ()
47+ if err != nil {
48+ return err
49+ }
50+ cgeVersion , err := cggenevents .ParseCGEVersion (cge )
51+ if err != nil {
52+ return err
53+ }
54+
55+ eventNames , commandNames , err := cggenevents .GetEventNames (api .BaseURL (), cgeVersion )
56+ if err != nil {
57+ return err
58+ }
59+
60+ err = updateClientTemplate (projectName , config .Game , info .DisplayName , info .Description , eventNames , commandNames )
61+ if err != nil {
62+ return err
63+ }
64+
65+ cli .BeginLoading ("Updating csharp-client..." )
66+ installLibArgs := []string {"add" , "package" , "CodeGame.Client" }
67+ if libraryVersion != "latest" {
68+ installLibArgs = append (installLibArgs , "--version" )
69+ installLibArgs = append (installLibArgs , libraryVersion )
70+ }
71+ _ , err = exec .Execute (true , "dotnet" , installLibArgs ... )
72+ if err != nil {
73+ return err
74+ }
75+ cli .FinishLoading ()
76+
77+ cli .BeginLoading ("Updating dependencies..." )
78+ _ , err = exec .Execute (true , "dotnet" , "add" , "package" , "System.CommandLine" , "--version" , "2.0.0-beta4.22272.1" )
79+ if err != nil {
80+ return err
81+ }
82+ cli .FinishLoading ()
2983 return nil
3084}
3185
3286func updateClientTemplate (projectName , gameName , displayName , description string , eventNames , commandNames []string ) error {
33- return execClientTemplate (projectName , gameName , displayName , description , eventNames , commandNames , false )
87+ return execClientTemplate (projectName , gameName , displayName , description , eventNames , commandNames , true )
3488}
0 commit comments