64 lines
2.4 KiB
Bash
64 lines
2.4 KiB
Bash
#!/bin/bash
|
||
|
||
# Проверяем, что мы в ветке staging
|
||
CURRENT_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null)
|
||
|
||
if [ "$CURRENT_BRANCH" != "staging" ]; then
|
||
echo "Not in staging branch, skipping changelog update"
|
||
exit 0
|
||
fi
|
||
|
||
# Получаем последний commit message
|
||
COMMIT_MESSAGE=$(git log -1 --pretty=%B 2>/dev/null | head -1)
|
||
|
||
if [ -z "$COMMIT_MESSAGE" ]; then
|
||
echo "No commit message found"
|
||
exit 0
|
||
fi
|
||
|
||
# Получаем текущую дату
|
||
CURRENT_DATE=$(date +%Y-%m-%d)
|
||
CHANGELOG_FILE="CHANGELOG.md"
|
||
|
||
# Определяем новую версию
|
||
if [ -f "$CHANGELOG_FILE" ]; then
|
||
# Ищем последнюю версию в формате X.X.X (без v и ##)
|
||
LAST_VERSION=$(grep -E '^[0-9]+\.[0-9]+\.[0-9]+' "$CHANGELOG_FILE" | head -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+')
|
||
|
||
if [ -n "$LAST_VERSION" ]; then
|
||
# Увеличиваем patch версию (третью цифру)
|
||
IFS='.' read -r MAJOR MINOR PATCH <<< "$LAST_VERSION"
|
||
NEW_VERSION="$MAJOR.$MINOR.$((PATCH + 1))"
|
||
echo "Found last version: $LAST_VERSION, new version: $NEW_VERSION"
|
||
else
|
||
# Если не нашли версию, начинаем с 1.0.1
|
||
NEW_VERSION="1.0.1"
|
||
echo "No version found, starting from: $NEW_VERSION"
|
||
fi
|
||
else
|
||
NEW_VERSION="1.0.0"
|
||
echo "CHANGELOG.md not found, starting from: $NEW_VERSION"
|
||
fi
|
||
|
||
# Создаем временный файл
|
||
TEMP_FILE=$(mktemp)
|
||
|
||
# Добавляем новую запись БЕЗ ##, БЕЗ v, БЕЗ переноса строки
|
||
echo "${NEW_VERSION} _ ${CURRENT_DATE} _ ${COMMIT_MESSAGE}" > "$TEMP_FILE"
|
||
|
||
# Добавляем существующее содержимое БЕЗ пустых строк между записями
|
||
if [ -f "$CHANGELOG_FILE" ]; then
|
||
# Убираем пустые строки между записями и добавляем содержимое
|
||
awk 'NF' "$CHANGELOG_FILE" >> "$TEMP_FILE"
|
||
else
|
||
# Создаем базовую структуру для нового файла
|
||
echo "# Changelog" >> "$TEMP_FILE"
|
||
echo "" >> "$TEMP_FILE"
|
||
echo "All notable changes to this project will be documented in this file." >> "$TEMP_FILE"
|
||
echo "" >> "$TEMP_FILE"
|
||
fi
|
||
|
||
# Заменяем оригинальный файл
|
||
mv "$TEMP_FILE" "$CHANGELOG_FILE"
|
||
|
||
echo "CHANGELOG.md updated to version ${NEW_VERSION}" |