actions-template/docker-runner/common/check_crlf.sh

116 lines
2.6 KiB
Bash

#!/bin/bash
echo "=========================================="
echo " 文件格式快速修复工具"
echo "=========================================="
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 要检查的文件列表
SCRIPT_FILES=(
"entrypoint.sh"
"setup.sh"
"register.sh"
"manage.sh"
)
FIXED_COUNT=0
TOTAL_FILES=0
echo "🔍 检查并修复以下文件:"
printf '%s\n' "${SCRIPT_FILES[@]}" | sed 's/^/ - /'
echo ""
echo "----------------------------------------"
echo ""
for file in "${SCRIPT_FILES[@]}"; do
TOTAL_FILES=$((TOTAL_FILES + 1))
# 检查文件是否存在
if [ ! -f "$file" ]; then
echo -e "${RED}$file - 文件不存在,跳过${NC}"
continue
fi
NEEDS_FIX=false
# 检查换行符
HAS_CRLF=false
if file "$file" | grep -qi "CRLF\|with CR"; then
HAS_CRLF=true
NEEDS_FIX=true
fi
# 检查权限
NEEDS_CHMOD=false
if [ ! -x "$file" ]; then
NEEDS_CHMOD=true
NEEDS_FIX=true
fi
# 显示状态
echo -n "📄 $file ... "
if [ "$NEEDS_FIX" = false ]; then
echo -e "${GREEN}OK${NC}"
continue
fi
# 修复换行符
if [ "$HAS_CRLF" = true ]; then
sed -i 's/\r$//' "$file" 2>/dev/null || sed -i '' 's/\r$//' "$file" 2>/dev/null
echo -n -e "${YELLOW}[换行符已修复]${NC} "
fi
# 修复权限
if [ "$NEEDS_CHMOD" = true ]; then
chmod +x "$file"
echo -n -e "${YELLOW}[权限已修复]${NC} "
fi
echo -e "${GREEN}${NC}"
FIXED_COUNT=$((FIXED_COUNT + 1))
done
echo ""
echo "=========================================="
echo "修复完成"
echo "=========================================="
echo "检查文件: $TOTAL_FILES"
echo "修复文件: $FIXED_COUNT"
echo ""
if [ $FIXED_COUNT -gt 0 ]; then
echo -e "${GREEN}✓ 所有问题已自动修复!${NC}"
echo ""
echo "建议执行以下命令重启容器:"
echo " docker-compose down"
echo " docker-compose build --no-cache"
echo " docker-compose up -d"
echo ""
# 询问是否立即重启
read -p "是否立即重启容器? (y/N): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "正在重启容器..."
docker-compose down
docker-compose build --no-cache
docker-compose up -d
sleep 3
echo ""
echo "容器状态:"
docker-compose ps
echo ""
echo "查看日志:"
docker logs gitea-runner --tail=30
fi
else
echo -e "${GREEN}✓ 所有文件格式正确,无需修复!${NC}"
fi