#!/bin/bash
# install_shell_enhancements.sh - 部署Bash增强工具

# 设置颜色代码
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
RESET='\033[0m'

# 欢迎信息
echo -e "${BLUE}====================================${RESET}"
echo -e "${GREEN}    Bash Shell增强工具自动安装      ${RESET}"
echo -e "${BLUE}====================================${RESET}"
echo

# 检查必要的工具
download_tool=""
if command -v curl &> /dev/null; then
    download_tool="curl"
elif command -v wget &> /dev/null; then
    download_tool="wget"
else
    echo -e "${RED}错误: 需要安装 curl 或 wget 来下载文件${RESET}"
    exit 1
fi

# 文件URL和目标路径
BASHRC_URL="https://www.mgrsc.top/http/linux/debian-misc-script/bash/bashrc"
ENHANCEMENTS_URL="https://www.mgrsc.top/http/linux/debian-misc-script/bash/bash_shell_enhancements"
BASHRC_FILE="${HOME}/.bashrc"
ENHANCEMENTS_FILE="${HOME}/.bash_shell_enhancements"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BASHRC_BACKUP="${HOME}/.bashrc.bak.${TIMESTAMP}"

# 检查并备份现有的.bashrc文件
check_and_backup_bashrc() {
    if [ -f "$BASHRC_FILE" ]; then
        echo -e "${YELLOW}检测到已存在的 .bashrc 文件${RESET}"
        
        # 询问是否覆盖
        read -p "是否覆盖现有的 .bashrc 文件? [y/N]: " OVERWRITE
        if [[ ! "$OVERWRITE" =~ ^[Yy]$ ]]; then
            echo -e "${YELLOW}跳过 .bashrc 安装${RESET}"
            return 1
        fi
        
        # 备份现有文件
        echo -e "${BLUE}备份现有 .bashrc 到 ${BASHRC_BACKUP}${RESET}"
        if ! cp "$BASHRC_FILE" "$BASHRC_BACKUP"; then
            echo -e "${RED}备份失败! 操作已取消${RESET}"
            return 1
        fi
    fi
    return 0
}

# 下载文件
download_file() {
    local url=$1
    local destination=$2
    
    echo -e "${BLUE}正在下载 $(basename "$destination")...${RESET}"
    
    if [ "$download_tool" == "curl" ]; then
        if ! curl -s -o "$destination" "$url"; then
            echo -e "${RED}下载 $(basename "$destination") 失败!${RESET}"
            return 1
        fi
    else
        if ! wget -q -O "$destination" "$url"; then
            echo -e "${RED}下载 $(basename "$destination") 失败!${RESET}"
            return 1
        fi
    fi
    
    # 确保文件可读
    chmod 644 "$destination"
    return 0
}

# 安装增强工具
install_enhancements() {
    # 询问是否安装
    if [ -f "$ENHANCEMENTS_FILE" ]; then
        echo -e "${YELLOW}检测到已存在的 .bash_shell_enhancements 文件${RESET}"
        read -p "是否覆盖现有的增强工具文件? [y/N]: " OVERWRITE
        if [[ ! "$OVERWRITE" =~ ^[Yy]$ ]]; then
            echo -e "${YELLOW}跳过增强工具安装${RESET}"
            return 0
        fi
        
        # 备份现有文件
        cp "$ENHANCEMENTS_FILE" "${ENHANCEMENTS_FILE}.bak.${TIMESTAMP}"
    fi
    
    # 下载文件
    download_file "$ENHANCEMENTS_URL" "$ENHANCEMENTS_FILE"
    return $?
}

# 安装.bashrc
install_bashrc() {
    # 检查并备份
    check_and_backup_bashrc
    if [ $? -ne 0 ]; then
        return 0
    fi
    
    # 下载文件
    download_file "$BASHRC_URL" "$BASHRC_FILE"
    return $?
}

# 打印功能列表 (修复版)
print_features() {
    echo -e "\n${GREEN}✅ Bash Shell增强工具安装完成!${RESET}\n"
    
    # 使用echo -e而不是cat来确保ANSI颜色代码正确解释
    echo -e "${BLUE}==== 主要功能 ====${RESET}"
    echo
    echo -e "${YELLOW}导航命令:${RESET}"
    echo "• .. / .2 / .3 - 回到上级或多级目录"
    echo "• mark add <名称> - 将当前目录添加为书签"
    echo "• mark go <名称> - 快速跳转到书签目录"
    echo "• mark ls - 列出所有书签"
    echo
    echo -e "${YELLOW}文件操作:${RESET}"
    echo "• file find <模式> - 按名称查找文件"
    echo "• file text <关键词> - 搜索文件内容"
    echo "• file extract <文件> - 智能解压各种格式"
    echo "• file newest/largest - 查找最新/最大文件"
    echo
    echo -e "${YELLOW}系统信息:${RESET}"
    echo "• sys info - 系统概览信息"
    echo "• sys disk/mem/cpu/net/ps/all - 查看各类系统信息"
    echo
    echo -e "${YELLOW}网络工具:${RESET}"
    echo "• gip [4|6|all|json] - 查看公网IP(带缓存)"
    echo "• ports [tcp|udp|listen|all] - 查看网络端口"
    echo
    echo -e "${YELLOW}Git增强:${RESET}"
    echo "• g s/a/c/p/l - Git常用命令简化"
    echo "• g log - 美化的Git日志"
    echo "• g sync - 同步当前分支"
    echo "• g undo - 撤销最后一次提交"
    echo
    echo -e "${BLUE}==== 使用方法 ====${RESET}"
    echo -e "• 输入 ${GREEN}help${RESET} 可随时查看所有可用命令"
    echo -e "• 大多数命令支持 ${GREEN}<命令> help${RESET} 查看详细用法"
    echo "• Tab补全已启用，输入命令部分后按Tab可查看选项"
    echo
    echo -e "${YELLOW}提示:${RESET} 你可以在 ~/.bashrc.local 中添加自定义配置，它会被自动加载"
    echo
    echo -e "${BLUE}立即应用新配置:${RESET} source ~/.bashrc"
}

# 主安装流程
main() {
    # 安装增强工具
    install_enhancements
    local enhancements_result=$?
    
    # 安装.bashrc
    install_bashrc
    local bashrc_result=$?
    
    # 检查安装结果
    if [ $enhancements_result -eq 0 ] && [ $bashrc_result -eq 0 ]; then
        # 打印功能列表
        print_features
        echo -e "\n${GREEN}要应用新配置，请执行: ${YELLOW}source ~/.bashrc${RESET}\n"
    else
        echo -e "\n${RED}安装过程中遇到了问题，请检查错误消息${RESET}"
        echo -e "如果备份文件存在，你可以通过以下命令恢复:"
        [ -f "$BASHRC_BACKUP" ] && echo -e "  cp \"$BASHRC_BACKUP\" \"$BASHRC_FILE\""
        return 1
    fi
}

# 执行安装
main

