Skip to content

Commit 8ef8c0d

Browse files
committed
Always use latest compatible cg-gen-events patch version
1 parent 3db9792 commit 8ef8c0d

File tree

1 file changed

+30
-21
lines changed

1 file changed

+30
-21
lines changed

external/cg_gen_events.go

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

8277
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
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

Comments
 (0)