| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- @echo off
- chcp 65001 >nul
- setlocal enabledelayedexpansion
- :: 切换到脚本所在目录(项目根目录)
- cd /d "%~dp0"
- echo.
- echo +--------------------------------------------+
- echo ^| 版本号设置工具 ^|
- echo ^| Version Bump Tool ^|
- echo +--------------------------------------------+
- echo.
- :: 获取当前版本号(从 package.json 读取)
- for /f "tokens=2 delims=:, " %%a in ('findstr /c:"\"version\"" package.json') do (
- set "current_version=%%~a"
- goto :got_version
- )
- :got_version
- echo 当前版本: %current_version%
- echo.
- echo 支持的输入格式:
- echo - 具体版本号: 1.0.0, 2.1.3
- echo - patch: 补丁版本 +1 (如 0.0.6 -^> 0.0.7)
- echo - minor: 次版本 +1 (如 0.0.6 -^> 0.1.0)
- echo - major: 主版本 +1 (如 0.0.6 -^> 1.0.0)
- echo.
- :input_loop
- set "version_input="
- set /p "version_input=请输入新版本号 (q 退出): "
- :: 检查是否退出
- if /i "%version_input%"=="q" goto exit_script
- if /i "%version_input%"=="quit" goto exit_script
- if /i "%version_input%"=="exit" goto exit_script
- :: 检查是否为空
- if "%version_input%"=="" (
- echo [错误] 版本号不能为空,请重新输入
- echo.
- goto input_loop
- )
- :: 检查是否为 patch/minor/major
- if /i "%version_input%"=="patch" goto validate_version
- if /i "%version_input%"=="minor" goto validate_version
- if /i "%version_input%"=="major" goto validate_version
- :: 验证版本号格式 (x.y.z)
- echo %version_input%| findstr /r "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$" >nul
- if errorlevel 1 (
- echo [错误] 无效的版本号格式,请输入 x.y.z 格式或 patch/minor/major
- echo.
- goto input_loop
- )
- :validate_version
- :: 调用 bump-version.mjs --dry-run 获取计算后的版本号
- for /f "delims=" %%i in ('node scripts/bump-version.mjs %version_input% --dry-run 2^>nul') do set "new_version=%%i"
- if "%new_version%"=="" (
- echo [错误] 无法计算新版本号,请检查输入
- echo.
- goto input_loop
- )
- echo.
- echo +--------------------------------------------+
- echo ^| 版本变更预览 ^|
- echo +--------------------------------------------+
- echo ^| 当前版本: %current_version%
- echo ^| 新版本: %new_version%
- echo +--------------------------------------------+
- echo.
- :confirm_loop
- set "confirm="
- set /p "confirm=确认更新版本号? (y/n): "
- if /i "%confirm%"=="y" goto do_update
- if /i "%confirm%"=="yes" goto do_update
- if /i "%confirm%"=="n" goto cancel_update
- if /i "%confirm%"=="no" goto cancel_update
- echo [提示] 请输入 y 或 n
- goto confirm_loop
- :cancel_update
- echo.
- echo 已取消,请重新输入版本号
- echo.
- goto input_loop
- :do_update
- echo.
- echo 正在更新版本号...
- echo.
- node scripts/bump-version.mjs %version_input%
- if errorlevel 1 (
- echo.
- echo [错误] 版本号更新失败
- pause
- exit /b 1
- )
- :: 更新当前版本号变量
- set "current_version=%new_version%"
- echo.
- echo ============================================
- echo 版本号已成功更新到 %new_version%
- echo ============================================
- echo.
- :after_update_loop
- set "after_choice="
- set /p "after_choice=按 Enter 继续修改,输入 q 退出: "
- if "%after_choice%"=="" goto input_loop
- if /i "%after_choice%"=="q" goto exit_script
- if /i "%after_choice%"=="quit" goto exit_script
- if /i "%after_choice%"=="exit" goto exit_script
- goto input_loop
- :exit_script
- echo.
- echo 再见!
- exit /b 0
|