#!/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