From c023963235f29bf4a2cacdc7ad9ee46e572cc22a Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 8 Mar 2024 15:43:27 -0700 Subject: [PATCH] fix updating latest Zig version to -wip nomination Signed-off-by: Stephen Gutekanst --- internal/wrench/scripts/install_zig.go | 13 ++++++++++++- .../wrench/scripts/mach-push-rewrite-zig-version.go | 8 ++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/internal/wrench/scripts/install_zig.go b/internal/wrench/scripts/install_zig.go index 3e1015c..7d1fac0 100644 --- a/internal/wrench/scripts/install_zig.go +++ b/internal/wrench/scripts/install_zig.go @@ -8,6 +8,7 @@ import ( "os/exec" "path/filepath" "runtime" + "strings" "github.com/hexops/wrench/internal/errors" ) @@ -20,7 +21,7 @@ func init() { Execute: func(args ...string) error { force := len(args) == 1 && args[0] == "true" - wantZigVersion, err := QueryZigVersion("mach-latest") + wantZigVersion, err := QueryZigVersion("latest") if err != nil { return errors.Wrap(err, "QueryZigVersion") } @@ -97,6 +98,16 @@ func QueryZigVersion(name string) (string, error) { if err := json.NewDecoder(resp.Body).Decode(&v); err != nil { return "", err } + if name == "latest" { + // If we want generic latest it means either we should use e.g. "2024.3.0-mach-wip" if + // there is a work-in-progress nomination, otherwise fallback to "mach-latest" tag. + for name, version := range v { + if strings.HasSuffix(name, "-mach-wip") { + return version.Version, nil + } + } + name = "mach-latest" + } version, ok := v[name] if !ok { return "", fmt.Errorf("no Zig version %q found in %s", name, indexURL) diff --git a/internal/wrench/scripts/mach-push-rewrite-zig-version.go b/internal/wrench/scripts/mach-push-rewrite-zig-version.go index 4b216d0..822c5c0 100644 --- a/internal/wrench/scripts/mach-push-rewrite-zig-version.go +++ b/internal/wrench/scripts/mach-push-rewrite-zig-version.go @@ -10,10 +10,14 @@ import ( func init() { Scripts = append(Scripts, Script{ Command: "mach-push-rewrite-zig-version", - Args: nil, + Args: []string{"new version"}, Description: "wrench installs prerequisites (Go), rebuilds itself, and restarts the service", ExecuteResponse: func(args ...string) (*api.ScriptResponse, error) { - wantZigVersion, err := QueryZigVersion("mach-latest") + if len(args) != 1 { + return nil, errors.New("expected [new version] argument (e.g. 'latest', 'mach-latest')") + } + + wantZigVersion, err := QueryZigVersion(args[0]) if err != nil { return nil, errors.Wrap(err, "QueryZigVersion") }