@@ -42,55 +42,64 @@ func LatestCGEVersion() (string, error) {
42
42
return strings .TrimPrefix (strings .Join (strings .Split (tag , "." )[:2 ], "." ), "v" ), nil
43
43
}
44
44
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 , "." , "- " ))
47
47
if runtime .GOOS == "windows" {
48
48
exeName = exeName + ".exe"
49
49
}
50
50
51
51
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
58
53
}
59
54
60
55
filename := fmt .Sprintf ("cg-gen-events-%s-%s.tar.gz" , runtime .GOOS , runtime .GOARCH )
61
56
if runtime .GOOS == "windows" {
62
57
filename = fmt .Sprintf ("cg-gen-events-%s-%s.zip" , runtime .GOOS , runtime .GOARCH )
63
58
}
64
59
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 ))
66
61
if err != nil {
67
- return err
62
+ return "" , err
68
63
}
69
64
defer res .Body .Close ()
70
65
71
66
err = os .MkdirAll (cgGenEventsPath , 0755 )
72
67
if err != nil {
73
- return err
68
+ return "" , err
74
69
}
75
70
76
71
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 ))
78
73
}
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 ))
80
75
}
81
76
82
77
func 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
86
87
}
87
88
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 ()))
92
97
}
93
98
}
94
99
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
96
105
}
0 commit comments