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

# Uso:
#   ./git-cp.sh "mensagem do commit"
#   ./git-cp.sh "mensagem" main
#   ./git-cp.sh "mensagem" main origin
#
# Se a mensagem tiver aspas ou emojis, use aspas simples por fora:
#   ./git-cp.sh 'Botão ＋ Disponibilizar na barra do card'

MSG="${1:-}"
BRANCH="${2:-main}"
REMOTE="${3:-origin}"

if [[ -z "$MSG" ]]; then
  echo "Uso: $0 \"mensagem do commit\" [branch] [remote]" >&2
  echo "     Ou: $0 'mensagem com \"aspas\" e ＋'" >&2
  exit 1
fi

# precisa estar em um repo git
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || {
  echo "Erro: não é um repositório git." >&2
  exit 1
}

# garante branch correta
git checkout "$BRANCH" >/dev/null 2>&1 || git checkout -b "$BRANCH"

# adiciona tudo (inclui novos arquivos)
git add -A

# se não tiver mudanças, não comita
if git diff --cached --quiet; then
  echo "Sem mudanças para commit."
  exit 0
fi

git commit -m "$MSG"

# push criando upstream se necessário
git push -u "$REMOTE" "$BRANCH"
echo "OK: commit + push em $REMOTE/$BRANCH"