#!/bin/bash

# ===========================================
# Git Sync Script
# Sync code antara server production & lokal
# ===========================================

# Warna
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

echo -e "${CYAN}==============================${NC}"
echo -e "${CYAN}  Git Sync Tool${NC}"
echo -e "${CYAN}==============================${NC}"
echo ""

# Input branch
read -p "$(echo -e ${YELLOW}Branch:${NC} ) " BRANCH

if [ -z "$BRANCH" ]; then
    echo -e "${RED}Branch tidak boleh kosong!${NC}"
    exit 1
fi

# Cek apakah branch ada
if ! git rev-parse --verify "$BRANCH" &>/dev/null; then
    echo -e "${YELLOW}Branch '$BRANCH' belum ada di lokal.${NC}"
    read -p "$(echo -e ${YELLOW}Buat branch baru? [y/n]:${NC} ) " CREATE
    if [ "$CREATE" = "y" ] || [ "$CREATE" = "Y" ]; then
        git checkout -b "$BRANCH"
    else
        echo -e "${RED}Dibatalkan.${NC}"
        exit 1
    fi
else
    git checkout "$BRANCH"
fi

echo ""
echo -e "${GREEN}[1/4]${NC} Pull dari remote..."
git pull origin "$BRANCH" 2>/dev/null || echo -e "${YELLOW}  ⚠ Belum ada remote branch, skip pull.${NC}"

echo ""
echo -e "${GREEN}[2/4]${NC} Add semua perubahan..."
git add -A

echo ""
echo -e "${GREEN}[3/4]${NC} Commit..."
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
HOSTNAME=$(hostname)
COMMIT_MSG="sync: $HOSTNAME @ $TIMESTAMP"

# Cek apakah ada perubahan untuk di-commit
if git diff --cached --quiet; then
    echo -e "${YELLOW}  ⚠ Tidak ada perubahan untuk di-commit.${NC}"
else
    git commit -m "$COMMIT_MSG"
    echo -e "${GREEN}  ✓ Commit: ${COMMIT_MSG}${NC}"
fi

echo ""
echo -e "${GREEN}[4/4]${NC} Push ke remote..."
git push origin "$BRANCH"

echo ""
echo -e "${GREEN}==============================${NC}"
echo -e "${GREEN}  ✓ Sync selesai!${NC}"
echo -e "${GREEN}  Branch: ${BRANCH}${NC}"
echo -e "${GREEN}==============================${NC}"
