refactor(版本計算流程): 將 main 拆成參數檢查、取得舊版本、計算版本號三階段並抽出 nextVersion
This commit is contained in:
+22
-6
@@ -115,6 +115,26 @@ function nextBetaNumber(releases, version) {
|
||||
return max + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 依「已知的最新穩定版」計算本次要使用的版本號;isBeta 為 true 時產生 beta 版本號。
|
||||
*
|
||||
* 此函式不負責「取得舊版本」(latest 由呼叫端傳入),僅負責「計算版本號」這一步,
|
||||
* 讓取得舊版本與計算新版本兩個階段可各自獨立。
|
||||
*
|
||||
* @param {string} latest - 已知的最新穩定版版本號字串(如 "1.2.3";查無時為 "0.0.0")。
|
||||
* @param {Array<{tag_name?: string}>} releases - release 物件清單;beta 流水號需據此比對。
|
||||
* @param {boolean} isBeta - 是否產生 beta 版本號;true 時回傳形如 "<next>-beta.<n>"。
|
||||
* @returns {string} 本次要使用的版本號字串;非 beta 為下一個發行版(如 "1.3.0"),
|
||||
* beta 為 "<next>-beta.<n>"(如 "1.3.0-beta.1")。
|
||||
*/
|
||||
function nextVersion(latest, releases, isBeta) {
|
||||
const next = nextReleaseVersion(latest);
|
||||
|
||||
return isBeta
|
||||
? `${next}-beta.${nextBetaNumber(releases, next)}`
|
||||
: next;
|
||||
}
|
||||
|
||||
/**
|
||||
* 計算最新穩定版與下一個版本號;isBeta 為 true 時產生 beta 版本號。
|
||||
* @param {Array<{tag_name?: string}>} releases - release 物件清單。
|
||||
@@ -125,13 +145,8 @@ function nextBetaNumber(releases, version) {
|
||||
*/
|
||||
function calculateVersion(releases, isBeta) {
|
||||
const latest = latestStableVersion(releases);
|
||||
const next = nextReleaseVersion(latest);
|
||||
|
||||
const version = isBeta
|
||||
? `${next}-beta.${nextBetaNumber(releases, next)}`
|
||||
: next;
|
||||
|
||||
return { latest, version };
|
||||
return { latest, version: nextVersion(latest, releases, isBeta) };
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
@@ -140,5 +155,6 @@ module.exports = {
|
||||
latestStableVersion,
|
||||
nextReleaseVersion,
|
||||
nextBetaNumber,
|
||||
nextVersion,
|
||||
calculateVersion,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user