#!/bin/bash # 批量重构脚本 - 使用配置文件进行批量重构 # Author: Leocoder # Version: 1.0 # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' WHITE='\033[1;37m' NC='\033[0m' # No Color print_success() { echo -e "${GREEN}✓ $1${NC}" } print_error() { echo -e "${RED}✗ $1${NC}" } print_info() { echo -e "${PURPLE}ℹ $1${NC}" } print_warning() { echo -e "${YELLOW}⚠ $1${NC}" } # 检查配置文件 check_config_file() { local config_file="$1" if [ ! -f "$config_file" ]; then print_error "配置文件不存在: $config_file" echo "" echo "请先创建配置文件:" echo "1. 复制 refactor-config.example 为 refactor-config.conf" echo "2. 编辑 refactor-config.conf 设置正确的值" echo "3. 运行: ./batch-refactor.sh refactor-config.conf" exit 1 fi } # 加载配置文件 load_config() { local config_file="$1" print_info "加载配置文件: $config_file" # 读取配置文件 source "$config_file" # 验证必需的配置项 local required_vars=("PROJECT_DIR" "OLD_GROUP_ID" "NEW_GROUP_ID" "OLD_ARTIFACT_ID" "NEW_ARTIFACT_ID" "OLD_MODULE_PREFIX" "NEW_MODULE_PREFIX") for var in "${required_vars[@]}"; do if [ -z "${!var}" ]; then print_error "配置项 $var 未设置" exit 1 fi done print_success "配置加载成功" } # 显示配置信息 show_config() { echo "" echo -e "${WHITE}批量重构配置:${NC}" echo -e "${CYAN}项目目录:${NC} $PROJECT_DIR" echo -e "${CYAN}旧 GroupId:${NC} $OLD_GROUP_ID" echo -e "${CYAN}新 GroupId:${NC} $NEW_GROUP_ID" echo -e "${CYAN}旧 ArtifactId:${NC} $OLD_ARTIFACT_ID" echo -e "${CYAN}新 ArtifactId:${NC} $NEW_ARTIFACT_ID" echo -e "${CYAN}旧模块前缀:${NC} $OLD_MODULE_PREFIX" echo -e "${CYAN}新模块前缀:${NC} $NEW_MODULE_PREFIX" if [ -n "$OLD_DATABASE_NAME" ]; then echo -e "${CYAN}旧数据库名:${NC} $OLD_DATABASE_NAME" echo -e "${CYAN}新数据库名:${NC} $NEW_DATABASE_NAME" fi echo "" } # 执行重构 execute_refactor() { local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" local refactor_script="$script_dir/project-refactor.sh" if [ ! -f "$refactor_script" ]; then print_error "重构脚本不存在: $refactor_script" exit 1 fi # 创建临时输入文件 local temp_input=$(mktemp) # 生成自动化输入 cat > "$temp_input" << EOF $PROJECT_DIR $OLD_GROUP_ID $OLD_ARTIFACT_ID $OLD_MODULE_PREFIX $NEW_GROUP_ID $NEW_ARTIFACT_ID $NEW_MODULE_PREFIX $OLD_DATABASE_NAME $NEW_DATABASE_NAME y EOF if [ "$CREATE_BACKUP" = "true" ]; then echo "y" >> "$temp_input" else echo "n" >> "$temp_input" fi # 执行重构脚本 print_info "开始执行重构..." "$refactor_script" < "$temp_input" # 清理临时文件 rm -f "$temp_input" if [ $? -eq 0 ]; then print_success "批量重构完成!" else print_error "重构过程中出现错误" exit 1 fi } # 主函数 main() { echo -e "${CYAN}" echo "╔══════════════════════════════════════════════════════════════════════════════╗" echo "║ 批量重构脚本 ║" echo "║ Batch Refactoring Tool ║" echo "╚══════════════════════════════════════════════════════════════════════════════╝" echo -e "${NC}" local config_file="$1" if [ -z "$config_file" ]; then config_file="refactor-config.conf" print_info "使用默认配置文件: $config_file" fi check_config_file "$config_file" load_config "$config_file" show_config if [ "$AUTO_CONFIRM" != "true" ]; then echo -e "${YELLOW}警告: 此操作将修改项目中的所有相关文件!${NC}" read -p "是否继续? (y/N): " confirm if [[ ! "$confirm" =~ ^[Yy]$ ]]; then print_info "操作已取消" exit 0 fi fi execute_refactor } # 使用说明 usage() { echo "使用方法:" echo " $0 [配置文件]" echo "" echo "示例:" echo " $0 # 使用默认配置文件 refactor-config.conf" echo " $0 my-project-config.conf # 使用指定配置文件" echo "" echo "配置文件格式请参考 refactor-config.example" } # 参数检查 if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then usage exit 0 fi # 执行主函数 main "$@"