@joltdesign/scripts 0.19.2 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,59 @@
1
+ /**
2
+ * AWS Console URL Generator
3
+ *
4
+ * Utility for generating AWS console URLs for various services
5
+ */
6
+ export const AWSConsoleUrlGenerator = {
7
+ /**
8
+ * Generate ECS service console URL
9
+ */
10
+ ecsService(region, cluster, service) {
11
+ return `https://${region}.console.aws.amazon.com/ecs/v2/clusters/${cluster}/services/${service}`;
12
+ },
13
+ /**
14
+ * Generate ECS cluster console URL
15
+ */
16
+ ecsCluster(region, cluster) {
17
+ return `https://${region}.console.aws.amazon.com/ecs/v2/clusters/${cluster}`;
18
+ },
19
+ /**
20
+ * Generate S3 bucket console URL
21
+ */
22
+ s3Bucket(_region, bucket) {
23
+ return `https://s3.console.aws.amazon.com/s3/buckets/${bucket}`;
24
+ },
25
+ /**
26
+ * Generate CloudWatch log group console URL
27
+ */
28
+ cloudWatchLogGroup(region, logGroup) {
29
+ const encodedLogGroup = encodeURIComponent(logGroup);
30
+ return `https://${region}.console.aws.amazon.com/cloudwatch/home?region=${region}#logsV2:log-groups/log-group/${encodedLogGroup}`;
31
+ },
32
+ /**
33
+ * Generate CodeBuild project console URL
34
+ */
35
+ codeBuildProject(region, projectName) {
36
+ return `https://${region}.console.aws.amazon.com/codesuite/codebuild/projects/${projectName}`;
37
+ },
38
+ /**
39
+ * Generate CodeBuild build console URL
40
+ */
41
+ codeBuildBuild(region, projectName, buildId) {
42
+ return `https://${region}.console.aws.amazon.com/codesuite/codebuild/projects/${projectName}/build/${buildId}`;
43
+ },
44
+ /**
45
+ * Generate CloudFront distribution console URL
46
+ */
47
+ cloudFrontDistribution(_region, distributionId) {
48
+ // CloudFront console is always in us-east-1 region but we include region for consistency
49
+ return `https://console.aws.amazon.com/cloudfront/v3/home#/distributions/${distributionId}`;
50
+ },
51
+ /**
52
+ * Extract bucket name from S3 URI
53
+ */
54
+ extractS3Bucket(s3Uri) {
55
+ const match = s3Uri.match(/^s3:\/\/([^/]+)/);
56
+ return match ? match[1] : null;
57
+ },
58
+ };
59
+ //# sourceMappingURL=AWSConsoleUrlGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSConsoleUrlGenerator.js","sourceRoot":"","sources":["../src/AWSConsoleUrlGenerator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,OAAe,EAAE,OAAe;QACzD,OAAO,WAAW,MAAM,2CAA2C,OAAO,aAAa,OAAO,EAAE,CAAA;IAClG,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,OAAe;QACxC,OAAO,WAAW,MAAM,2CAA2C,OAAO,EAAE,CAAA;IAC9E,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,MAAc;QACtC,OAAO,gDAAgD,MAAM,EAAE,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAc,EAAE,QAAgB;QACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACpD,OAAO,WAAW,MAAM,kDAAkD,MAAM,gCAAgC,eAAe,EAAE,CAAA;IACnI,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAc,EAAE,WAAmB;QAClD,OAAO,WAAW,MAAM,wDAAwD,WAAW,EAAE,CAAA;IAC/F,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc,EAAE,WAAmB,EAAE,OAAe;QACjE,OAAO,WAAW,MAAM,wDAAwD,WAAW,UAAU,OAAO,EAAE,CAAA;IAChH,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,OAAe,EAAE,cAAsB;QAC5D,yFAAyF;QACzF,OAAO,oEAAoE,cAAc,EAAE,CAAA;IAC7F,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAa;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAChC,CAAC;CACF,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import ansis from 'ansis';
2
2
  import { Option } from 'clipanion';
3
3
  import * as t from 'typanion';
