Files

42 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
import { DeploymentError, deployRelease, readDeploymentConfig, rollbackRelease } from "./cpanel-deploy-lib.mjs";
async function main() {
const mode = process.argv[2] || "deploy";
if (!new Set(["deploy", "--rollback"]).has(mode) || process.argv.length > 3) {
throw new DeploymentError("Usage: deploy-cpanel.mjs [--rollback]");
}
if (mode === "--rollback") {
const target = process.env.RELEASE_ROLLBACK_TARGET;
if (!target) {
throw new DeploymentError("RELEASE_ROLLBACK_TARGET is required for --rollback.");
}
const config = readDeploymentConfig(process.env, { rollbackOnly: true });
const result = await rollbackRelease(config, target);
console.log(`Frontend rollback completed: active release ${result.activeTarget.split("/")[1]}.`);
return;
}
const config = readDeploymentConfig(process.env);
const result = await deployRelease(config);
console.log(
`Frontend deployment completed: active release ${config.releaseId}; retained rollback release ${
result.previousTarget.split("/")[1]
}.`
);
if (result.removed.length > 0) {
console.log(`Pruned ${result.removed.length} inactive release(s).`);
}
if (result.retentionWarning) {
console.warn(result.retentionWarning);
}
}
main().catch((error) => {
const message = error instanceof Error ? error.message : "Unknown deployment failure.";
console.error(message);
process.exit(1);
});