#!/bin/bash # Script de sincronização automática com GitHub # Uso: ./sync.sh [mensagem do commit] echo "========================================" echo " TrackSteel - Sync com GitHub" echo "========================================" echo # Cores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Função para exibir erro e sair error_exit() { echo -e "${RED}Erro: $1${NC}" exit 1 } # Função para exibir sucesso success_msg() { echo -e "${GREEN}✓ $1${NC}" } # Função para exibir aviso warning_msg() { echo -e "${YELLOW}⚠ $1${NC}" } # Verifica se estamos em um repositório Git if ! git rev-parse --git-dir > /dev/null 2>&1; then error_exit "Este diretório não é um repositório Git" fi # Adiciona todos os arquivos echo "Adicionando arquivos..." git add . if [ $? -ne 0 ]; then error_exit "Falha ao adicionar arquivos" fi # Define mensagem do commit if [ -z "$1" ]; then commit_msg="Update: $(date '+%Y-%m-%d %H:%M:%S')" else commit_msg="$1" fi echo "Fazendo commit com mensagem: $commit_msg" git commit -m "$commit_msg" if [ $? -ne 0 ]; then warning_msg "Nenhuma mudança para commitar ou erro no commit" echo echo "Status atual:" git status exit 0 fi # Push para o repositório echo "Enviando para GitHub..." git push origin main if [ $? -ne 0 ]; then warning_msg "Erro ao fazer push. Tentando pull primeiro..." git pull origin main --rebase if [ $? -ne 0 ]; then error_exit "Erro no pull. Resolva conflitos manualmente." fi echo "Tentando push novamente..." git push origin main if [ $? -ne 0 ]; then error_exit "Erro no push após pull" fi fi echo success_msg "Sincronização concluída com sucesso!" success_msg "Mudanças enviadas para: https://github.com/Reifonas/WebsiteTS.git" echo