#!/usr/bin/env bash
set -euo pipefail

LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$LAST_TAG" ]; then
  echo "Nenhuma tag encontrada. Crie a tag inicial uma unica vez antes do primeiro release automatico:"
  echo "  git tag v$(node -p "require('./package.json').version") && git push origin --tags"
  exit 1
fi
echo "Ultima tag: ${LAST_TAG}"

COMMITS=$(git log "${LAST_TAG}..HEAD" --pretty=format:"%s%n%b")

BUMP="patch"
if echo "$COMMITS" | grep -qE "BREAKING CHANGE|^[a-z]+(\(.+\))?!:"; then
  BUMP="major"
elif echo "$COMMITS" | grep -qE "^feat(\(.+\))?:"; then
  BUMP="minor"
fi
echo "Tipo de bump detectado: ${BUMP}"

npm version "$BUMP" --no-git-tag-version
NEW_VERSION=$(node -p "require('./package.json').version")
echo "Nova versao: ${NEW_VERSION}"

echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc
npm publish --access public
rm -f .npmrc

git add package.json package-lock.json
git commit -m "chore(release): v${NEW_VERSION} [skip ci]"
git tag "v${NEW_VERSION}"
git push origin HEAD:main
git push origin "v${NEW_VERSION}"
