From 0588e1ddf40db0bd5419dedacc8e9407f7d72d25 Mon Sep 17 00:00:00 2001 From: Krasimir Georgiev Date: Mon, 20 Oct 2025 13:45:15 +0000 Subject: [PATCH 1/3] add util/release.sh script to automatically bump the rules_rust version --- util/release.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 util/release.sh diff --git a/util/release.sh b/util/release.sh new file mode 100755 index 0000000000..c19240143c --- /dev/null +++ b/util/release.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# +# Usage: util/release.sh [version] +# +# where version (optional) is the new version of rules_rust. +set -eux + +# Normalize working directory to root of repository. +cd "$(dirname "${BASH_SOURCE[0]}")"/.. + +# Read the old version. +readonly OLD="$(cat version.bzl | grep VERSION | awk '{print $3}' | tr -d '"')" + +function new_from_old() { + local major=$(awk -F. '{print $1}' <<<"$OLD") + local minor=$(awk -F. '{print $2}' <<<"$OLD") + echo "$major.$((minor + 1)).0" +} + +readonly NEW="${1:-$(new_from_old)}" + +sed -i "s/$OLD/$NEW/" \ + version.bzl \ + MODULE.bazel \ + crate_universe/extensions.bzl \ + docs/src/index.md \ + extensions/bindgen/MODULE.bazel \ + extensions/mdbook/MODULE.bazel \ + extensions/prost/MODULE.bazel \ + extensions/protobuf/MODULE.bazel \ + extensions/wasm_bindgen/MODULE.bazel \ + extensions/pyo3/MODULE.bazel \ + extensions/pyo3/version.bzl From add75c6c8925cb0b3c8253e6b881012ea5026da4 Mon Sep 17 00:00:00 2001 From: Krasimir Georgiev Date: Thu, 23 Oct 2025 09:02:30 +0000 Subject: [PATCH 2/3] update script --- util/release.sh | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/util/release.sh b/util/release.sh index c19240143c..8163ad3b8f 100755 --- a/util/release.sh +++ b/util/release.sh @@ -3,7 +3,7 @@ # Usage: util/release.sh [version] # # where version (optional) is the new version of rules_rust. -set -eux +set -xeuo pipefail # Normalize working directory to root of repository. cd "$(dirname "${BASH_SOURCE[0]}")"/.. @@ -19,15 +19,24 @@ function new_from_old() { readonly NEW="${1:-$(new_from_old)}" -sed -i "s/$OLD/$NEW/" \ - version.bzl \ - MODULE.bazel \ - crate_universe/extensions.bzl \ - docs/src/index.md \ - extensions/bindgen/MODULE.bazel \ - extensions/mdbook/MODULE.bazel \ - extensions/prost/MODULE.bazel \ - extensions/protobuf/MODULE.bazel \ - extensions/wasm_bindgen/MODULE.bazel \ - extensions/pyo3/MODULE.bazel \ - extensions/pyo3/version.bzl +# Update matching VERSION constants in version.bzl files. +function version_pattern() { + local version_quoted="\"$1\"" + echo "VERSION = $version_quoted" +} + +grep -rl \ + --include='version.bzl' \ + "$(version_pattern $OLD)" \ + | xargs sed -i "s/^$(version_pattern $OLD)$/$(version_pattern $NEW)/g" + +# Update matching bazel_dep(name = "rules_rust", version = ...) declarations. +function bazel_dep_pattern() { + local version_quoted="\"$1\"" + echo "bazel_dep(name = \"rules_rust\", version = $version_quoted)" +} + +grep -rl \ + --include='MODULE.bazel' --include='*.bzl' --include='*.md' \ + "$(bazel_dep_pattern $OLD)" \ + | xargs sed -i "s/^$(bazel_dep_pattern $OLD)$/$(bazel_dep_pattern $NEW)/" From 9df0b41644cb548e3fff4ca9ea433132f90fd601 Mon Sep 17 00:00:00 2001 From: Krasimir Georgiev Date: Thu, 23 Oct 2025 10:47:02 +0000 Subject: [PATCH 3/3] update module() declarations --- util/release.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/util/release.sh b/util/release.sh index 8163ad3b8f..70f9b15409 100755 --- a/util/release.sh +++ b/util/release.sh @@ -40,3 +40,42 @@ grep -rl \ --include='MODULE.bazel' --include='*.bzl' --include='*.md' \ "$(bazel_dep_pattern $OLD)" \ | xargs sed -i "s/^$(bazel_dep_pattern $OLD)$/$(bazel_dep_pattern $NEW)/" + +# Update module() declarations: +# module( +# name = "rules_rust", +# version = "...", +# ) +function update_module_version() { + local file=$1 + + local out="$(awk -v old=$OLD -v new=$NEW ' + BEGIN { + VERSION_PATTERN = "version = \"" old "\""; + NAME_PATTERN = "name = \"rules_rust.*\""; + CLOSING_PAREN_PATTERN = "^)$"; + + inside_module = 0; + name_matches = 0; + } + /^module\($/ { + inside_module = 1; + } + inside_module { + if ($0 ~ NAME_PATTERN) { + name_matches = 1; + } else if ($0 ~ VERSION_PATTERN && name_matches) { + gsub(old, new); + } else if ($0 ~ CLOSING_PAREN_PATTERN) { + inside_module = 0; + name_matches = 0; + } + } + { print } + ' "$file")" + echo "$out" > "$file" +} + +find . -name MODULE.bazel -print0 | while IFS= read -r -d $'\0' file; do + update_module_version "$file" +done