新增命令行参数:-test,用于生成测试版本的产品版本信息,如pid.bid.0.0

This commit is contained in:
Jeff
2026-05-19 10:46:54 +08:00
parent 52221ac116
commit 9eaec59bfc
4 changed files with 51 additions and 9 deletions

View File

@@ -353,9 +353,9 @@ void PrintFullUsageExamples()
_T("用法:\n") _T("用法:\n")
_T(" gitver (显示帮助后进入当前分支创建 tag 流程)\n") _T(" gitver (显示帮助后进入当前分支创建 tag 流程)\n")
_T(" gitver rewrite [PEType可选]\n") _T(" gitver rewrite [PEType可选]\n")
_T(" gitver setver [pid] [repoPath可选]\n") _T(" gitver setver [pid] [repoPath可选] [-test可选]\n")
_T(" gitver nuitkabuild [pid] [mainPy] [repoPath可选] [nuitka额外参数可选]\n") _T(" gitver nuitkabuild [pid] [mainPy] [repoPath可选] [-test可选] [nuitka额外参数可选]\n")
_T(" gitver nuitkapydbuild [pid] [modulePy] [repoPath可选] [nuitka额外参数可选]\n") _T(" gitver nuitkapydbuild [pid] [modulePy] [repoPath可选] [-test可选] [nuitka额外参数可选]\n")
_T("\n示例:\n") _T("\n示例:\n")
_T(" gitver\n") _T(" gitver\n")
_T(" gitver rewrite\n") _T(" gitver rewrite\n")
@@ -364,14 +364,18 @@ void PrintFullUsageExamples()
_T(" gitver setver 5 E:\\Code\\OTH\\gitver\n") _T(" gitver setver 5 E:\\Code\\OTH\\gitver\n")
_T(" gitver setver 5\n") _T(" gitver setver 5\n")
_T(" gitver setver 5 -f\n") _T(" gitver setver 5 -f\n")
_T(" gitver setver 5 -test\n")
_T(" gitver nuitkabuild 5 main.py\n") _T(" gitver nuitkabuild 5 main.py\n")
_T(" gitver nuitkabuild 5 main.py -f\n") _T(" gitver nuitkabuild 5 main.py -f\n")
_T(" gitver nuitkabuild 5 main.py -test\n")
_T(" gitver nuitkabuild 5 src\\app.py E:\\Code\\MyPyProj --standalone --output-dir=dist\n") _T(" gitver nuitkabuild 5 src\\app.py E:\\Code\\MyPyProj --standalone --output-dir=dist\n")
_T(" gitver nuitkabuild 5 main.py --standalone -f\n") _T(" gitver nuitkabuild 5 main.py --standalone -f\n")
_T(" gitver nuitkapydbuild 5 module.py\n") _T(" gitver nuitkapydbuild 5 module.py\n")
_T(" gitver nuitkapydbuild 5 module.py -f\n") _T(" gitver nuitkapydbuild 5 module.py -f\n")
_T(" gitver nuitkapydbuild 5 module.py -test\n")
_T(" gitver nuitkapydbuild 5 src\\core.py E:\\Code\\MyPyProj --output-dir=dist\n") _T(" gitver nuitkapydbuild 5 src\\core.py E:\\Code\\MyPyProj --output-dir=dist\n")
_T("\n说明: nuitkabuild/nuitkapydbuild 中,-f 在额外参数开始前表示 gitver 选项;进入额外参数后会透传给 Nuitka。\n") _T("\n说明: nuitkabuild/nuitkapydbuild 中,-f/-test 在额外参数开始前表示 gitver 选项;进入额外参数后会透传给 Nuitka。\n")
_T("-test: 将产品版本号的 major 和 minor 都置为 0用于测试版本构建\n")
_T("无参数时会读取当前分支最近三次 tag并提示选择 major 加 1 或 minor 加 1然后创建新 tag。\n"); _T("无参数时会读取当前分支最近三次 tag并提示选择 major 加 1 或 minor 加 1然后创建新 tag。\n");
_tprintf(_T("%s"), lpUsageText); _tprintf(_T("%s"), lpUsageText);
@@ -575,7 +579,8 @@ int HandleSetVerCommand(int argc, TCHAR* argv[])
LPCTSTR lpRepoPath = NULL; LPCTSTR lpRepoPath = NULL;
BOOL bUseDefaultTagWhenMissing = FALSE; BOOL bUseDefaultTagWhenMissing = FALSE;
int nRepoArgRet = ParseSetVerOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing); BOOL bTestMode = FALSE;
int nRepoArgRet = ParseSetVerOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing, bTestMode);
if (nRepoArgRet != 0) if (nRepoArgRet != 0)
{ {
return nRepoArgRet; return nRepoArgRet;
@@ -598,6 +603,17 @@ int HandleSetVerCommand(int argc, TCHAR* argv[])
return nVersionRet; return nVersionRet;
} }
if (bTestMode)
{
int nDot1 = strProductVersion.Find(_T('.'));
int nDot2 = (nDot1 >= 0) ? strProductVersion.Find(_T('.'), nDot1 + 1) : -1;
if (nDot2 > nDot1)
{
strProductVersion = strProductVersion.Left(nDot2 + 1) + _T("0.0");
}
_tprintf(_T("[test] 已将 major/minor 置零: ProductVersion=%s\n"), strProductVersion.GetString());
}
_tprintf(_T("ProductVersion=%s\n"), strProductVersion.GetString()); _tprintf(_T("ProductVersion=%s\n"), strProductVersion.GetString());
_tprintf(_T("FileVersion=%s\n"), strFileVersion.GetString()); _tprintf(_T("FileVersion=%s\n"), strFileVersion.GetString());

