@@ -42,55 +42,64 @@ func LatestCGEVersion() (string, error) {
4242 return strings .TrimPrefix (strings .Join (strings .Split (tag , "." )[:2 ], "." ), "v" ), nil
4343}
4444
45- func InstallCGGenEvents (cgeVersion string ) error {
46- exeName := fmt .Sprintf ("cg-gen-events- %s" , strings .ReplaceAll (cgeVersion , "." , "_ " ))
45+ func InstallCGGenEvents (version string ) ( string , error ) {
46+ exeName := fmt .Sprintf ("cg-gen-events_ %s" , strings .ReplaceAll (version , "." , "- " ))
4747 if runtime .GOOS == "windows" {
4848 exeName = exeName + ".exe"
4949 }
5050
5151 if _ , err := os .Stat (filepath .Join (cgGenEventsPath , exeName )); err == nil {
52- return nil
53- }
54-
55- version , err := GithubTagFromVersion ("code-game-project" , "cg-gen-events" , cgeVersion )
56- if err != nil {
57- return err
52+ return exeName , nil
5853 }
5954
6055 filename := fmt .Sprintf ("cg-gen-events-%s-%s.tar.gz" , runtime .GOOS , runtime .GOARCH )
6156 if runtime .GOOS == "windows" {
6257 filename = fmt .Sprintf ("cg-gen-events-%s-%s.zip" , runtime .GOOS , runtime .GOARCH )
6358 }
6459
65- res , err := http .Get (fmt .Sprintf ("https://github.com/code-game-project/cg-gen-events/releases/download/%s/%s" , version , filename ))
60+ res , err := http .Get (fmt .Sprintf ("https://github.com/code-game-project/cg-gen-events/releases/download/v %s/%s" , version , filename ))
6661 if err != nil {
67- return err
62+ return "" , err
6863 }
6964 defer res .Body .Close ()
7065
7166 err = os .MkdirAll (cgGenEventsPath , 0755 )
7267 if err != nil {
73- return err
68+ return "" , err
7469 }
7570
7671 if runtime .GOOS == "windows" {
77- return UnzipFile (res .Body , "cg-gen-events.exe" , filepath .Join (cgGenEventsPath , exeName ))
72+ return exeName , UnzipFile (res .Body , "cg-gen-events.exe" , filepath .Join (cgGenEventsPath , exeName ))
7873 }
79- return UntargzFile (res .Body , "cg-gen-events" , filepath .Join (cgGenEventsPath , exeName ))
74+ return exeName , UntargzFile (res .Body , "cg-gen-events" , filepath .Join (cgGenEventsPath , exeName ))
8075}
8176
8277func CGGenEvents (outputDir , url , cgeVersion , language string ) error {
83- exeName := fmt .Sprintf ("cg-gen-events-%s" , strings .ReplaceAll (cgeVersion , "." , "_" ))
84- if runtime .GOOS == "windows" {
85- exeName = exeName + ".exe"
78+ version , err := GithubTagFromVersion ("code-game-project" , "cg-gen-events" , cgeVersion )
79+ if err != nil {
80+ return err
81+ }
82+ version = strings .TrimPrefix (version , "v" )
83+
84+ exeName , err := InstallCGGenEvents (version )
85+ if err != nil {
86+ return err
8687 }
8788
88- if _ , err := os .Stat (filepath .Join (cgGenEventsPath , exeName )); err != nil {
89- err = InstallCGGenEvents (cgeVersion )
90- if err != nil {
91- return err
89+ binaries , err := os .ReadDir (cgGenEventsPath )
90+ if err != nil {
91+ return err
92+ }
93+ for _ , b := range binaries {
94+ info , err := b .Info ()
95+ if err == nil && info .Name () != exeName && strings .HasPrefix (info .Name (), fmt .Sprintf ("cg-gen-events_%s" , strings .ReplaceAll (cgeVersion , "." , "-" ))) {
96+ os .Remove (filepath .Join (cgGenEventsPath , info .Name ()))
9297 }
9398 }
9499
95- return Execute (filepath .Join (cgGenEventsPath , exeName ), url , "--languages" , language , "--output" , outputDir )
100+ out , err := ExecuteHidden (filepath .Join (cgGenEventsPath , exeName ), url , "--languages" , language , "--output" , outputDir )
101+ if err != nil {
102+ cli .Error (out )
103+ }
104+ return err
96105}
0 commit comments