blob: 87a241f1e05c547755c8f1adbd5b10a3746ec14b [file] [log] [blame] [edit]
#!/usr/bin/env bash
# Update changelogs in each of the bindings based on commits between provided reference and HEAD
VERSION=$1
IFS='.' read -r MAJOR_VERSION MINOR_VERSION PATCH_VERSION <<< "$VERSION"
LANGUAGE=$2
calculate_previous_tag() {
if [ "$PATCH_VERSION" -ne 0 ]; then
PREVIOUS_TAG="selenium-$MAJOR_VERSION.$MINOR_VERSION.$(($PATCH_VERSION - 1))"
if [ -n "$LANGUAGE" ] && [ "$PATCH_VERSION" -gt 1 ]; then
PREVIOUS_TAG="${PREVIOUS_TAG}-$(get_tag_language)"
fi
elif [ $MINOR_VERSION -ne 0 ]; then
PREVIOUS_TAG="selenium-$MAJOR_VERSION.$(($MINOR_VERSION - 1)).0"
else
echo "Cannot determine the previous tag from $VERSION"
exit 1
fi
}
get_tag_language() {
case $LANGUAGE in
py) echo "python" ;;
rb) echo "ruby" ;;
*) echo "$LANGUAGE" ;;
esac
}
prepend_git_log_to_file() {
local FILE="$1"
local DIR="${FILE%/*}"
local TEMP_FILE="$(mktemp)"
git --no-pager log "${PREVIOUS_TAG}...HEAD" --pretty=format:"* %B %n %an http://github.com/seleniumhq/selenium/commit/%H" --reverse -- "$DIR/" > "$TEMP_FILE"
echo -e "\n\n" >> "$TEMP_FILE"
cat "$FILE" >> "$TEMP_FILE"
mv "$TEMP_FILE" "$FILE"
}
update_language_changelogs() {
calculate_previous_tag
for changelog in "${CHANGELOGS[@]}"; do
lang=$(echo "$changelog" | cut -d/ -f1)
if [[ "$LANGUAGE" == "$lang" || "$LANGUAGE" == "all" ]]; then
prepend_git_log_to_file "$changelog"
fi
done
}
print_generic_changes() {
git --no-pager log "${PREVIOUS_TAG}...HEAD" --pretty=format:"* %B %n %an http://github.com/seleniumhq/selenium/commit/%H" --reverse -- . ':!rb/' ':!py/' ':!javascript/' ':!dotnet/' ':!java/' ':!rust/' >> changelog_updates.md
}
CHANGELOGS=(
"dotnet/CHANGELOG"
"java/CHANGELOG"
"javascript/node/selenium-webdriver/CHANGES.md"
"py/CHANGES"
"rb/CHANGES"
"rust/CHANGELOG.md"
)
update_language_changelogs
print_generic_changes