chore: Initial clean commit
- Removed YuMi/Library/ (138 MB, not tracked) - Removed YuMi/Resources/ (23 MB, not tracked) - Removed old version assets (566 files, not tracked) - Excluded Pods/, xcuserdata/ and other build artifacts - Clean repository optimized for company server deployment
This commit is contained in:
322
issues/scripts/1_rename_classes.sh
Executable file
322
issues/scripts/1_rename_classes.sh
Executable file
@@ -0,0 +1,322 @@
|
||||
#!/bin/bash
|
||||
# 类名批量替换脚本
|
||||
# 用法: ./1_rename_classes.sh
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN}白牌项目 - 类名批量替换工具${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
|
||||
# 项目根目录
|
||||
PROJECT_ROOT="/Users/edwinqqq/Local/Company Projects/peko-ios"
|
||||
YUMI_DIR="$PROJECT_ROOT/YuMi"
|
||||
|
||||
# 备份提醒
|
||||
echo -e "${YELLOW}⚠️ 重要:此脚本会修改大量文件!${NC}"
|
||||
echo -e "${YELLOW}请确保你已经:${NC}"
|
||||
echo -e "${YELLOW}1. 提交了所有未保存的更改${NC}"
|
||||
echo -e "${YELLOW}2. 创建了新的 Git 分支${NC}"
|
||||
echo -e "${YELLOW}3. 做好了回滚准备${NC}"
|
||||
echo ""
|
||||
read -p "确认继续?(y/N): " confirm
|
||||
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
||||
echo "已取消操作"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ==========================================
|
||||
# 第一步:定义新前缀
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 1] 请输入新的类名前缀${NC}"
|
||||
echo ""
|
||||
|
||||
read -p "YM 替换为 (例如: LK): " NEW_PREFIX_YM
|
||||
read -p "XP 替换为 (例如: SL): " NEW_PREFIX_XP
|
||||
read -p "PI 替换为 (例如: MT): " NEW_PREFIX_PI
|
||||
read -p "Moli 替换为 (例如: Nova): " NEW_PREFIX_MOLI
|
||||
read -p "MS 替换为 (例如: AS): " NEW_PREFIX_MS
|
||||
|
||||
# 验证输入
|
||||
if [[ -z "$NEW_PREFIX_YM" || -z "$NEW_PREFIX_XP" || -z "$NEW_PREFIX_PI" || -z "$NEW_PREFIX_MOLI" || -z "$NEW_PREFIX_MS" ]]; then
|
||||
echo -e "${RED}❌ 错误:所有前缀都必须输入${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}替换映射:${NC}"
|
||||
echo " YM → $NEW_PREFIX_YM"
|
||||
echo " XP → $NEW_PREFIX_XP"
|
||||
echo " PI → $NEW_PREFIX_PI"
|
||||
echo " Moli → $NEW_PREFIX_MOLI"
|
||||
echo " MS → $NEW_PREFIX_MS"
|
||||
echo ""
|
||||
read -p "确认以上映射正确?(y/N): " confirm_mapping
|
||||
if [[ "$confirm_mapping" != "y" && "$confirm_mapping" != "Y" ]]; then
|
||||
echo "已取消操作"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ==========================================
|
||||
# 第二步:创建临时白名单(不应该被替换的字符串)
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 2] 扫描可能误伤的字符串常量...${NC}"
|
||||
|
||||
# 创建临时目录
|
||||
TEMP_DIR="$PROJECT_ROOT/issues/temp_rename"
|
||||
mkdir -p "$TEMP_DIR"
|
||||
|
||||
# 查找所有包含旧前缀的字符串常量
|
||||
grep -rn "\".*YM.*\"" "$YUMI_DIR" --include="*.m" --include="*.h" > "$TEMP_DIR/string_constants_YM.txt" 2>/dev/null || true
|
||||
grep -rn "\".*XP.*\"" "$YUMI_DIR" --include="*.m" --include="*.h" > "$TEMP_DIR/string_constants_XP.txt" 2>/dev/null || true
|
||||
grep -rn "\".*Moli.*\"" "$YUMI_DIR" --include="*.m" --include="*.h" > "$TEMP_DIR/string_constants_Moli.txt" 2>/dev/null || true
|
||||
|
||||
echo -e "${YELLOW}找到的字符串常量已保存到:${NC}"
|
||||
echo " $TEMP_DIR/string_constants_*.txt"
|
||||
echo -e "${YELLOW}请检查这些文件,确保没有不应该被替换的内容${NC}"
|
||||
echo ""
|
||||
read -p "检查完成后按回车继续..."
|
||||
|
||||
# ==========================================
|
||||
# 第三步:替换文件内容
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 3] 开始替换文件内容...${NC}"
|
||||
|
||||
# 函数:替换文件内容
|
||||
replace_in_files() {
|
||||
local old_prefix=$1
|
||||
local new_prefix=$2
|
||||
local file_count=0
|
||||
|
||||
echo " 替换 $old_prefix → $new_prefix ..."
|
||||
|
||||
# 查找所有 .h 和 .m 文件
|
||||
while IFS= read -r file; do
|
||||
# 跳过 Pods 目录
|
||||
if [[ "$file" == *"/Pods/"* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# 执行替换(使用 Perl 的正则,更精确)
|
||||
# 只替换类名、方法名、属性名,不替换字符串字面量
|
||||
perl -i -pe "s/\b${old_prefix}([A-Z][a-zA-Z0-9]*)/${new_prefix}\1/g" "$file"
|
||||
((file_count++))
|
||||
|
||||
# 显示进度
|
||||
if ((file_count % 50 == 0)); then
|
||||
echo " 已处理 $file_count 个文件..."
|
||||
fi
|
||||
done < <(find "$YUMI_DIR" -type f \( -name "*.h" -o -name "*.m" \))
|
||||
|
||||
echo -e "${GREEN} ✓ 完成!共处理 $file_count 个文件${NC}"
|
||||
}
|
||||
|
||||
# 依次替换各个前缀
|
||||
replace_in_files "YM" "$NEW_PREFIX_YM"
|
||||
replace_in_files "XP" "$NEW_PREFIX_XP"
|
||||
replace_in_files "PI" "$NEW_PREFIX_PI"
|
||||
replace_in_files "Moli" "$NEW_PREFIX_MOLI"
|
||||
replace_in_files "MS" "$NEW_PREFIX_MS"
|
||||
|
||||
# 特殊处理:YUMI(全大写)
|
||||
echo " 替换 YUMI → ${NEW_PREFIX_YM}I ..."
|
||||
find "$YUMI_DIR" -type f \( -name "*.h" -o -name "*.m" \) -exec sed -i '' "s/YUMI/${NEW_PREFIX_YM}I/g" {} +
|
||||
|
||||
# ==========================================
|
||||
# 第四步:重命名文件
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 4] 重命名文件...${NC}"
|
||||
|
||||
rename_files() {
|
||||
local old_prefix=$1
|
||||
local new_prefix=$2
|
||||
local file_count=0
|
||||
|
||||
echo " 重命名 ${old_prefix}* → ${new_prefix}* ..."
|
||||
|
||||
# 查找所有以旧前缀开头的文件
|
||||
find "$YUMI_DIR" -type f \( -name "${old_prefix}*.h" -o -name "${old_prefix}*.m" \) | while read file; do
|
||||
# 跳过 Pods 目录
|
||||
if [[ "$file" == *"/Pods/"* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
dir=$(dirname "$file")
|
||||
filename=$(basename "$file")
|
||||
newname=$(echo "$filename" | sed "s/^${old_prefix}/${new_prefix}/")
|
||||
|
||||
if [[ "$filename" != "$newname" ]]; then
|
||||
mv "$file" "$dir/$newname"
|
||||
((file_count++))
|
||||
fi
|
||||
done
|
||||
|
||||
echo -e "${GREEN} ✓ 完成!共重命名 $file_count 个文件${NC}"
|
||||
}
|
||||
|
||||
rename_files "YM" "$NEW_PREFIX_YM"
|
||||
rename_files "XP" "$NEW_PREFIX_XP"
|
||||
rename_files "PI" "$NEW_PREFIX_PI"
|
||||
rename_files "Moli" "$NEW_PREFIX_MOLI"
|
||||
rename_files "MS" "$NEW_PREFIX_MS"
|
||||
|
||||
# ==========================================
|
||||
# 第五步:重命名文件夹
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 5] 重命名模块文件夹...${NC}"
|
||||
|
||||
cd "$YUMI_DIR/Modules"
|
||||
|
||||
# 重命名模块文件夹
|
||||
if [ -d "YMLogin" ]; then
|
||||
mv "YMLogin" "${NEW_PREFIX_YM}Login"
|
||||
echo " ✓ YMLogin → ${NEW_PREFIX_YM}Login"
|
||||
fi
|
||||
|
||||
if [ -d "YMMessage" ]; then
|
||||
mv "YMMessage" "${NEW_PREFIX_YM}Message"
|
||||
echo " ✓ YMMessage → ${NEW_PREFIX_YM}Message"
|
||||
fi
|
||||
|
||||
if [ -d "YMMine" ]; then
|
||||
mv "YMMine" "${NEW_PREFIX_YM}Mine"
|
||||
echo " ✓ YMMine → ${NEW_PREFIX_YM}Mine"
|
||||
fi
|
||||
|
||||
if [ -d "YMMonents" ]; then
|
||||
mv "YMMonents" "${NEW_PREFIX_YM}Monents"
|
||||
echo " ✓ YMMonents → ${NEW_PREFIX_YM}Monents"
|
||||
fi
|
||||
|
||||
if [ -d "YMNewHome" ]; then
|
||||
mv "YMNewHome" "${NEW_PREFIX_YM}NewHome"
|
||||
echo " ✓ YMNewHome → ${NEW_PREFIX_YM}NewHome"
|
||||
fi
|
||||
|
||||
if [ -d "YMRoom" ]; then
|
||||
mv "YMRoom" "${NEW_PREFIX_YM}Room"
|
||||
echo " ✓ YMRoom → ${NEW_PREFIX_YM}Room"
|
||||
fi
|
||||
|
||||
if [ -d "YMTabbar" ]; then
|
||||
mv "YMTabbar" "${NEW_PREFIX_YM}Tabbar"
|
||||
echo " ✓ YMTabbar → ${NEW_PREFIX_YM}Tabbar"
|
||||
fi
|
||||
|
||||
if [ -d "YMRTC" ]; then
|
||||
mv "YMRTC" "${NEW_PREFIX_YM}RTC"
|
||||
echo " ✓ YMRTC → ${NEW_PREFIX_YM}RTC"
|
||||
fi
|
||||
|
||||
if [ -d "YMWeb" ]; then
|
||||
mv "YMWeb" "${NEW_PREFIX_YM}Web"
|
||||
echo " ✓ YMWeb → ${NEW_PREFIX_YM}Web"
|
||||
fi
|
||||
|
||||
# ==========================================
|
||||
# 第六步:更新 Xcode 项目文件引用
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 6] 更新 Xcode 项目文件引用...${NC}"
|
||||
|
||||
XCODEPROJ="$PROJECT_ROOT/YuMi.xcodeproj/project.pbxproj"
|
||||
|
||||
if [ -f "$XCODEPROJ" ]; then
|
||||
# 备份原文件
|
||||
cp "$XCODEPROJ" "$XCODEPROJ.backup"
|
||||
|
||||
# 替换项目文件中的引用
|
||||
sed -i '' "s/YM/${NEW_PREFIX_YM}/g" "$XCODEPROJ"
|
||||
sed -i '' "s/XP/${NEW_PREFIX_XP}/g" "$XCODEPROJ"
|
||||
sed -i '' "s/PI/${NEW_PREFIX_PI}/g" "$XCODEPROJ"
|
||||
sed -i '' "s/Moli/${NEW_PREFIX_MOLI}/g" "$XCODEPROJ"
|
||||
sed -i '' "s/MS/${NEW_PREFIX_MS}/g" "$XCODEPROJ"
|
||||
sed -i '' "s/YUMI/${NEW_PREFIX_YM}I/g" "$XCODEPROJ"
|
||||
|
||||
echo -e "${GREEN} ✓ Xcode 项目文件已更新${NC}"
|
||||
else
|
||||
echo -e "${RED} ⚠️ 未找到 Xcode 项目文件${NC}"
|
||||
fi
|
||||
|
||||
# ==========================================
|
||||
# 第七步:生成替换报告
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}[Step 7] 生成替换报告...${NC}"
|
||||
|
||||
REPORT_FILE="$TEMP_DIR/rename_report.txt"
|
||||
|
||||
cat > "$REPORT_FILE" <<EOF
|
||||
========================================
|
||||
类名批量替换报告
|
||||
========================================
|
||||
执行时间: $(date)
|
||||
|
||||
替换映射:
|
||||
YM → $NEW_PREFIX_YM
|
||||
XP → $NEW_PREFIX_XP
|
||||
PI → $NEW_PREFIX_PI
|
||||
Moli → $NEW_PREFIX_MOLI
|
||||
MS → $NEW_PREFIX_MS
|
||||
|
||||
已重命名的模块文件夹:
|
||||
YMLogin → ${NEW_PREFIX_YM}Login
|
||||
YMMessage → ${NEW_PREFIX_YM}Message
|
||||
YMMine → ${NEW_PREFIX_YM}Mine
|
||||
YMMonents → ${NEW_PREFIX_YM}Monents
|
||||
YMNewHome → ${NEW_PREFIX_YM}NewHome
|
||||
YMRoom → ${NEW_PREFIX_YM}Room
|
||||
YMTabbar → ${NEW_PREFIX_YM}Tabbar
|
||||
YMRTC → ${NEW_PREFIX_YM}RTC
|
||||
YMWeb → ${NEW_PREFIX_YM}Web
|
||||
|
||||
注意事项:
|
||||
1. 请在 Xcode 中重新打开项目
|
||||
2. Clean Build Folder (Shift + Cmd + K)
|
||||
3. 尝试编译,查看是否有错误
|
||||
4. 检查 Podfile 是否需要更新
|
||||
5. 运行完整的功能测试
|
||||
|
||||
如果出现问题,可以通过 Git 回滚:
|
||||
git reset --hard HEAD
|
||||
git clean -fd
|
||||
|
||||
备份文件位置:
|
||||
$XCODEPROJ.backup
|
||||
========================================
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN} ✓ 报告已生成:$REPORT_FILE${NC}"
|
||||
cat "$REPORT_FILE"
|
||||
|
||||
# ==========================================
|
||||
# 完成
|
||||
# ==========================================
|
||||
echo ""
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN}✅ 类名批量替换完成!${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}下一步操作:${NC}"
|
||||
echo "1. 在 Xcode 中打开项目(可能需要关闭后重新打开)"
|
||||
echo "2. Product → Clean Build Folder"
|
||||
echo "3. 尝试编译项目,解决任何编译错误"
|
||||
echo "4. 运行 2_rename_assets.py 脚本替换图片资源"
|
||||
echo ""
|
||||
echo -e "${YELLOW}查看详细报告:${NC}"
|
||||
echo " cat $REPORT_FILE"
|
||||
echo ""
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user