docs-onboarding/resources/scripts/release-notes.bash

91 lines
2.1 KiB
Bash
Raw Normal View History

2024-05-12 13:34:47 +02:00
#!/bin/bash
# Check for the "final" flag in command line arguments
finalFlag=false
for arg in "$@"; do
if [[ "$arg" == "final" ]]; then
finalFlag=true
break
fi
done
2024-05-12 13:34:47 +02:00
# Get tags sorted by creation date
tags=$(git tag --sort=creatordate)
# Convert tags into an array
if [[ $(echo "$BASH_VERSION" | cut -d. -f1) -ge 4 ]]; then
readarray -t tagArray <<< "$tags"
else
IFS=$'\n' read -d '' -ra tagArray <<< "$tags"
fi
2024-05-12 13:34:47 +02:00
# Determine the number of tags
2024-05-12 13:34:47 +02:00
len=${#tagArray[@]}
# Find the last tag or the last "final" tag based on the flag
if $finalFlag; then
for (( i=len-1; i>=0; i-- )); do
if [[ "${tagArray[i]}" == *"final"* ]]; then
latestTag="${tagArray[i]}"
break
fi
done
if [ -z "$latestTag" ]; then
echo "No 'final' tag found."
exit 1
fi
else
if [ "$len" -gt 0 ]; then
latestTag="${tagArray[$len-1]}"
else
echo "No tags found."
exit 1
fi
2024-05-12 13:34:47 +02:00
fi
# Print release notes
echo "## Release Notes from $latestTag to this release"
echo ""
# Fetch commit logs from the latest tag to HEAD and categorize them
newfeatures=$(git log "$latestTag"..HEAD --pretty=format:"%s" | grep 'new:' | sed 's/new:/-/g' | sort | uniq)
updatedfeatures=$(git log "$latestTag"..HEAD --pretty=format:"%s" | grep 'update:' | sed 's/update:/-/g' | sort | uniq)
fixedfeatures=$(git log "$latestTag"..HEAD --pretty=format:"%s" | grep 'fix:' | sed 's/fix:/-/g' | sort | uniq)
deletedfeatures=$(git log "$latestTag"..HEAD --pretty=format:"%s" | grep 'delete:' | sed 's/delete:/-/g' | sort | uniq)
# Output formatted commit lists
echo "New Features:"
echo ""
if [ -z "$newfeatures" ]; then
echo "- No new features."
else
echo "$newfeatures"
fi
echo ""
echo "Updated Features:"
echo ""
if [ -z "$updatedfeatures" ]; then
echo "- No updated features."
else
echo "$updatedfeatures"
fi
echo ""
echo "Fixed Features:"
echo ""
if [ -z "$fixedfeatures" ]; then
echo "- No fixed features."
else
echo "$fixedfeatures"
fi
echo ""
echo "Deleted Features:"
echo ""
if [ -z "$deletedfeatures" ]; then
echo "- No deleted features."
else
echo "$deletedfeatures"
fi