From faa11ffa0d2ee7a24d8dc58a923533bdfb0e9af1 Mon Sep 17 00:00:00 2001 From: DevelopmentCats Date: Fri, 24 Oct 2025 16:14:20 -0500 Subject: [PATCH 1/4] fix: improve version extraction logic to prevent false positives --- .github/scripts/version-bump.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/scripts/version-bump.sh b/.github/scripts/version-bump.sh index fc3166190..1a572cf24 100755 --- a/.github/scripts/version-bump.sh +++ b/.github/scripts/version-bump.sh @@ -77,16 +77,19 @@ update_readme_version() { in_target_module = 0 } } - /version.*=.*"/ { - if (in_target_module) { - gsub(/version[[:space:]]*=[[:space:]]*"[^"]*"/, "version = \"" new_version "\"") + /^[[:space:]]*version[[:space:]]*=/ { + if (in_target_module && $1 == "version") { + match($0, /^[[:space:]]*/) + indent = substr($0, 1, RLENGTH) + print indent "version = \"" new_version "\"" in_target_module = 0 + next } } { print } ' "$readme_path" > "${readme_path}.tmp" && mv "${readme_path}.tmp" "$readme_path" return 0 - elif grep -q 'version\s*=\s*"' "$readme_path"; then + elif grep -q '^[[:space:]]*version[[:space:]]*=' "$readme_path"; then echo "⚠️ Found version references but no module source match for $namespace/$module_name" return 1 fi @@ -148,9 +151,9 @@ main() { local current_version if [ -z "$latest_tag" ]; then - if [ -f "$readme_path" ] && grep -q 'version\s*=\s*"' "$readme_path"; then + if [ -f "$readme_path" ] && grep -q '^[[:space:]]*version[[:space:]]*=' "$readme_path"; then local readme_version - readme_version=$(grep 'version\s*=\s*"' "$readme_path" | head -1 | sed 's/.*version\s*=\s*"\([^"]*\)".*/\1/') + readme_version=$(awk '/^[[:space:]]*version[[:space:]]*=/ && $1 == "version" { match($0, /"[^"]*"/); print substr($0, RSTART+1, RLENGTH-2); exit }' "$readme_path") echo "No git tag found, but README shows version: $readme_version" if ! validate_version "$readme_version"; then From c6dabc68b9543aa59e8131dfec5135b637fe77c9 Mon Sep 17 00:00:00 2001 From: DevelopmentCats Date: Mon, 27 Oct 2025 08:32:02 -0500 Subject: [PATCH 2/4] fix(version-bump): remove redundant checks --- .github/scripts/version-bump.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/scripts/version-bump.sh b/.github/scripts/version-bump.sh index 1a572cf24..6af3eca2e 100755 --- a/.github/scripts/version-bump.sh +++ b/.github/scripts/version-bump.sh @@ -78,8 +78,8 @@ update_readme_version() { } } /^[[:space:]]*version[[:space:]]*=/ { - if (in_target_module && $1 == "version") { - match($0, /^[[:space:]]*/) + if (in_target_module) { + match($0, /^[[:space]]*/ indent = substr($0, 1, RLENGTH) print indent "version = \"" new_version "\"" in_target_module = 0 @@ -153,7 +153,7 @@ main() { if [ -z "$latest_tag" ]; then if [ -f "$readme_path" ] && grep -q '^[[:space:]]*version[[:space:]]*=' "$readme_path"; then local readme_version - readme_version=$(awk '/^[[:space:]]*version[[:space:]]*=/ && $1 == "version" { match($0, /"[^"]*"/); print substr($0, RSTART+1, RLENGTH-2); exit }' "$readme_path") + readme_version=$(awk '/^[[:space:]]*version[[:space:]]*=/ { match($0, /"[^"]*"/); print substr($0, RSTART+1, RLENGTH-2); exit }' "$readme_path") echo "No git tag found, but README shows version: $readme_version" if ! validate_version "$readme_version"; then From e17d545dcc534ae220eb8889bca59cc69f22e930 Mon Sep 17 00:00:00 2001 From: DevelopmentCats Date: Tue, 18 Nov 2025 09:56:29 -0600 Subject: [PATCH 3/4] fix(version-bump): enhance version update logic for module blocks --- .github/scripts/version-bump.sh | 41 +++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/.github/scripts/version-bump.sh b/.github/scripts/version-bump.sh index 6af3eca2e..0fa49c0ed 100755 --- a/.github/scripts/version-bump.sh +++ b/.github/scripts/version-bump.sh @@ -70,21 +70,38 @@ update_readme_version() { if grep -q "source.*${module_source}" "$readme_path"; then echo "Updating version references for $namespace/$module_name in $readme_path" awk -v module_source="$module_source" -v new_version="$new_version" ' - /source.*=.*/ { - if ($0 ~ module_source) { - in_target_module = 1 - } else { - in_target_module = 0 - } + /^[[:space:]]*module[[:space:]]/ { + in_module_block = 1 + module_content = $0 "\n" + module_has_target_source = 0 + next } - /^[[:space:]]*version[[:space:]]*=/ { - if (in_target_module) { - match($0, /^[[:space]]*/ - indent = substr($0, 1, RLENGTH) - print indent "version = \"" new_version "\"" - in_target_module = 0 + in_module_block { + module_content = module_content $0 "\n" + if ($0 ~ /source.*=/ && $0 ~ module_source) { + module_has_target_source = 1 + } + if ($0 ~ /^[[:space:]]*}[[:space:]]*$/) { + in_module_block = 0 + if (module_has_target_source) { + split(module_content, lines, "\n") + for (i in lines) { + line = lines[i] + if (line ~ /^[[:space:]]*version[[:space:]]*=/) { + match(line, /^[[:space:]]*/) + indent = substr(line, 1, RLENGTH) + print indent "version = \"" new_version "\"" + } else if (line != "") { + print line + } + } + } else { + printf "%s", module_content + } + module_content = "" next } + next } { print } ' "$readme_path" > "${readme_path}.tmp" && mv "${readme_path}.tmp" "$readme_path" From 7f4ef59d74dca37dc4372444804a845e075745d3 Mon Sep 17 00:00:00 2001 From: DevelopmentCats Date: Tue, 18 Nov 2025 12:39:27 -0600 Subject: [PATCH 4/4] fix: address comments --- .github/scripts/version-bump.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/scripts/version-bump.sh b/.github/scripts/version-bump.sh index 482ca4f65..f84a7f894 100755 --- a/.github/scripts/version-bump.sh +++ b/.github/scripts/version-bump.sh @@ -84,14 +84,14 @@ update_readme_version() { if ($0 ~ /^[[:space:]]*}[[:space:]]*$/) { in_module_block = 0 if (module_has_target_source) { - split(module_content, lines, "\n") - for (i in lines) { + num_lines = split(module_content, lines, "\n") + for (i = 1; i <= num_lines; i++) { line = lines[i] if (line ~ /^[[:space:]]*version[[:space:]]*=/) { match(line, /^[[:space:]]*/) indent = substr(line, 1, RLENGTH) - print indent "version = \"" new_version "\"" - } else if (line != "") { + printf "%sversion = \"%s\"\n", indent, new_version + } else { print line } }