refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js 模組
依功能分組為 logger/validate/config/gitea-client/releases/tags 模組, entrypoint.sh 改為呼叫 node /app/index.js,Dockerfile 改用 node:20-alpine 基底。 對外行為(清理舊 release 與未指定 release 的 tag)維持不變。 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
b478872c5f
commit
b1aa8730a2
@@ -0,0 +1,36 @@
|
||||
// 參數驗證,對應原本 entrypoint.sh 的 is_empty_or_null/require_value/require_integer。
|
||||
// 驗證失敗時丟出 Error,由進入點統一捕捉後以非零狀態結束。
|
||||
|
||||
/**
|
||||
* 判斷值是否視為「空」。使用嚴格相等,因此 `0`、`false`、字串 `"0"` 都不算空。
|
||||
* @param {*} value 待判斷的值
|
||||
* @returns {boolean} 當值為 `undefined`、`null`、空字串或字串 `"null"` 時回傳 true
|
||||
*/
|
||||
export function isEmptyOrNull(value) {
|
||||
return value === undefined || value === null || value === '' || value === 'null'
|
||||
}
|
||||
|
||||
/**
|
||||
* 要求指定欄位有值,空值時丟出 Error 以中止流程。
|
||||
* @param {string} name 欄位名稱,用於組出錯誤訊息
|
||||
* @param {*} value 待檢查的值,空值判定委派給 [[isEmptyOrNull]]
|
||||
* @throws {Error} 當 value 為空時丟出 `${name} is required`
|
||||
*/
|
||||
export function requireValue(name, value) {
|
||||
if (isEmptyOrNull(value)) {
|
||||
throw new Error(`${name} is required`)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 要求指定欄位為非負整數。會先轉成字串再以 `/^[0-9]+$/` 比對,因此可接受數字或純數字字串,
|
||||
* 但拒絕負數、小數、空值與非數字內容。
|
||||
* @param {string} name 欄位名稱,用於組出錯誤訊息
|
||||
* @param {string|number} value 待檢查的值
|
||||
* @throws {Error} 當 value 不是非負整數時丟出 `${name} must be a non-negative integer`
|
||||
*/
|
||||
export function requireInteger(name, value) {
|
||||
if (!/^[0-9]+$/.test(String(value))) {
|
||||
throw new Error(`${name} must be a non-negative integer`)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user