From 9d798b5ba8a0b4c30efd10fe26bfa5cf49bd9308 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Mon, 12 Feb 2024 17:44:32 +0300 Subject: [PATCH] only bump version for changed modules. --- .github/workflows/update-readme.yaml | 2 +- update-version.sh | 37 +++++++++++++++++++--------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/.github/workflows/update-readme.yaml b/.github/workflows/update-readme.yaml index 4cae4aa..ffda695 100644 --- a/.github/workflows/update-readme.yaml +++ b/.github/workflows/update-readme.yaml @@ -23,7 +23,7 @@ jobs: run: echo "TAG=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $GITHUB_OUTPUT - name: Run update script - run: ./update-readme.sh + run: ./update-version.sh - name: Create Pull Request id: create-pr diff --git a/update-version.sh b/update-version.sh index 2fadb57..093069b 100755 --- a/update-version.sh +++ b/update-version.sh @@ -6,16 +6,31 @@ set -euo pipefail -LATEST_TAG=$(git describe --abbrev=0 --tags | sed 's/^v//') || exit $? +current_tag=$(git describe --tags --abbrev=0) +previous_tag=$(git describe --tags --abbrev=0 $current_tag^) +changed_files=$(git diff --name-only "$previous_tag" "$current_tag") -find . -name README.md | while read -r file; do - tmpfile=$(mktemp /tmp/tempfile.XXXXXX) - awk -v tag="$LATEST_TAG" '{ - if ($1 == "version" && $2 == "=") { - sub(/"[^"]*"/, "\"" tag "\"") - print - } else { - print - } - }' "$file" > "$tmpfile" && mv "$tmpfile" "$file" +changed_dirs=() +for file in $changed_files; do + dir=$(dirname "$file") + changed_dirs+=("$dir") done +changed_dirs=($(printf "%s\n" "${changed_dirs[@]}" | sort -u)) + +LATEST_TAG=$(git describe --abbrev=0 --tags | sed 's/^v//') || exit $? + +for dir in "${changed_dirs[@]}"; do + if [[ -f "$dir/README.md" ]]; then + echo "Bumping version in $dir/README.md" + file="$dir/README.md" + tmpfile=$(mktemp /tmp/tempfile.XXXXXX) + awk -v tag="$LATEST_TAG" '{ + if ($1 == "version" && $2 == "=") { + sub(/"[^"]*"/, "\"" tag "\"") + print + } else { + print + } + }' "$file" > "$tmpfile" && mv "$tmpfile" "$file" + fi +done \ No newline at end of file