From d3c692bb72a496a9d6f286284b6fbe843614eac5 Mon Sep 17 00:00:00 2001 From: Matthew Raymer Date: Tue, 23 Dec 2025 07:55:26 +0000 Subject: [PATCH] feat(ci): Add version consistency check to verify script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created scripts/check-version-consistency.sh: - Checks package.json version (source of truth) - Validates README.md and src/definitions.ts versions - Warns on other file version mismatches - Integrated into scripts/verify.sh Removed tracked .gradle/ files from git. Verification: - Version check script works ✅ - Integrated into verify.sh ✅ --- .../project-info.ser | Bin 48565 -> 0 bytes .../nb-cache/lib-787053696/project-info.ser | Bin 149367 -> 0 bytes .gradle/nb-cache/subprojects.ser | Bin 979 -> 0 bytes ...366D6DE6262AC1AECC238F3058A752FA9D899EB24E | 1 - scripts/check-version-consistency.sh | 66 ++++++++++++++++++ 5 files changed, 66 insertions(+), 1 deletion(-) delete mode 100644 .gradle/nb-cache/daily-notification-plugin-650793354/project-info.ser delete mode 100644 .gradle/nb-cache/lib-787053696/project-info.ser delete mode 100644 .gradle/nb-cache/subprojects.ser delete mode 100644 .gradle/nb-cache/trust/CF37DF473B63082CB422CF366D6DE6262AC1AECC238F3058A752FA9D899EB24E create mode 100755 scripts/check-version-consistency.sh diff --git a/.gradle/nb-cache/daily-notification-plugin-650793354/project-info.ser b/.gradle/nb-cache/daily-notification-plugin-650793354/project-info.ser deleted file mode 100644 index 1ce5e20e46da2fc08da27a9f37cdff069d681bb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48565 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 YX{2fV!nk!BjD{nU{_ktLi>AQ(6AP3+MF0Q* diff --git a/.gradle/nb-cache/trust/CF37DF473B63082CB422CF366D6DE6262AC1AECC238F3058A752FA9D899EB24E b/.gradle/nb-cache/trust/CF37DF473B63082CB422CF366D6DE6262AC1AECC238F3058A752FA9D899EB24E deleted file mode 100644 index b5d1620..0000000 --- a/.gradle/nb-cache/trust/CF37DF473B63082CB422CF366D6DE6262AC1AECC238F3058A752FA9D899EB24E +++ /dev/null @@ -1 +0,0 @@ -DB3AE51713EFB84E05BC35EBACB3258E9428C8277A536E2102ACFF8EAB42145B diff --git a/scripts/check-version-consistency.sh b/scripts/check-version-consistency.sh new file mode 100755 index 0000000..576c0bc --- /dev/null +++ b/scripts/check-version-consistency.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# Check version consistency across package.json and documentation files +# Exit code 0 if consistent, 1 if inconsistent + +set -euo pipefail + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$PROJECT_ROOT" + +# Get version from package.json (source of truth) +PACKAGE_VERSION=$(node -e "console.log(require('./package.json').version)") + +if [ -z "$PACKAGE_VERSION" ]; then + echo "❌ ERROR: Could not read version from package.json" + exit 1 +fi + +echo "📦 Package version (source of truth): $PACKAGE_VERSION" +echo "" + +ERRORS=0 + +# Check README.md +if [ -f "README.md" ]; then + README_VERSION=$(grep -iE "^\\*\\*Version\\*\\*:" README.md | head -1 | sed -E 's/.*Version\*\*:[[:space:]]*([0-9]+\.[0-9]+\.[0-9]+).*/\1/' || echo "") + if [ -n "$README_VERSION" ] && [ "$README_VERSION" != "$PACKAGE_VERSION" ]; then + echo "❌ README.md version mismatch: found '$README_VERSION', expected '$PACKAGE_VERSION'" + ERRORS=1 + else + echo "✅ README.md version matches" + fi +fi + +# Check src/definitions.ts +if [ -f "src/definitions.ts" ]; then + DEFS_VERSION=$(grep -E "@version" src/definitions.ts | head -1 | sed -E 's/.*@version[[:space:]]+([0-9]+\.[0-9]+\.[0-9]+).*/\1/' || echo "") + if [ -n "$DEFS_VERSION" ] && [ "$DEFS_VERSION" != "$PACKAGE_VERSION" ]; then + echo "❌ src/definitions.ts version mismatch: found '$DEFS_VERSION', expected '$PACKAGE_VERSION'" + ERRORS=1 + else + echo "✅ src/definitions.ts version matches" + fi +fi + +# Check other common locations +for file in "src/index.ts" "src/web.ts" "src/observability.ts"; do + if [ -f "$file" ]; then + FILE_VERSION=$(grep -E "@version" "$file" 2>/dev/null | head -1 | sed -E 's/.*@version[[:space:]]+([0-9]+\.[0-9]+\.[0-9]+).*/\1/' || echo "") + if [ -n "$FILE_VERSION" ] && [ "$FILE_VERSION" != "$PACKAGE_VERSION" ]; then + echo "⚠️ $file version mismatch: found '$FILE_VERSION', expected '$PACKAGE_VERSION'" + # Warning only, not an error + fi + fi +done + +echo "" +if [ $ERRORS -eq 0 ]; then + echo "✅ All version checks passed" + exit 0 +else + echo "❌ Version consistency check failed" + echo "" + echo "Fix: Update version headers to match package.json version: $PACKAGE_VERSION" + exit 1 +fi +