forge-deploy-cli
Version:
Professional CLI for local deployments with automatic subdomain routing, SSL certificates, and infrastructure management
107 lines • 5.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resumeCommand = exports.pauseCommand = void 0;
const chalk_1 = __importDefault(require("chalk"));
const commander_1 = require("commander");
const localDeployment_1 = require("../services/localDeployment");
const config_1 = require("../services/config");
const child_process_1 = require("child_process");
exports.pauseCommand = new commander_1.Command('pause')
.description('Pause a local deployment')
.argument('[deployment-id]', 'Deployment ID to pause (optional, defaults to current project)')
.action(async (deploymentId) => {
try {
const configService = new config_1.ConfigService();
// If no deployment ID provided, try to get from current project
if (!deploymentId) {
const config = await configService.getConfig();
deploymentId = config.deploymentId;
if (!deploymentId) {
console.log(chalk_1.default.red('No deployment ID specified and no current project deployment found'));
console.log(chalk_1.default.gray('Usage: forge pause <deployment-id>'));
process.exit(1);
}
}
console.log(chalk_1.default.blue(`Pausing deployment: ${deploymentId}`));
const deployment = await localDeployment_1.LocalDeploymentManager.getDeployment(deploymentId);
if (!deployment) {
console.log(chalk_1.default.red('Local deployment not found'));
console.log(chalk_1.default.gray('Use "forge status" to see available deployments'));
process.exit(1);
}
if (deployment.status === 'stopped' || deployment.status === 'paused') {
console.log(chalk_1.default.yellow(`Deployment is already ${deployment.status}`));
return;
}
// Pause PM2 process
const appName = `forge-${deploymentId}`;
try {
(0, child_process_1.execSync)(`pm2 stop ${appName}`, { stdio: 'pipe' });
deployment.status = 'paused';
await localDeployment_1.LocalDeploymentManager.saveDeployment(deployment);
console.log(chalk_1.default.green('Deployment paused successfully'));
console.log(chalk_1.default.gray('Use "forge resume" to resume the deployment'));
}
catch (error) {
console.log(chalk_1.default.red(`Failed to pause deployment: ${error}`));
}
}
catch (error) {
console.log(chalk_1.default.red(`Failed to pause deployment: ${error}`));
process.exit(1);
}
});
exports.resumeCommand = new commander_1.Command('resume')
.description('Resume a paused deployment')
.argument('[deployment-id]', 'Deployment ID to resume (optional, defaults to current project)')
.action(async (deploymentId) => {
try {
const configService = new config_1.ConfigService();
// If no deployment ID provided, try to get from current project
if (!deploymentId) {
const config = await configService.getConfig();
deploymentId = config.deploymentId;
if (!deploymentId) {
console.log(chalk_1.default.red('No deployment ID specified and no current project deployment found'));
console.log(chalk_1.default.gray('Usage: forge resume <deployment-id>'));
process.exit(1);
}
}
console.log(chalk_1.default.blue(`Resuming deployment: ${deploymentId}`));
const deployment = await localDeployment_1.LocalDeploymentManager.getDeployment(deploymentId);
if (!deployment) {
console.log(chalk_1.default.red('Local deployment not found'));
console.log(chalk_1.default.gray('Use "forge status" to see available deployments'));
process.exit(1);
}
if (deployment.status === 'running') {
console.log(chalk_1.default.yellow('Deployment is already running'));
return;
}
if (deployment.status === 'stopped') {
console.log(chalk_1.default.yellow('Deployment is stopped. Use "forge deploy" to restart it.'));
return;
}
// Resume PM2 process
const appName = `forge-${deploymentId}`;
try {
(0, child_process_1.execSync)(`pm2 start ${appName}`, { stdio: 'pipe' });
deployment.status = 'running';
await localDeployment_1.LocalDeploymentManager.saveDeployment(deployment);
console.log(chalk_1.default.green('Deployment resumed successfully'));
console.log(chalk_1.default.gray(`Local URL: http://localhost:${deployment.port}`));
console.log(chalk_1.default.gray(`Public URL: ${deployment.url}`));
}
catch (error) {
console.log(chalk_1.default.red(`Failed to resume deployment: ${error}`));
}
}
catch (error) {
console.log(chalk_1.default.red(`Failed to resume deployment: ${error}`));
process.exit(1);
}
});
//# sourceMappingURL=pause.js.map