37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
const transactionEnvNames = [
|
|
"HWLAB_CD_TRANSACTION_ID",
|
|
"HWLAB_CD_TRANSACTION_OWNER",
|
|
"HWLAB_CD_LOCK_NAME"
|
|
];
|
|
|
|
export function hasDevCdTransactionEnv(env = process.env) {
|
|
return typeof env.HWLAB_CD_TRANSACTION_ID === "string" && env.HWLAB_CD_TRANSACTION_ID.trim().length > 0;
|
|
}
|
|
|
|
export function devCdTransactionGuardFailure({
|
|
script,
|
|
mode,
|
|
requiredEnv = "HWLAB_CD_TRANSACTION_ID"
|
|
}) {
|
|
return {
|
|
ok: false,
|
|
status: "blocked",
|
|
error: "cd-transaction-required",
|
|
code: "cd-transaction-required",
|
|
script,
|
|
mode,
|
|
requiredEnv,
|
|
acceptedEnv: transactionEnvNames,
|
|
entrypoint: "node scripts/dev-cd-apply.mjs --apply --confirm-dev --confirmed-non-production --write-report",
|
|
summary: `${script} ${mode} is a DEV CD side-effect step and must run inside scripts/dev-cd-apply.mjs.`,
|
|
devOnly: true,
|
|
prodTouched: false,
|
|
mutationAttempted: false
|
|
};
|
|
}
|
|
|
|
export function requireDevCdTransactionForSideEffect({ env = process.env, script, mode }) {
|
|
if (hasDevCdTransactionEnv(env)) return null;
|
|
return devCdTransactionGuardFailure({ script, mode });
|
|
}
|