View File

@@ -10,10 +10,11 @@ void PrintInvalidRepoPathError(LPCTSTR lpRepoPath)
_tprintf(_T("错误: 无效的仓库路径 %s\n"), lpRepoPath == NULL ? _T("<null>") : lpRepoPath); _tprintf(_T("错误: 无效的仓库路径 %s\n"), lpRepoPath == NULL ? _T("<null>") : lpRepoPath);
} }
int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing) int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, BOOL& bTestMode)
{ {
lpRepoPath = NULL; lpRepoPath = NULL;
bUseDefaultTagWhenMissing = FALSE; bUseDefaultTagWhenMissing = FALSE;
bTestMode = FALSE;
for (int i = 3; i < argc; ++i) for (int i = 3; i < argc; ++i)
{ {
@@ -24,6 +25,12 @@ int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseD
continue; continue;
} }
if (strArg.CompareNoCase(_T("-test")) == 0)
{
bTestMode = TRUE;
continue;
}
if (lpRepoPath == NULL) if (lpRepoPath == NULL)
{ {
if (!PathIsDirectory(argv[i])) if (!PathIsDirectory(argv[i]))

View File

@@ -1,5 +1,5 @@
#pragma once #pragma once
void PrintInvalidRepoPathError(LPCTSTR lpRepoPath); void PrintInvalidRepoPathError(LPCTSTR lpRepoPath);
int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing); int ParseSetVerOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, BOOL& bTestMode);
int ParseRewriteOptions(int argc, TCHAR* argv[], int& nPEType, BOOL& bForceRewrite); int ParseRewriteOptions(int argc, TCHAR* argv[], int& nPEType, BOOL& bForceRewrite);

View File

@@ -13,11 +13,12 @@ void PrintCommandUsageAndExamples(LPCTSTR lpCommand, LPCTSTR lpRequiredArgs, LPC
const UINT DEFAULT_MAJOR_WHEN_NO_TAG_FOR_NUITKA = 1; const UINT DEFAULT_MAJOR_WHEN_NO_TAG_FOR_NUITKA = 1;
const UINT DEFAULT_MINOR_WHEN_NO_TAG_FOR_NUITKA = 0; const UINT DEFAULT_MINOR_WHEN_NO_TAG_FOR_NUITKA = 0;
static int ParseNuitkaOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, CString& strExtraArgs) static int ParseNuitkaOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL& bUseDefaultTagWhenMissing, CString& strExtraArgs, BOOL& bTestMode)
{ {
lpRepoPath = NULL; lpRepoPath = NULL;
bUseDefaultTagWhenMissing = FALSE; bUseDefaultTagWhenMissing = FALSE;
strExtraArgs.Empty(); strExtraArgs.Empty();
bTestMode = FALSE;
BOOL bExtraArgsStarted = FALSE; BOOL bExtraArgsStarted = FALSE;
for (int i = 4; i < argc; ++i) for (int i = 4; i < argc; ++i)
@@ -33,6 +34,12 @@ static int ParseNuitkaOptions(int argc, TCHAR* argv[], LPCTSTR& lpRepoPath, BOOL
continue; continue;
} }
if (!bExtraArgsStarted && strArg.CompareNoCase(_T("-test")) == 0)
{
bTestMode = TRUE;
continue;
}
if (!bExtraArgsStarted && lpRepoPath == NULL && !bOptionStyleArg && PathIsDirectory(argv[i])) if (!bExtraArgsStarted && lpRepoPath == NULL && !bOptionStyleArg && PathIsDirectory(argv[i]))
{ {
lpRepoPath = argv[i]; lpRepoPath = argv[i];
@@ -110,7 +117,8 @@ static int HandleNuitkaBuildCommandCore(
LPCTSTR lpRepoPath = NULL; LPCTSTR lpRepoPath = NULL;
BOOL bUseDefaultTagWhenMissing = FALSE; BOOL bUseDefaultTagWhenMissing = FALSE;
CString strExtraArgs; CString strExtraArgs;
int nRepoArgRet = ParseNuitkaOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing, strExtraArgs); BOOL bTestMode = FALSE;
int nRepoArgRet = ParseNuitkaOptions(argc, argv, lpRepoPath, bUseDefaultTagWhenMissing, strExtraArgs, bTestMode);
if (nRepoArgRet != 0) if (nRepoArgRet != 0)
{ {
return nRepoArgRet; return nRepoArgRet;
@@ -133,6 +141,17 @@ static int HandleNuitkaBuildCommandCore(
return nVersionRet; return nVersionRet;
} }
if (bTestMode)
{
int nDot1 = strProductVersion.Find(_T('.'));
int nDot2 = (nDot1 >= 0) ? strProductVersion.Find(_T('.'), nDot1 + 1) : -1;
if (nDot2 > nDot1)
{
strProductVersion = strProductVersion.Left(nDot2 + 1) + _T("0.0");
}
_tprintf(_T("[test] 测试版本号: ProductVersion=%s\n"), strProductVersion.GetString());
}
CString strNuitkaCmd; CString strNuitkaCmd;
if (bBuildModule) if (bBuildModule)
{ {