4
- import { execC, which } from '../utils.js';
4
+ import { AWSConsoleUrlGenerator } from '../AWSConsoleUrlGenerator.js';
5
+ import { delay, execC } from '../utils.js';
5
6
  import JoltCommand from './JoltCommand.js';
6
7
  class AWSCommand extends JoltCommand {
7
8
  constructor() {
@@ -9,13 +10,46 @@ class AWSCommand extends JoltCommand {
9
10
  this.requiredCommands = ['aws'];
10
11
  this.region = Option.String('--region', { required: false });
11
12
  }
12
- async getRegionArg() {
13
+ /**
14
+ * Get the AWS region to use for operations
15
+ */
16
+ async getRegion() {
13
17
  const { config, region } = this;
14
18
  if (region) {
15
- return `--region=${await config.parseArg(region)}`;
19
+ return await config.parseArg(region);
16
20
  }
17
21
  const configRegion = await config.get('awsRegion');
18
- return configRegion ? `--region=${configRegion}` : '';
22
+ return configRegion || 'eu-west-1';
23
+ }
24
+ async getRegionArg() {
25
+ const region = await this.getRegion();
26
+ return region ? `--region=${region}` : '';
27
+ }
28
+ /**
29
+ * Monitor a CodeBuild build until it completes
30
+ * @param buildId The build ID to monitor
31
+ * @returns The final build status
32
+ */
33
+ async waitForBuildCompletion(buildId) {
34
+ var _a;
35
+ const { config } = this;
36
+ const regionArg = await this.getRegionArg();
37
+ // Terminal states that indicate build completion
38
+ const terminalStates = ['SUCCEEDED', 'FAILED', 'FAULT', 'STOPPED', 'TIMED_OUT'];
39
+ while (true) {
40
+ const result = await execC(await config.command('aws'), [regionArg, 'codebuild', 'batch-get-builds', `--ids=${buildId}`], {
41
+ env: { AWS_PAGER: '' },
42
+ });
43
+ if (result.stdout) {
44
+ const output = JSON.parse(result.stdout.toString());
45
+ const build = (_a = output.builds) === null || _a === void 0 ? void 0 : _a[0];
46
+ if ((build === null || build === void 0 ? void 0 : build.buildStatus) && terminalStates.includes(build.buildStatus)) {
47
+ return build.buildStatus;
48
+ }
49
+ }
50
+ // Wait 5 seconds before checking again
51
+ await delay(5000);
52
+ }
19
53
  }
20
54
  }
21
55
  export class ECSDeployCommand extends AWSCommand {
@@ -52,10 +86,6 @@ export class ECSDeployCommand extends AWSCommand {
52
86
  stderr.write(ansis.red('⛅ ECS service must be configured!\n'));
53
87
  return 1;
54
88
  }
55
- if (!(await which(awsCommand))) {
56
- stderr.write(ansis.red(`⛅ Could not find command ${awsCommand}!\n`));
57
- return 2;
58
- }
59
89
  stdout.write(ansis.blue(`⛅ Deploying service ${service} on cluster ${cluster}...\n`));
60
90
  const result = await execC(awsCommand, args, {
61
91
  stderr: this.context.stderr,
@@ -68,10 +98,15 @@ export class ECSDeployCommand extends AWSCommand {
68
98
  if (!result.exitCode && output) {
69
99
  const resultJson = JSON.parse(output);
70
100
  const { service } = resultJson;
101
+ const region = await this.getRegion();
71
102
  stdout.write(ansis.blue.bold('⛅ Started deploy:\n'));
72
103
  stdout.write(`${ansis.white('Cluster ARN:')} ${service.clusterArn}\n`);
73
104
  stdout.write(`${ansis.white('Service Name:')} ${service.serviceName}\n`);
74
105
  stdout.write(`${ansis.white('Service ARN:')} ${service.serviceArn}\n`);
106
+ // Add console URLs
107
+ stdout.write(`\n${ansis.blue.bold('🔗 AWS Console Links:')}\n`);
108
+ stdout.write(`${ansis.white('ECS Service:')} ${AWSConsoleUrlGenerator.ecsService(region, cluster, service.serviceName)}\n`);
109
+ stdout.write(`${ansis.white('ECS Cluster:')} ${AWSConsoleUrlGenerator.ecsCluster(region, cluster)}\n`);
75
110
  return 0;
76
111
  }
77
112
  stderr.write(ansis.red('Failed to deploy!\n'));
@@ -93,6 +128,19 @@ export class S3SyncCommand extends AWSCommand {
93
128
  stdout.write(ansis.blue(`⛅ Syncing ${parsedFrom} to ${parsedTo}...\n`));
94
129
  const result = await execC(await config.command('aws'), [await this.getRegionArg(), 's3', 'sync', deleteOpt && '--delete', parsedFrom, parsedTo], { context });
95
130
  stdout.write(ansis.blue('⛅ Syncing complete.\n'));
131
+ // Add console URLs for S3 buckets
132
+ const region = await this.getRegion();
133
+ const fromBucket = AWSConsoleUrlGenerator.extractS3Bucket(parsedFrom);
134
+ const toBucket = AWSConsoleUrlGenerator.extractS3Bucket(parsedTo);
135
+ if (fromBucket || toBucket) {
136
+ stdout.write(`\n${ansis.blue.bold('🔗 AWS Console Links:')}\n`);
137
+ if (fromBucket) {
138
+ stdout.write(`${ansis.white('Source Bucket:')} ${AWSConsoleUrlGenerator.s3Bucket(region, fromBucket)}\n`);
139
+ }
140
+ if (toBucket) {
141
+ stdout.write(`${ansis.white('Target Bucket:')} ${AWSConsoleUrlGenerator.s3Bucket(region, toBucket)}\n`);
142
+ }
143
+ }
96
144
  return result.exitCode;
97
145
  }
98
146
  }
@@ -107,6 +155,10 @@ export class LogsTailCommand extends AWSCommand {
107
155
  const { args, config, context, context: { stdout }, } = this;
108
156
  const group = await config.parseArg(this.group);
109
157
  stdout.write(ansis.blue(`⛅ Tailing logs from ${group}...\n`));
158
+ // Add console URL for CloudWatch log group
159
+ const region = await this.getRegion();
160
+ stdout.write(`${ansis.blue.bold('🔗 AWS Console Link:')}\n`);
161
+ stdout.write(`${ansis.white('CloudWatch Logs:')} ${AWSConsoleUrlGenerator.cloudWatchLogGroup(region, group)}\n\n`);
110
162
  const result = await execC(await config.command('aws'), [await this.getRegionArg(), 'logs', 'tail', group, '--follow', ...args], {
111
163
  context,
112
164
  });
@@ -122,7 +174,7 @@ export class CodeBuildStartCommand extends AWSCommand {
122
174
  this.project = Option.String({ required: false });
123
175
  }
124
176
  async command() {
125
- const { batch, cli, config, context: { stdout, stderr }, dev, project, } = this;
177
+ const { batch, config, context: { stdout, stderr }, dev, project, } = this;
126
178
  let target;
127
179
  if (project) {
128
180
  target = await config.parseArg(project);
@@ -148,12 +200,62 @@ export class CodeBuildStartCommand extends AWSCommand {
148
200
  }
149
201
  const output = JSON.parse(result.stdout.toString());
150
202
  const { build } = output;
203
+ const region = await this.getRegion();
151
204
  stdout.write(ansis.blue.bold('⛅ Started project build:\n'));
152
205
  stdout.write(`${ansis.white('ID:')} ${build.id}\n`);
153
206
  stdout.write(`${ansis.white('Project:')} ${build.projectName}\n`);
154
- stdout.write(`${ansis.white('Build Number:')} ${build.buildNumber}\n\n`);
155
- stdout.write(ansis.blue.bold('⛅ Tailing build logs, nothing will show until source download completes and the logs will not stop automatically - press Ctrl-C to close when ready...\n'));
156
- return await cli.run(['aws', 'logs', 'tail', regionArg, `/aws/codebuild/${target}`, '--since=0s'].filter((x) => !!x));
207
+ stdout.write(`${ansis.white('Build Number:')} ${build.buildNumber}\n`);
208
+ // Add console URLs
209
+ stdout.write(`\n${ansis.blue.bold('🔗 AWS Console Links:')}\n`);
210
+ stdout.write(`${ansis.white('CodeBuild Project:')} ${AWSConsoleUrlGenerator.codeBuildProject(region, target)}\n`);
211
+ stdout.write(`${ansis.white('This Build:')} ${AWSConsoleUrlGenerator.codeBuildBuild(region, target, build.id)}\n\n`);
212
+ stdout.write(ansis.blue.bold('⛅ Tailing build logs (automatically stops when build completes). Nothing will show until source download completes...\n'));
213
+ const abortController = new AbortController();
214
+ let logTailPromise = null;
215
+ // Set up signal handlers to abort the controller when user presses Ctrl-C
216
+ const signalHandler = () => {
217
+ abortController.abort();
218
+ };
219
+ process.on('SIGINT', signalHandler);
220
+ process.on('SIGTERM', signalHandler);
221
+ try {
222
+ const buildStatusPromise = this.waitForBuildCompletion(build.id);
223
+ try {
224
+ logTailPromise = execC(await config.command('aws'), ['logs', 'tail', regionArg, `/aws/codebuild/${target}`, '--follow', '--since=0s'].filter((x) => !!x), {
225
+ context: this.context,
226
+ env: { ...process.env, AWS_PAGER: '' },
227
+ cancelSignal: abortController.signal,
228
+ });
229
+ }
230
+ catch (_logError) {
231
+ stdout.write(ansis.yellow('⛅ Log tailing unavailable (logs may not be ready yet)\n'));
232
+ }
233
+ const finalStatus = await buildStatusPromise;
234
+ abortController.abort();
235
+ stdout.write(`\n${ansis.blue.bold('⛅ Build completed with status:')} ${ansis.white(finalStatus)}\n`);
236
+ return finalStatus === 'SUCCEEDED' ? 0 : 1;
237
+ }
238
+ catch (error) {
239
+ stderr.write(ansis.red(`⛅ Error during build monitoring: ${error.message}\n`));
240
+ return 1;
241
+ }
242
+ finally {
243
+ // Clean up signal handlers
244
+ process.off('SIGINT', signalHandler);
245
+ process.off('SIGTERM', signalHandler);
246
+ abortController.abort();
247
+ if (logTailPromise) {
248
+ try {
249
+ await Promise.race([
250
+ logTailPromise,
251
+ delay(1000), // 1 second timeout
252
+ ]);
253
+ }
254
+ catch (_a) {
255
+ // Ignore errors from cancelled log tailing process
256
+ }
257
+ }
258
+ }
157
259
  }
158
260
  }
159
261
  CodeBuildStartCommand.paths = [['aws', 'codebuild', 'start']];
@@ -204,8 +306,12 @@ export class CloudFrontInvalidateCommand extends AWSCommand {
204
306
  if (!result.exitCode && output) {
205
307
  const resultJson = JSON.parse(output);
206
308
  const { Invalidation: invalidation } = resultJson;
309
+ const region = await this.getRegion();
207
310
  stdout.write(ansis.blue.bold('⛅ Started cache invalidation:\n'));
208
311
  stdout.write(`${ansis.white('Invalidation ID:')} ${invalidation.Id}\n`);
312
+ // Add console URL
313
+ stdout.write(`\n${ansis.blue.bold('🔗 AWS Console Link:')}\n`);
314
+ stdout.write(`${ansis.white('CloudFront Distribution:')} ${AWSConsoleUrlGenerator.cloudFrontDistribution(region, target)}\n`);
209
315
  return 0;
210
316
  }
211
317
  stderr.write(ansis.red('⛅ Failed to invalidate!\n'));
@@ -214,6 +320,138 @@ export class CloudFrontInvalidateCommand extends AWSCommand {
214
320
  }
215
321
  CloudFrontInvalidateCommand.paths = [['aws', 'cf', 'invalidate']];
216
322
  CloudFrontInvalidateCommand.schema = [t.hasMutuallyExclusiveKeys(['invalidationPaths', 'invalidationBatch'], { missingIf: 'falsy' })];
323
+ export class ECSStatusCommand extends AWSCommand {
324
+ constructor() {
325
+ super(...arguments);
326
+ this.dev = Option.Boolean('--dev', false);
327
+ }
328
+ async command() {
329
+ var _a, _b, _c, _d, _e;
330
+ const { config, dev, context: { stdout, stderr }, } = this;
331
+ const awsCommand = await config.command('aws');
332
+ const regionArg = await this.getRegionArg();
333
+ // Try to get ECS configuration
334
+ let cluster = await config.get(dev ? 'devEcsCluster' : 'ecsCluster');
335
+ if (!cluster) {
336
+ cluster = await config.tfVar(dev ? 'dev_ecs_cluster' : 'ecs_cluster');
337
+ }
338
+ let service = await config.get(dev ? 'devEcsService' : 'ecsService');
339
+ if (!service) {
340
+ service = await config.tfVar(dev ? 'dev_ecs_service' : 'ecs_service');
341
+ }
342
+ // Check if ECS is configured
343
+ if (!cluster && !service) {
344
+ stdout.write(ansis.yellow('⛅ No ECS configuration detected\n'));
345
+ stdout.write(ansis.dim(' Configure ecsCluster/ecsService or use Terraform variables\n'));
346
+ return 0;
347
+ }
348
+ stdout.write(ansis.blue.bold('⛅ AWS ECS Status\n'));
349
+ stdout.write(ansis.blue(`${'─'.repeat(50)}\n`));
350
+ // Add console URLs if we have configuration
351
+ const region = await this.getRegion();
352
+ if (cluster || service) {
353
+ stdout.write(`${ansis.blue.bold('🔗 AWS Console Links:')}\n`);
354
+ if (cluster) {
355
+ stdout.write(`${ansis.white('ECS Cluster:')} ${AWSConsoleUrlGenerator.ecsCluster(region, cluster)}\n`);
356
+ }
357
+ if (cluster && service) {
358
+ stdout.write(`${ansis.white('ECS Service:')} ${AWSConsoleUrlGenerator.ecsService(region, cluster, service)}\n`);
359
+ }
360
+ stdout.write('\n');
361
+ }
362
+ if (cluster) {
363
+ stdout.write(`${ansis.white('Cluster:')} ${cluster}\n`);
364
+ // Get cluster information
365
+ try {
366
+ const clusterResult = await execC(awsCommand, [regionArg, 'ecs', 'describe-clusters', '--clusters', cluster, '--include', 'STATISTICS'], {
367
+ env: { AWS_PAGER: '' },
368
+ extendEnv: true,
369
+ });
370
+ if (clusterResult.exitCode === 0 && clusterResult.stdout) {
371
+ const clusterData = JSON.parse(clusterResult.stdout.toString());
372
+ const clusterInfo = (_a = clusterData.clusters) === null || _a === void 0 ? void 0 : _a[0];
373
+ if (clusterInfo) {
374
+ stdout.write(`${ansis.white('Status:')} ${clusterInfo.status}\n`);
375
+ stdout.write(`${ansis.white('Active Services:')} ${clusterInfo.activeServicesCount}\n`);
376
+ stdout.write(`${ansis.white('Running Tasks:')} ${clusterInfo.runningTasksCount}\n`);
377
+ stdout.write(`${ansis.white('Pending Tasks:')} ${clusterInfo.pendingTasksCount}\n`);
378
+ stdout.write(`${ansis.white('Registered Container Instances:')} ${clusterInfo.registeredContainerInstancesCount}\n`);
379
+ }
380
+ }
381
+ }
382
+ catch (error) {
383
+ stderr.write(ansis.yellow(`⛅ Warning: Could not retrieve cluster information: ${error}\n`));
384
+ }
385
+ }
386
+ if (service) {
387
+ stdout.write(`\n${ansis.white('Service:')} ${service}\n`);
388
+ if (cluster) {
389
+ try {
390
+ // Get service information
391
+ const serviceResult = await execC(awsCommand, [regionArg, 'ecs', 'describe-services', '--cluster', cluster, '--services', service], {
392
+ env: { AWS_PAGER: '' },
393
+ extendEnv: true,
394
+ });
395
+ if (serviceResult.exitCode === 0 && serviceResult.stdout) {
396
+ const serviceData = JSON.parse(serviceResult.stdout.toString());
397
+ const serviceInfo = (_b = serviceData.services) === null || _b === void 0 ? void 0 : _b[0];
398
+ if (serviceInfo) {
399
+ stdout.write(`${ansis.white('Status:')} ${serviceInfo.status}\n`);
400
+ stdout.write(`${ansis.white('Running Count:')} ${serviceInfo.runningCount}\n`);
401
+ stdout.write(`${ansis.white('Pending Count:')} ${serviceInfo.pendingCount}\n`);
402
+ stdout.write(`${ansis.white('Desired Count:')} ${serviceInfo.desiredCount}\n`);
403
+ stdout.write(`${ansis.white('Task Definition:')} ${serviceInfo.taskDefinition}\n`);
404
+ if (((_c = serviceInfo.deployments) === null || _c === void 0 ? void 0 : _c.length) > 0) {
405
+ stdout.write(`\n${ansis.white.bold('Deployments:')}\n`);
406
+ serviceInfo.deployments.forEach((deployment, index) => {
407
+ const status = deployment.status === 'PRIMARY' ? ansis.green(deployment.status) : ansis.yellow(deployment.status);
408
+ stdout.write(` ${index + 1}. ${status} - ${deployment.taskDefinition}\n`);
409
+ stdout.write(` Running: ${deployment.runningCount}, Pending: ${deployment.pendingCount}, Desired: ${deployment.desiredCount}\n`);
410
+ });
411
+ }
412
+ // Get running tasks
413
+ const tasksResult = await execC(awsCommand, [regionArg, 'ecs', 'list-tasks', '--cluster', cluster, '--service-name', service], {
414
+ env: { AWS_PAGER: '' },
415
+ extendEnv: true,
416
+ });
417
+ if (tasksResult.exitCode === 0 && tasksResult.stdout) {
418
+ const tasksData = JSON.parse(tasksResult.stdout.toString());
419
+ if (((_d = tasksData.taskArns) === null || _d === void 0 ? void 0 : _d.length) > 0) {
420
+ stdout.write(`\n${ansis.white.bold('Active Tasks:')}\n`);
421
+ // Get detailed task information
422
+ const taskDetailsResult = await execC(awsCommand, [regionArg, 'ecs', 'describe-tasks', '--cluster', cluster, '--tasks', ...tasksData.taskArns], {
423
+ env: { AWS_PAGER: '' },
424
+ extendEnv: true,
425
+ });
426
+ if (taskDetailsResult.exitCode === 0 && taskDetailsResult.stdout) {
427
+ const taskDetails = JSON.parse(taskDetailsResult.stdout.toString());
428
+ (_e = taskDetails.tasks) === null || _e === void 0 ? void 0 : _e.forEach((task, index) => {
429
+ const taskId = task.taskArn.split('/').pop();
430
+ const status = task.lastStatus === 'RUNNING' ? ansis.green(task.lastStatus) : ansis.yellow(task.lastStatus);
431
+ stdout.write(` ${index + 1}. ${taskId} - ${status}\n`);
432
+ stdout.write(` CPU/Memory: ${task.cpu}/${task.memory}\n`);
433
+ if (task.createdAt) {
434
+ stdout.write(` Created: ${new Date(task.createdAt).toLocaleString()}\n`);
435
+ }
436
+ });
437
+ }
438
+ }
439
+ }
440
+ }
441
+ }
442
+ }
443
+ catch (error) {
444
+ stderr.write(ansis.yellow(`⛅ Warning: Could not retrieve service information: ${error}\n`));
445
+ }
446
+ }
447
+ else {
448
+ stdout.write(ansis.yellow(' Service configured but no cluster found\n'));
449
+ }
450
+ }
451
+ return 0;
452
+ }
453
+ }
454
+ ECSStatusCommand.paths = [['aws', 'status']];
217
455
  export class ECSDeploySpecificCommand extends AWSCommand {
218
456
  constructor() {
219
457
  super(...arguments);
@@ -291,6 +529,11 @@ export class ECSDeploySpecificCommand extends AWSCommand {
291
529
  '--cli-input-json',
292
530
  JSON.stringify(taskDefinition),
293
531
  ], { shell: false });
532
+ // Add console URLs before deploying
533
+ const region = await this.getRegion();
534
+ stdout.write(`\n${ansis.blue.bold('🔗 AWS Console Links:')}\n`);
535
+ stdout.write(`${ansis.white('ECS Cluster:')} ${AWSConsoleUrlGenerator.ecsCluster(region, cluster)}\n`);
536
+ stdout.write(`${ansis.white('ECS Service:')} ${AWSConsoleUrlGenerator.ecsService(region, cluster, service)}\n\n`);
294
537
  return await cli.run(['aws', 'ecs', 'deploy']);
295
538
  }
296
539
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AWS.js","sourceRoot":"","sources":["../../src/Command/AWS.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AWS.js","sourceRoot":"","sources":["../../src/Command/AWS.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import JoltCommand from './JoltCommand.js';
4
4
  export class CacheFlushCommand extends JoltCommand {
5
5
  constructor() {
6
6
  super(...arguments);
7
- this.requiredCommands = ['docker'];
7
+ this.requiredCommands = ['docker', 'compose'];
8
8
  }
9
9
  async command() {
10
10
  const { config, context, context: { stdout, stderr }, } = this;
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Command/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAE1C,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAAlD;;QAOE,qBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAA;IAwB/B,CAAC;IAtBC,KAAK,CAAC,OAAO;QACX,MAAM,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAC5B,GAAG,IAAI,CAAA;QAER,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAA;QAC/D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAA;QAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;YAC5E,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;QACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,SAAS,eAAe,UAAU,aAAa,CAAC,CAAC,CAAA;QAC7G,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAChD,OAAO,MAAM,CAAC,QAAQ,CAAA;IACxB,CAAC;;AA7BM,uBAAK,GAAG;IACb,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CACnB,AAJW,CAIX"}
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Command/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAE1C,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAAlD;;QAOE,qBAAgB,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAwB1C,CAAC;IAtBC,KAAK,CAAC,OAAO;QACX,MAAM,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAC5B,GAAG,IAAI,CAAA;QAER,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAA;QAC/D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAA;QAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;YAC5E,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;QACjD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,SAAS,eAAe,UAAU,aAAa,CAAC,CAAC,CAAA;QAC7G,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAChD,OAAO,MAAM,CAAC,QAAQ,CAAA;IACxB,CAAC;;AA7BM,uBAAK,GAAG;IACb,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CACnB,AAJW,CAIX"}
@@ -1,4 +1,8 @@
1
+ import { createReadStream, createWriteStream } from 'node:fs';
2
+ import { unlink } from 'node:fs/promises';
1
3
  import path from 'node:path';
4
+ import { pipeline } from 'node:stream/promises';
5
+ import { createGzip } from 'node:zlib';
2
6
  import ansis from 'ansis';
3
7
  import { Option } from 'clipanion';
4
8
  import { execa } from 'execa';
@@ -8,19 +12,17 @@ import JoltCommand from './JoltCommand.js';
8
12
  export class DBDumpCommand extends JoltCommand {
9
13
  constructor() {
10
14
  super(...arguments);
11
- this.requiredCommands = ['docker'];
15
+ this.requiredCommands = ['docker', 'compose'];
12
16
  this.backup = Option.Boolean('--backup', false);
13
17
  }
18
+ getRequiredConfig() {
19
+ return this.backup ? ['dbBackupPath'] : ['dbSeed'];
20
+ }
14
21
  async command() {
15
22
  const { backup, config, context: { stdout, stderr }, } = this;
16
- const backupPath = await config.get('dbBackupPath');
17
23
  let filename;
18
24
  let shouldGzip = backup;
19
25
  if (backup) {
20
- if (!backupPath) {
21
- stderr.write(ansis.red('🛢️ The DB backup location must be configured as dbBackupPath.\n'));
22
- return 1;
23
- }
24
26
  const now = new Date();
25
27
  const date = now
26
28
  .toISOString()
@@ -31,10 +33,6 @@ export class DBDumpCommand extends JoltCommand {
31
33
  }
32
34
  else {
33
35
  const configSeed = await config.get('dbSeed');
34
- if (!configSeed) {
35
- stderr.write(ansis.red('🛢️ The DB seed location must be configured.\n'));
36
- return 1;
37
- }
38
36
  filename = configSeed;
39
37
  }
40
38
  const [composeCommand, args] = await config.getComposeCommand();
@@ -44,6 +42,7 @@ export class DBDumpCommand extends JoltCommand {
44
42
  return 2;
45
43
  }
46
44
  const { name: container, dumpCommand, credentials } = containerInfo;
45
+ const backupPath = backup ? await config.get('dbBackupPath') : undefined;
47
46
  let filePath = backup ? path.resolve(backupPath, filename) : path.resolve(filename);
48
47
  if (filePath.endsWith('.gz')) {
49
48
  shouldGzip = true;
@@ -63,12 +62,27 @@ export class DBDumpCommand extends JoltCommand {
63
62
  filePath = `${filePath}.gz`;
64
63
  }
65
64
  else {
66
- if (backup) {
67
- stderr.write(ansis.yellow(`🛢️ Wrote backup to ${filePath} but couldn't find gzip. Install gzip to automatically compress backups.\n`));
65
+ stderr.write(ansis.blue('🛢️ Gzipping file using Node zlib...\n'));
66
+ stderr.write(ansis.yellow('⚠️ Note: Using Node.js compression may be slower than external gzip for large files.\n'));
67
+ stderr.write(ansis.yellow('⚠️ Install the gzip command for improved performance.\n'));
68
+ try {
69
+ const gzipPath = `${filePath}.gz`;
70
+ const readStream = createReadStream(filePath);
71
+ const writeStream = createWriteStream(gzipPath);
72
+ const gzipStream = createGzip();
73
+ await pipeline(readStream, gzipStream, writeStream);
74
+ // Remove the original uncompressed file after successful compression
75
+ await unlink(filePath);
76
+ filePath = gzipPath;
68
77
  }
69
- else {
70
- stderr.write(ansis.red(`🛢️ Wrote seed to ${filePath} but gzip is missing. Install gzip to compress the DB seed.\n`));
71
- return 2;
78
+ catch (error) {
79
+ if (backup) {
80
+ stderr.write(ansis.yellow(`🛢️ Wrote backup to ${filePath} but failed to compress: ${error instanceof Error ? error.message : String(error)}\n`));
81
+ }
82
+ else {
83
+ stderr.write(ansis.red(`🛢️ Wrote seed to ${filePath} but failed to compress: ${error instanceof Error ? error.message : String(error)}\n`));
84
+ return 2;
85
+ }
72
86
  }
73
87
  }
74
88
  }
@@ -80,7 +94,7 @@ DBDumpCommand.paths = [['db', 'dump']];
80
94
  export class DBResetCommand extends JoltCommand {
81
95
  constructor() {
82
96
  super(...arguments);
83
- this.requiredCommands = ['docker'];
97
+ this.requiredCommands = ['docker', 'compose'];
84
98
  }
85
99
  async command() {
86
100
  const { config, cli, context, context: { stdout, stderr }, } = this;
@@ -152,7 +166,7 @@ DBResetCommand.paths = [['db', 'reset']];
152
166
  export class DBAwaitCommand extends JoltCommand {
153
167
  constructor() {
154
168
  super(...arguments);
155
- this.requiredCommands = ['docker'];
169
+ this.requiredCommands = ['docker', 'compose'];
156
170
  this.quiet = Option.Boolean('--quiet, -q', false);
157
171
  this.timeout = Option.String('--timeout, -t', '300', {
158
172
  tolerateBoolean: false,