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}"
|