#!/bin/bash

set -e

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}🚀 Iniciando processo de release...${NC}"

# Verifica se estamos no branch main
CURRENT_BRANCH=$(git branch --show-current)
if [ "$CURRENT_BRANCH" != "main" ]; then
    echo -e "${RED}❌ Erro: Você precisa estar no branch 'main' para fazer release${NC}"
    exit 1
fi

# Verifica se há mudanças não commitadas
if ! git diff-index --quiet HEAD --; then
    echo -e "${RED}❌ Erro: Há mudanças não commitadas. Faça commit ou stash antes de fazer release.${NC}"
    exit 1
fi

# Lê a versão atual do Cargo.toml
CURRENT_VERSION=$(grep '^version = ' Cargo.toml | sed 's/version = "\(.*\)"/\1/')
echo -e "${YELLOW}📦 Versão atual: ${CURRENT_VERSION}${NC}"

# Incrementa o último número da versão (0.1.2 -> 0.1.3)
IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION"
MAJOR="${VERSION_PARTS[0]}"
MINOR="${VERSION_PARTS[1]}"
PATCH="${VERSION_PARTS[2]}"

NEW_PATCH=$((PATCH + 1))
NEW_VERSION="${MAJOR}.${MINOR}.${NEW_PATCH}"

echo -e "${YELLOW}📦 Nova versão: ${NEW_VERSION}${NC}"

# Atualiza o Cargo.toml
if [[ "$OSTYPE" == "darwin"* ]]; then
    # macOS
    sed -i '' "s/^version = \".*\"/version = \"${NEW_VERSION}\"/" Cargo.toml
else
    # Linux
    sed -i "s/^version = \".*\"/version = \"${NEW_VERSION}\"/" Cargo.toml
fi

echo -e "${GREEN}✅ Cargo.toml atualizado${NC}"

# Verifica se o Cargo.lock precisa ser atualizado
cargo check --quiet 2>/dev/null || true

# Commit
echo -e "${YELLOW}📝 Fazendo commit...${NC}"
git add Cargo.toml Cargo.lock
git commit -m "chore: bump version to ${NEW_VERSION}"

# Tag
echo -e "${YELLOW}🏷️  Criando tag v${NEW_VERSION}...${NC}"
git tag -a "v${NEW_VERSION}" -m "Release v${NEW_VERSION}"

# Push
echo -e "${YELLOW}📤 Fazendo push...${NC}"
git push origin main
git push origin "v${NEW_VERSION}"

echo -e "${GREEN}✅ Release ${NEW_VERSION} criada com sucesso!${NC}"
echo -e "${GREEN}🔄 O CI/CD irá publicar automaticamente no crates.io${NC}"

