'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 };