You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
Bash
36 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# This script updates the version number in the README.md files of all modules
|
|
# to the latest tag in the repository. It is intended to be run from the root
|
|
# of the repository or by using the `bun update-version` command.
|
|
|
|
set -euo pipefail
|
|
|
|
current_tag=$(git describe --tags --abbrev=0)
|
|
previous_tag=$(git describe --tags --abbrev=0 $current_tag^)
|
|
mapfile -t changed_files < <(git diff --name-only "$previous_tag" "$current_tag" | xargs dirname | sort -u | grep -v '^\.')
|
|
|
|
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 |