Add date normalization script for release pipeline #40
@@ -31,15 +31,24 @@ set -euo pipefail
|
||||
TODAY="${1:-$(date +%Y-%m-%d)}"
|
||||
VERSION="${2:-unknown}"
|
||||
|
|
||||
|
||||
# Validate date format (YYYY-MM-DD)
|
||||
if ! [[ "${TODAY}" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
|
||||
echo "ERROR: Invalid date format '${TODAY}'. Expected YYYY-MM-DD format."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Date normalization script running..."
|
||||
echo "TODAY: ${TODAY}"
|
||||
echo "VERSION: ${VERSION}"
|
||||
|
||||
# Escape special regex characters in VERSION for safe use in grep and sed
|
||||
VERSION_ESCAPED=$(printf '%s\n' "${VERSION}" | sed 's/[]\/$*.^[]/\\&/g')
|
||||
|
||||
# Update CHANGELOG.md - replace the date on the version heading line
|
||||
if [ -f "CHANGELOG.md" ]; then
|
||||
# Match lines like "## [03.05.00] 2026-01-04" and update the date
|
||||
if grep -q "^## \[${VERSION}\] " CHANGELOG.md; then
|
||||
sed -i "s/^## \[${VERSION}\] [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/## [${VERSION}] ${TODAY}/" CHANGELOG.md
|
||||
if grep -q "^## \[${VERSION_ESCAPED}\] " CHANGELOG.md; then
|
||||
sed -i "s/^## \[${VERSION_ESCAPED}\] [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/## [${VERSION_ESCAPED}] ${TODAY}/" CHANGELOG.md
|
||||
echo "✓ Updated CHANGELOG.md version [${VERSION}] date to ${TODAY}"
|
||||
else
|
||||
echo "⚠ Warning: CHANGELOG.md does not contain version [${VERSION}] heading"
|
||||
|
||||
Reference in New Issue
Block a user
The VERSION parameter defaults to "unknown" but lacks validation when explicitly provided. If an empty string or whitespace-only value is passed as the second argument, it could lead to incorrect sed patterns that match unintended lines. Consider adding validation to ensure VERSION is not empty and contains expected characters, similar to the date validation on line 35.