#!/bin/bash
# -*- coding: utf-8 -*-
# Git 自动上传脚本（Linux/Mac）

set -e  # 遇到错误立即退出

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== Git 自动上传脚本 ===${NC}"

# 检查是否在 git 仓库中
if [ ! -d .git ]; then
    echo -e "${RED}错误: 当前目录不是 git 仓库${NC}"
    exit 1
fi

# 获取当前分支
CURRENT_BRANCH=$(git branch --show-current)
echo -e "${YELLOW}当前分支: ${CURRENT_BRANCH}${NC}"

# 检查是否有未提交的更改
if [ -z "$(git status --porcelain)" ]; then
    echo -e "${YELLOW}没有需要提交的更改${NC}"
    read -p "是否继续检查远程更新? (y/n) " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        echo -e "${GREEN}拉取远程更新...${NC}"
        git pull origin "$CURRENT_BRANCH" || echo -e "${YELLOW}拉取失败，可能没有远程分支${NC}"
    fi
    exit 0
fi

# 显示当前状态
echo -e "${YELLOW}当前更改状态:${NC}"
git status --short

# 询问是否继续
read -p "是否继续提交并推送? (y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo -e "${YELLOW}操作已取消${NC}"
    exit 0
fi

# 获取提交信息
if [ -z "$1" ]; then
    echo -e "${YELLOW}请输入提交信息（或直接按回车使用默认信息）:${NC}"
    read -r COMMIT_MSG
    if [ -z "$COMMIT_MSG" ]; then
        COMMIT_MSG="chore: update code $(date '+%Y-%m-%d %H:%M:%S')"
    fi
else
    COMMIT_MSG="$1"
fi

# 添加所有更改
echo -e "${GREEN}添加文件到暂存区...${NC}"
git add -A

# 提交更改
echo -e "${GREEN}提交更改...${NC}"
if git commit -m "$COMMIT_MSG"; then
    echo -e "${GREEN}提交成功!${NC}"
else
    echo -e "${RED}提交失败${NC}"
    exit 1
fi

# 推送到远程
echo -e "${GREEN}推送到远程仓库...${NC}"
if git push origin "$CURRENT_BRANCH"; then
    echo -e "${GREEN}✓ 推送成功!${NC}"
else
    echo -e "${RED}推送失败，可能需要设置远程仓库或认证${NC}"
    echo -e "${YELLOW}提示: 可以手动执行 'git push origin $CURRENT_BRANCH'${NC}"
    exit 1
fi

echo -e "${GREEN}=== 完成 ===${NC}"

