72 lines
1.8 KiB
Bash
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
|
|
|