From 8c451034ba2ae8ca80619242c4bd61bb91a0bb7d Mon Sep 17 00:00:00 2001 From: Jakub Kuczys Date: Sun, 24 May 2026 19:55:15 +0200 Subject: [PATCH] Pass wrapper version as env var in the process runner --- .gitignore | 1 + go/build_tools/generate_versioninfo/main.go | 18 ++++++++++++++++-- go/cmd/redbot-update/main.go | 4 ++-- go/cmd/redbot-update/runner.go | 21 ++++++++++++--------- 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 5b95c39..395f702 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,6 @@ dist/ /.venv /redbot-update *.exe +generated_*.go **/resources/generated/ resources_windows.syso diff --git a/go/build_tools/generate_versioninfo/main.go b/go/build_tools/generate_versioninfo/main.go index 8f40e53..8ce7563 100644 --- a/go/build_tools/generate_versioninfo/main.go +++ b/go/build_tools/generate_versioninfo/main.go @@ -2,6 +2,7 @@ package main import ( "encoding/json" + "fmt" "os" "path/filepath" "text/template" @@ -38,7 +39,8 @@ func main() { panic(err) } generateAppManifestFile(v) - generateVersionInfoFile(v) + generateVersionInfoJsonFile(v) + generateVersionInfoGoFile(v) } // generate app manifest @@ -59,7 +61,7 @@ func generateAppManifestFile(v PythonProjectVersion) { } // generate versioninfo.json -func generateVersionInfoFile(v PythonProjectVersion) { +func generateVersionInfoJsonFile(v PythonProjectVersion) { data, err := os.ReadFile(filepath.Join(baseResourcesDir, "versioninfo.json")) if err != nil { panic(err) @@ -83,3 +85,15 @@ func generateVersionInfoFile(v PythonProjectVersion) { panic(err) } } + +func generateVersionInfoGoFile(v PythonProjectVersion) { + f, err := os.Create("generated_versioninfo.go") + if err != nil { + panic(err) + } + fmt.Fprintf(f, `// Code generated by go/build_tools/generate_versioninfo. DO NOT EDIT. +package main + +const wrapperVersion = %#v +`, v.String()) +} diff --git a/go/cmd/redbot-update/main.go b/go/cmd/redbot-update/main.go index 5614102..80f94a0 100644 --- a/go/cmd/redbot-update/main.go +++ b/go/cmd/redbot-update/main.go @@ -104,7 +104,7 @@ func main() { logger := slog.New(slog.NewMultiHandler(handlers...)) slog.SetDefault(logger) - slog.Debug("redbot-update wrapper started", "pid", pidLogValue{}) + slog.Debug("redbot-update wrapper started", "wrapperVersion", wrapperVersion, "pid", pidLogValue{}) exe, err := osutils.GetExecutableWithPreservedSymlinks(DefaultProgramName) if err != nil { @@ -163,7 +163,7 @@ func main() { } } - runner := NewProcessRunner(exe, pythonExe) + runner := NewProcessRunner(wrapperVersion, exe, pythonExe) if err := runner.Start(); err != nil { fmt.Printf("Failed to start the process:\n%v\n", err) os.Exit(1) diff --git a/go/cmd/redbot-update/runner.go b/go/cmd/redbot-update/runner.go index 21aa0c6..caa5f4c 100644 --- a/go/cmd/redbot-update/runner.go +++ b/go/cmd/redbot-update/runner.go @@ -61,18 +61,20 @@ func (o *SpawnProcessRequestOutput) SetRequestType(v string) { } type ProcessRunner struct { - currentCmd *exec.Cmd - wrapperExe string - runnerDir string - pythonExe string - startArgs []string + currentCmd *exec.Cmd + wrapperVersion string + wrapperExe string + runnerDir string + pythonExe string + startArgs []string } -func NewProcessRunner(wrapperExe, pythonExe string) *ProcessRunner { +func NewProcessRunner(wrapperVersion, wrapperExe, pythonExe string) *ProcessRunner { return &ProcessRunner{ - wrapperExe: wrapperExe, - pythonExe: pythonExe, - startArgs: append([]string{"-m", "redbot._update"}, os.Args[1:]...), + wrapperVersion: wrapperVersion, + wrapperExe: wrapperExe, + pythonExe: pythonExe, + startArgs: append([]string{"-m", "redbot._update"}, os.Args[1:]...), } } @@ -228,6 +230,7 @@ func (r *ProcessRunner) Start() error { cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Env = append(os.Environ(), + "REDBOT_UPDATE_RUNNER_WRAPPER_VERSION="+r.wrapperVersion, "REDBOT_UPDATE_RUNNER_WRAPPER_EXE="+r.wrapperExe, "REDBOT_UPDATE_RUNNER_DIR="+r.runnerDir, )