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:
edwinQQQ
2025-10-09 16:19:14 +08:00
commit a35a711be6
5582 changed files with 408913 additions and 0 deletions

View 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 ""