/** * 輸出最上層的「區塊/章節」分隔標題(前綴空行 + `=== 標題 ===`)。 * 用於切分整個執行流程中彼此獨立的大段落(例如「環境檢查」「執行審查」「發布結果」), * 讓 CI log 在視覺上分群;屬於最高層級的分隔,內部再以 step / line 等細分。 * * @param {string} title - 區塊標題文字。 * @returns {void} 無回傳值,僅將標題寫入 stdout。 */ export function section(title) { console.log(`\n=== ${title} ===`); } /** * 輸出某個「步驟」的標題(前綴空行 + `[步驟代號] 標題`)。 * 適合在一個 section 之下標示流程中的各個有序步驟(如 `[1] 載入設定`、`[2] 呼叫模型`), * 之後再用 input / output / line 等細項函式描述該步驟的細節。 * * @param {string} stepName - 步驟代號或編號,會以中括號包覆顯示。 * @param {string} title - 步驟標題文字。 * @returns {void} 無回傳值,僅將步驟標題寫入 stdout。 */ export function step(stepName, title) { console.log(`\n[${stepName}] ${title}`); } /** * 輸出一筆縮排的一般明細列(` - 訊息`)。 * 用於在某個 step 之下列出不帶語意成敗的中性資訊(例如逐項說明、設定值、進度敘述); * 若要表達輸入/輸出或成敗,請改用 input / output / result / ok 等更具語意的函式。 * * @param {string} message - 要顯示的明細訊息。 * @returns {void} 無回傳值,僅將明細寫入 stdout。 */ export function line(message) { console.log(` - ${message}`); } /** * 輸出「階段輸入」描述(` ← 輸入:訊息`),標示目前步驟吃進了什麼資料。 * 在一個步驟開始處理前,用來明確記錄其輸入來源或內容,方便日後對照輸出(output)追蹤資料流。 * * @param {string} message - 描述輸入內容的訊息。 * @returns {void} 無回傳值,僅將輸入描述寫入 stdout。 */ export function input(message) { console.log(` ← 輸入:${message}`); } /** * 輸出「階段輸出」描述(` → 輸出:訊息`),標示目前步驟產出了什麼結果。 * 在一個步驟處理完成後,用來記錄其產出,與 input 搭配可在 log 中清楚呈現該步驟的資料流向。 * * @param {string} message - 描述輸出內容的訊息。 * @returns {void} 無回傳值,僅將輸出描述寫入 stdout。 */ export function output(message) { console.log(` → 輸出:${message}`); } /** * 輸出一筆檢查/把關結果列,依結果以 `✅ 成功` 或 `❌ 失敗` 為前綴(` ✅ 成功:訊息`)。 * 用於明確標示某個驗證、條件判斷或 gate 的通過與否; * 需要由布林值決定成敗、且希望成功與失敗使用一致格式時最適合(注意:失敗仍寫入 stdout,非 stderr)。 * * @param {boolean} passed - 結果是否通過;`true` 顯示成功、`false` 顯示失敗。 * @param {string} message - 描述該結果的訊息。 * @returns {void} 無回傳值,僅將結果寫入 stdout。 */ export function result(passed, message) { console.log(` ${passed ? '✅ 成功' : '❌ 失敗'}:${message}`); } /** * 輸出一筆成功/完成訊息(` ✓ 訊息`)。 * 用於確認某項動作已順利完成的正向回饋;當只需表達成功、無需處理失敗分支時使用, * 若需依條件同時涵蓋成功與失敗請改用 result,需要警告或錯誤請改用 warn / error。 * * @param {string} message - 描述成功內容的訊息。 * @returns {void} 無回傳值,僅將成功訊息寫入 stdout。 */ export function ok(message) { console.log(` ✓ ${message}`); } /** * 輸出一筆警告訊息(` ! 訊息`),透過 `console.warn` 寫入 stderr。 * 用於流程仍可繼續、但需要提醒使用者注意的非致命狀況(例如使用了預設值、跳過某項可選步驟); * 比 line/ok 更醒目,但比 error 輕,真正導致失敗的狀況請改用 error。 * * @param {string} message - 要顯示的警告訊息。 * @returns {void} 無回傳值,僅將警告訊息寫入 stderr。 */ export function warn(message) { console.warn(` ! ${message}`); } /** * 輸出一筆錯誤訊息(` x 訊息`),透過 `console.error` 寫入 stderr。 * 用於明確的失敗或例外狀況,是日誌中最高的嚴重層級; * 適合在捕捉到錯誤或前置條件不滿足而無法繼續時使用,僅需提醒注意的非致命狀況請改用 warn。 * * @param {string} message - 要顯示的錯誤訊息。 * @returns {void} 無回傳值,僅將錯誤訊息寫入 stderr。 */ export function error(message) { console.error(` x ${message}`); }