This repository has been archived on 2026-03-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AIMisc/code-quality-system/deploy.bat
T
2026-01-30 00:42:33 +08:00

287 lines
8.3 KiB
Batchfile

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo.
echo ========================================
echo 代码质量保障系统 - 一键部署脚本
echo ========================================
echo.
REM 检测 Python 是否安装
python --version >nul 2>&1
if errorlevel 1 (
echo ❌ 错误: 未检测到 Python,请先安装 Python 3.7+
pause
exit /b 1
)
echo ✅ Python 已安装
echo.
REM 获取脚本所在目录
set "SCRIPT_DIR=%~dp0"
cd /d "%SCRIPT_DIR%"
REM 显示部署选项
echo 请选择部署模式:
echo.
echo [1] 全局部署 (推荐)
echo - 部署到用户目录 (~/.claude/)
echo - 所有项目自动启用
echo - 需要管理员权限
echo.
echo [2] 项目部署
echo - 部署到当前项目的 .claude/ 目录
echo - 仅当前项目启用
echo - 不需要管理员权限
echo.
echo [3] 卸载
echo - 从系统中移除已部署的组件
echo.
echo [Q] 退出
echo.
set /p choice="请输入选择 (1/2/3/Q): "
if /i "%choice%"=="1" goto global_deploy
if /i "%choice%"=="2" goto project_deploy
if /i "%choice%"=="3" goto uninstall
if /i "%choice%"=="Q" goto end
if /i "%choice%"=="q" goto end
echo ❌ 无效的选择
pause
exit /b 1
:global_deploy
echo.
echo ========================================
echo 全局部署模式
echo ========================================
echo.
REM 检测 Claude Code 配置目录
set "CLAUDE_DIR=%USERPROFILE%\.claude"
if not exist "%CLAUDE_DIR%" (
echo ⚠️ Claude Code 配置目录不存在,正在创建...
mkdir "%CLAUDE_DIR%"
)
REM 部署 Hooks
echo 📦 正在部署 Hooks...
set "HOOKS_DIR=%CLAUDE_DIR%\hooks"
if not exist "%HOOKS_DIR%" mkdir "%HOOKS_DIR%"
copy /Y "%SCRIPT_DIR%hooks\*.py" "%HOOKS_DIR%\" >nul
if errorlevel 1 (
echo ❌ Hooks 部署失败
pause
exit /b 1
)
echo ✅ Hooks 部署成功
REM 部署 Skills
echo 📦 正在部署 Skills...
set "SKILLS_DIR=%CLAUDE_DIR%\custom-skills\code-quality"
if not exist "%SKILLS_DIR%" mkdir "%SKILLS_DIR%"
copy /Y "%SCRIPT_DIR%custom-skills\code-quality\*" "%SKILLS_DIR%\" >nul
if errorlevel 1 (
echo ❌ Skills 部署失败
pause
exit /b 1
)
echo ✅ Skills 部署成功
REM 部署配置
echo 📦 正在部署配置文件...
copy /Y "%SCRIPT_DIR%config\code-quality-config.json" "%CLAUDE_DIR%\" >nul
echo ✅ 配置文件部署成功
REM 复制声音文件(如果存在)
if exist "%SCRIPT_DIR%sounds\*.wav" (
echo 📦 正在部署声音文件...
set "SOUNDS_DIR=%CLAUDE_DIR%\sounds"
if not exist "%SOUNDS_DIR%" mkdir "%SOUNDS_DIR%"
copy /Y "%SCRIPT_DIR%sounds\*.wav" "%SOUNDS_DIR%\" >nul
echo ✅ 声音文件部署成功
) else (
echo ⚠️ 未找到声音文件,将使用系统提示音
)
REM 安装 Python 依赖
echo 📦 正在安装 Python 依赖...
pip install -q plyer pygame
if errorlevel 1 (
echo ⚠️ 部分依赖安装失败,通知功能可能不可用
) else (
echo ✅ 依赖安装成功
)
REM 配置 settings.json
echo 📦 正在配置 Claude Code 设置...
set "SETTINGS_FILE=%CLAUDE_DIR%\settings.json"
REM 创建或更新 settings.json
if exist "%SETTINGS_FILE%" (
echo 检测到现有配置文件,正在更新...
python -c "import json; data=json.load(open('%SETTINGS_FILE%', encoding='utf-8')); data.setdefault('hooks', {}).setdefault('TaskEnd', []).append({'type': 'command', 'command': 'python %USERPROFILE%\.claude\hooks/auto-complete-check.py'}); json.dump(data, open('%SETTINGS_FILE%', 'w', encoding='utf-8'), ensure_ascii=False, indent=2)" 2>nul
) else (
echo 创建新的配置文件...
echo {> "%SETTINGS_FILE%"
echo "hooks": {>> "%SETTINGS_FILE%"
echo "TaskEnd": [>> "%SETTINGS_FILE%"
echo {>> "%SETTINGS_FILE%"
echo "type": "command",>> "%SETTINGS_FILE%"
echo "command": "python %%USERPROFILE%%\\.claude\\hooks/auto-complete-check.py">> "%SETTINGS_FILE%"
echo }>> "%SETTINGS_FILE%"
echo ]>> "%SETTINGS_FILE%"
echo }>> "%SETTINGS_FILE%"
echo }>> "%SETTINGS_FILE%"
)
echo ✅ 配置文件更新成功
echo.
echo ========================================
echo ✅ 全局部署完成!
echo ========================================
echo.
echo 部署位置:
echo - Hooks: %HOOKS_DIR%
echo - Skills: %SKILLS_DIR%
echo - 配置: %CLAUDE_DIR%
echo.
echo 使用方法:
echo 1. 重启 Claude Code
echo 2. 系统将自动检查代码质量
echo 3. 使用 /code-quality 命令手动检查
echo.
echo 注意事项:
echo - 首次使用建议运行测试: python "%HOOKS_DIR%\notification-sender.py" test
echo - 配置文件位置: %CLAUDE_DIR%\code-quality-config.json
echo.
pause
exit /b 0
:project_deploy
echo.
echo ========================================
echo 项目部署模式
echo ========================================
echo.
REM 检查是否在 Git 仓库中
git rev-parse --is-inside-work-tree >nul 2>&1
if errorlevel 1 (
echo ⚠️ 当前目录不是 Git 仓库,某些功能可能不可用
)
REM 部署到项目 .claude 目录
set "PROJECT_CLAUDE_DIR=.claude"
echo 📦 正在部署到项目目录...
if not exist "%PROJECT_CLAUDE_DIR%" mkdir "%PROJECT_CLAUDE_DIR%"
REM 复制 Hooks
if not exist "%PROJECT_CLAUDE_DIR%\hooks" mkdir "%PROJECT_CLAUDE_DIR%\hooks"
copy /Y "%SCRIPT_DIR%hooks\*.py" "%PROJECT_CLAUDE_DIR%\hooks\" >nul
REM 复制 Skills
if not exist "%PROJECT_CLAUDE_DIR%\custom-skills\code-quality" mkdir "%PROJECT_CLAUDE_DIR%\custom-skills\code-quality"
copy /Y "%SCRIPT_DIR%custom-skills\code-quality\*" "%PROJECT_CLAUDE_DIR%\custom-skills\code-quality\" >nul
REM 复制配置
copy /Y "%SCRIPT_DIR%config\code-quality-config.json" "%PROJECT_CLAUDE_DIR%\" >nul
REM 复制声音文件
if exist "%SCRIPT_DIR%sounds\*.wav" (
if not exist "%PROJECT_CLAUDE_DIR%\sounds" mkdir "%PROJECT_CLAUDE_DIR%\sounds"
copy /Y "%SCRIPT_DIR%sounds\*.wav" "%PROJECT_CLAUDE_DIR%\sounds\" >nul
)
echo ✅ 项目部署成功
echo.
echo ========================================
echo ✅ 项目部署完成!
echo ========================================
echo.
echo 部署位置: %CD%\%PROJECT_CLAUDE_DIR%
echo.
echo 使用方法:
echo 1. 在项目中打开 Claude Code
echo 2. 系统将自动检查代码质量
echo 3. 使用 /code-quality 命令手动检查
echo.
pause
exit /b 0
:uninstall
echo.
echo ========================================
echo 卸载模式
echo ========================================
echo.
echo 请选择要卸载的组件:
echo.
echo [1] 全局部署
echo [2] 项目部署
echo [B] 返回
echo.
set /p uninstall_choice="请输入选择 (1/2/B): "
if /i "%uninstall_choice%"=="1" (
echo 正在卸载全局部署...
set "CLAUDE_DIR=%USERPROFILE%\.claude"
REM 删除 Hooks
if exist "%CLAUDE_DIR%\hooks\auto-complete-check.py" del "%CLAUDE_DIR%\hooks\auto-complete-check.py"
if exist "%CLAUDE_DIR%\hooks\requirements-tracker.py" del "%CLAUDE_DIR%\hooks\requirements-tracker.py"
if exist "%CLAUDE_DIR%\hooks\code-analyzer.py" del "%CLAUDE_DIR%\hooks\code-analyzer.py"
if exist "%CLAUDE_DIR%\hooks\notification-sender.py" del "%CLAUDE_DIR%\hooks\notification-sender.py"
REM 删除 Skills
if exist "%CLAUDE_DIR%\custom-skills\code-quality" rmdir /s /q "%CLAUDE_DIR%\custom-skills\code-quality"
REM 删除配置
if exist "%CLAUDE_DIR%\code-quality-config.json" del "%CLAUDE_DIR%\code-quality-config.json"
REM 更新 settings.json(移除 hook 配置)
set "SETTINGS_FILE=%CLAUDE_DIR%\settings.json"
if exist "%SETTINGS_FILE%" (
echo 正在更新配置文件...
REM 这里需要 Python 来正确处理 JSON
python -c "import json; data=json.load(open('%SETTINGS_FILE%', encoding='utf-8')); hooks=data.get('hooks', {}).get('TaskEnd', []); data['hooks']['TaskEnd']=[h for h in hooks if 'auto-complete-check' not in str(h)]; json.dump(data, open('%SETTINGS_FILE%', 'w', encoding='utf-8'), ensure_ascii=False, indent=2)" 2>nul
)
echo ✅ 全局部署已卸载
echo 注意: Python 依赖 (plyer, pygame) 未卸载,如需请手动运行: pip uninstall plyer pygame
) else if /i "%uninstall_choice%"=="2" (
echo 正在卸载项目部署...
if exist ".claude" (
rmdir /s /q ".claude"
echo ✅ 项目部署已卸载
) else (
echo ⚠️ 未找到项目部署
)
) else if /i "%uninstall_choice%"=="B" (
goto end
) else (
echo ❌ 无效的选择
)
echo.
pause
exit /b 0
:end
echo 退出部署脚本
exit /b 0