refactor(calculate-version): 將版本計算邏輯由 bash 改寫為 Node.js 並依功能分檔
保留 entrypoint.sh 作為容器進入點,改為啟動 app/ 下的 Node.js 程式; 依功能拆分為 logger/config/version/releases/output/index,並更新 Dockerfile 改用 node:lts-alpine。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
4983a72524
commit
bd6b6017ab
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
// 主分隔線與次分隔線寬度(沿用原 entrypoint.sh 的視覺樣式)
|
||||
const LINE = '='.repeat(50);
|
||||
const SUBLINE = '-'.repeat(50);
|
||||
|
||||
/**
|
||||
* 輸出帶標題的區塊段落至標準輸出,標題前後以分隔線包夾,
|
||||
* 用於在 log 中建立可視的段落區隔。
|
||||
*
|
||||
* 輸出格式為:換行 + 主分隔線(50 個 `=`)+ 標題 + 次分隔線(50 個 `-`)。
|
||||
*
|
||||
* @param {string} title - 區塊標題文字;會原樣輸出於兩條分隔線之間。
|
||||
* @returns {void}
|
||||
*/
|
||||
function section(title) {
|
||||
process.stdout.write(`\n${LINE}\n${title}\n${SUBLINE}\n`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 輸出一般資訊層級的 log 訊息至標準輸出,自動加上 `[info]` 前綴與換行。
|
||||
*
|
||||
* @param {string} message - 要輸出的資訊內容。
|
||||
* @returns {void}
|
||||
*/
|
||||
function info(message) {
|
||||
process.stdout.write(`[info] ${message}\n`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 輸出錯誤層級的 log 訊息至標準錯誤輸出(stderr),並以狀態碼 1
|
||||
* 立即終止整個行程。用於發生無法復原的錯誤時中止執行。
|
||||
*
|
||||
* 注意:此函式呼叫 `process.exit(1)`,正常情況下不會回傳給呼叫端,
|
||||
* 其後的程式碼不會被執行。
|
||||
*
|
||||
* @param {string} message - 要輸出的錯誤描述內容。
|
||||
* @returns {never} 不會正常回傳(行程會被終止)。
|
||||
*/
|
||||
function fail(message) {
|
||||
process.stderr.write(`[error] ${message}\n`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
module.exports = { section, info, fail };
|
||||
Reference in New Issue
Block a user