#!/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); });