compliance/fix-line-endings.sh
2025-08-27 16:55:39 +08:00

102 lines
3.5 KiB
Bash

#!/bin/bash
# 修复脚本行结束符问题
# 将Windows格式的CRLF转换为Unix格式的LF
echo "=== 修复脚本行结束符工具 ==="
echo ""
# 检查是否有dos2unix命令
if command -v dos2unix &> /dev/null; then
echo "[信息] 使用dos2unix工具修复行结束符"
# 修复原始脚本
if [[ -f "create-compose-package-multiplatform.sh" ]]; then
echo "[信息] 修复 create-compose-package-multiplatform.sh"
dos2unix create-compose-package-multiplatform.sh
chmod +x create-compose-package-multiplatform.sh
fi
# 修复WSL版本脚本
if [[ -f "create-compose-package-wsl.sh" ]]; then
echo "[信息] 修复 create-compose-package-wsl.sh"
dos2unix create-compose-package-wsl.sh
chmod +x create-compose-package-wsl.sh
fi
elif command -v sed &> /dev/null; then
echo "[信息] 使用sed工具修复行结束符"
# 使用sed移除\r字符
if [[ -f "create-compose-package-multiplatform.sh" ]]; then
echo "[信息] 修复 create-compose-package-multiplatform.sh"
sed -i 's/\r$//' create-compose-package-multiplatform.sh
chmod +x create-compose-package-multiplatform.sh
fi
if [[ -f "create-compose-package-wsl.sh" ]]; then
echo "[信息] 修复 create-compose-package-wsl.sh"
sed -i 's/\r$//' create-compose-package-wsl.sh
chmod +x create-compose-package-wsl.sh
fi
elif command -v tr &> /dev/null; then
echo "[信息] 使用tr工具修复行结束符"
# 使用tr删除\r字符
if [[ -f "create-compose-package-multiplatform.sh" ]]; then
echo "[信息] 修复 create-compose-package-multiplatform.sh"
tr -d '\r' < create-compose-package-multiplatform.sh > temp_file && mv temp_file create-compose-package-multiplatform.sh
chmod +x create-compose-package-multiplatform.sh
fi
if [[ -f "create-compose-package-wsl.sh" ]]; then
echo "[信息] 修复 create-compose-package-wsl.sh"
tr -d '\r' < create-compose-package-wsl.sh > temp_file && mv temp_file create-compose-package-wsl.sh
chmod +x create-compose-package-wsl.sh
fi
else
echo "[警告] 未找到合适的工具来修复行结束符"
echo "[提示] 请安装 dos2unix 工具: sudo apt-get install dos2unix"
echo ""
echo "或者手动运行以下命令:"
echo "sed -i 's/\r$//' create-compose-package-multiplatform.sh"
echo "sed -i 's/\r$//' create-compose-package-wsl.sh"
echo "chmod +x *.sh"
exit 1
fi
echo ""
echo "[成功] 行结束符修复完成"
echo ""
echo "现在可以运行以下脚本:"
echo "- ./create-compose-package-multiplatform.sh (原始多平台版本)"
echo "- ./create-compose-package-wsl.sh (WSL优化版本)"
echo "- create-compose-package-windows.bat (Windows批处理版本)"
echo ""
# 验证脚本是否可执行
echo "=== 验证脚本 ==="
for script in create-compose-package-multiplatform.sh create-compose-package-wsl.sh; do
if [[ -f "$script" ]]; then
if [[ -x "$script" ]]; then
echo "[✓] $script 可执行"
else
echo "[✗] $script 不可执行"
chmod +x "$script"
echo "[修复] 已设置 $script 为可执行"
fi
# 检查是否还有\r字符
if grep -q $'\r' "$script" 2>/dev/null; then
echo "[警告] $script 仍包含Windows行结束符"
else
echo "[✓] $script 行结束符正常"
fi
fi
done
echo ""
echo "修复完成!"