code-review-agent/bump_version.sh
2025-10-13 14:46:28 +03:00

72 lines
1.8 KiB
Bash

#!/bin/bash
# Скрипт для автоповышения версии backend
# Вызывается из pre-commit hook или вручную
VERSION_FILE="backend/VERSION"
# Проверка существования файла
if [ ! -f "$VERSION_FILE" ]; then
echo "0.1.0" > "$VERSION_FILE"
echo "✅ Создан файл версии: 0.1.0"
exit 0
fi
# Чтение текущей версии
CURRENT_VERSION=$(cat "$VERSION_FILE")
# Разбор версии (MAJOR.MINOR.PATCH)
IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION"
MAJOR="${VERSION_PARTS[0]}"
MINOR="${VERSION_PARTS[1]}"
PATCH="${VERSION_PARTS[2]}"
# Проверка типа изменения по коммиту
if [ $# -eq 1 ]; then
VERSION_TYPE="$1"
else
# Автоопределение по последнему коммиту
LAST_COMMIT=$(git log -1 --pretty=%B 2>/dev/null || echo "")
if echo "$LAST_COMMIT" | grep -qiE "^(feat|feature):"; then
VERSION_TYPE="minor"
elif echo "$LAST_COMMIT" | grep -qiE "^(fix|bugfix):"; then
VERSION_TYPE="patch"
elif echo "$LAST_COMMIT" | grep -qiE "^(BREAKING|major):"; then
VERSION_TYPE="major"
else
VERSION_TYPE="patch"
fi
fi
# Повышение версии
case "$VERSION_TYPE" in
major)
MAJOR=$((MAJOR + 1))
MINOR=0
PATCH=0
;;
minor)
MINOR=$((MINOR + 1))
PATCH=0
;;
patch|*)
PATCH=$((PATCH + 1))
;;
esac
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
# Запись новой версии
echo "$NEW_VERSION" > "$VERSION_FILE"
echo "📦 Версия обновлена: $CURRENT_VERSION$NEW_VERSION"
# Добавление файла в git если мы в hook
if [ -n "$GIT_INDEX_FILE" ]; then
git add "$VERSION_FILE"
fi
exit 0