189 lines
5.0 KiB
Bash
Executable File
189 lines
5.0 KiB
Bash
Executable File
#!/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 "$@" |