feat(logger): 以階段前綴取代 section 區塊並新增 forStage 子記錄器

This commit is contained in:
Jeffery
2026-06-30 18:22:27 +08:00
parent 7de0900d5f
commit ead1afc79a
2 changed files with 54 additions and 39 deletions
+12 -12
View File
@@ -20,7 +20,7 @@ const { writeOutput } = require('./output');
* @param {Function} [deps.latestStableVersion] - 從 release 清單取得最新穩定版(舊版本)的函式。
* @param {Function} [deps.nextVersion] - 依舊版本計算本次版本號的函式。
* @param {Function} [deps.writeOutput] - 寫出 output 的函式。
* @param {{section:Function, info:Function, error:Function}} [deps.log] - log 記錄器。
* @param {{forStage:Function, info:Function, error:Function}} [deps.log] - log 記錄器;以 forStage(階段) 取得綁定階段的子記錄器後輸出
* @returns {Promise<string>} 計算出的版本號。
* @throws {Error} 當任一注入相依(loadConfigfetchReleaseslatestStableVersionnextVersionwriteOutput
* 拋出例外時,原樣向外傳播,由呼叫端決定如何結束。
@@ -38,29 +38,29 @@ async function main(deps = {}) {
} = deps;
// 1. 參數檢查:載入並驗證環境變數設定
log.section('參數檢查');
const checkLog = log.forStage('參數檢查');
const config = loadConfigFn();
log.info(`GITEA_SERVER_URL=${config.serverUrl}`);
log.info(`GITEA_REPOSITORY=${config.repository}`);
log.info(config.token ? 'GITEA_TOKEN=***' : 'GITEA_TOKEN=未提供');
log.info(`IS_BETA=${config.isBeta}`);
checkLog.info(`GITEA_SERVER_URL=${config.serverUrl}`);
checkLog.info(`GITEA_REPOSITORY=${config.repository}`);
checkLog.info(config.token ? 'GITEA_TOKEN=***' : 'GITEA_TOKEN=未提供');
checkLog.info(`IS_BETA=${config.isBeta}`);
// 2. 取得舊版本:抓取 release 清單並解析出最新穩定版
log.section('取得舊版本');
const fetchLog = log.forStage('取得舊版本');
const releaseUrl = `${config.serverUrl}/api/v1/repos/${config.repository}/releases`;
log.info(`RELEASE_URL=${releaseUrl}`);
fetchLog.info(`RELEASE_URL=${releaseUrl}`);
const releases = await fetchReleasesFn(releaseUrl, { token: config.token, logger: log });
const releases = await fetchReleasesFn(releaseUrl, { token: config.token, logger: fetchLog });
const latest = latestStableVersionFn(releases);
log.info(`LATEST_VERSION=${latest}`);
fetchLog.info(`LATEST_VERSION=${latest}`);
// 3. 計算版本號:依舊版本算出本次版本號並寫出 output
log.section('計算版本號');
const calcLog = log.forStage('計算版本號');
const version = nextVersionFn(latest, releases, config.isBeta);
log.info(`NEW_VERSION=${version}`);
calcLog.info(`NEW_VERSION=${version}`);
writeOutputFn('version', version);
return version;