@joltdesign/scripts 0.1.0 → 0.2.1

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.
@@ -1,15 +1,6 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { Option } from 'clipanion';
11
2
  import JoltCommand from './JoltCommand.js';
12
- import chalk from 'chalk';
3
+ import ansis from 'ansis';
13
4
  import shelljs from 'shelljs';
14
5
  import { execC } from '../utils.js';
15
6
  const { which } = shelljs;
@@ -20,48 +11,79 @@ export class ECSDeployCommand extends JoltCommand {
20
11
  this.dev = Option.Boolean('--dev', false);
21
12
  this.prod = !this.dev;
22
13
  }
23
- command() {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- var _a;
26
- const { config, dev, context, context: { stdout, stderr }, } = this;
27
- const awsCommand = config.command('aws');
28
- const cluster = yield config.tfVar(dev ? 'ecs_cluster_dev' : 'ecs_cluster');
29
- const service = yield config.tfVar(dev ? 'ecs_service_dev' : 'ecs_service');
30
- const args = ['ecs', 'update-service', `--cluster='${cluster}'`, `--service='${service}'`, '--force-new-deployment'];
31
- if (!cluster) {
32
- stderr.write(chalk.red('ECS cluster must be configured!\n'));
33
- return 1;
34
- }
35
- if (!service) {
36
- stderr.write(chalk.red('ECS service must be configured!\n'));
37
- return 1;
38
- }
39
- if (!which(awsCommand)) {
40
- stderr.write(chalk.red(`Could not find command ${awsCommand}!\n`));
41
- return 2;
42
- }
43
- stdout.write(chalk.blue(`⛅ Deploying service ${service} on cluster ${cluster}...\n`));
44
- const result = yield execC(awsCommand, args, {
45
- stderr: this.context.stderr,
46
- env: {
47
- AWS_PAGER: '',
48
- },
49
- extendEnv: true,
50
- });
51
- const output = (_a = result.stdout) === null || _a === void 0 ? void 0 : _a.toString();
52
- if (!result.exitCode && output) {
53
- const resultJson = JSON.parse(output);
54
- const { service } = resultJson;
55
- stdout.write(chalk.blue.bold('⛅ Started deploy:\n'));
56
- stdout.write(`${chalk.white('Cluster ARN:')} ${service.clusterArn}\n`);
57
- stdout.write(`${chalk.white('Service Name:')} ${service.serviceName}\n`);
58
- stdout.write(`${chalk.white('Service ARN:')} ${service.serviceArn}\n`);
59
- return 0;
60
- }
61
- stderr.write(chalk.red('Failed to deploy!\n'));
62
- return result.exitCode;
14
+ async command() {
15
+ var _a;
16
+ const { config, dev, context, context: { stdout, stderr }, } = this;
17
+ const awsCommand = config.command('aws');
18
+ const cluster = await config.tfVar(dev ? 'ecs_cluster_dev' : 'ecs_cluster');
19
+ const service = await config.tfVar(dev ? 'ecs_service_dev' : 'ecs_service');
20
+ const args = ['ecs', 'update-service', `--cluster='${cluster}'`, `--service='${service}'`, '--force-new-deployment'];
21
+ if (!cluster) {
22
+ stderr.write(ansis.red('ECS cluster must be configured!\n'));
23
+ return 1;
24
+ }
25
+ if (!service) {
26
+ stderr.write(ansis.red('ECS service must be configured!\n'));
27
+ return 1;
28
+ }
29
+ if (!which(awsCommand)) {
30
+ stderr.write(ansis.red(`Could not find command ${awsCommand}!\n`));
31
+ return 2;
32
+ }
33
+ stdout.write(ansis.blue(`⛅ Deploying service ${service} on cluster ${cluster}...\n`));
34
+ const result = await execC(awsCommand, args, {
35
+ stderr: this.context.stderr,
36
+ env: {
37
+ AWS_PAGER: '',
38
+ },
39
+ extendEnv: true,
63
40
  });
41
+ const output = (_a = result.stdout) === null || _a === void 0 ? void 0 : _a.toString();
42
+ if (!result.exitCode && output) {
43
+ const resultJson = JSON.parse(output);
44
+ const { service } = resultJson;
45
+ stdout.write(ansis.blue.bold('⛅ Started deploy:\n'));
46
+ stdout.write(`${ansis.white('Cluster ARN:')} ${service.clusterArn}\n`);
47
+ stdout.write(`${ansis.white('Service Name:')} ${service.serviceName}\n`);
48
+ stdout.write(`${ansis.white('Service ARN:')} ${service.serviceArn}\n`);
49
+ return 0;
50
+ }
51
+ stderr.write(ansis.red('Failed to deploy!\n'));
52
+ return result.exitCode;
64
53
  }
65
54
  }
66
55
  ECSDeployCommand.paths = [['aws', 'ecs', 'deploy']];
56
+ export class S3SyncCommand extends JoltCommand {
57
+ constructor() {
58
+ super(...arguments);
59
+ this.requiredCommands = ['aws'];
60
+ this.from = Option.String();
61
+ this.to = Option.String();
62
+ }
63
+ async command() {
64
+ const { config, from, to, context: { stdout, stderr }, } = this;
65
+ const parsedFrom = await config.parseArg(from);
66
+ const parsedTo = await config.parseArg(to);
67
+ stdout.write(ansis.blue(`⛅ Syncing ${parsedFrom} to ${parsedTo}...\n`));
68
+ const result = await execC(config.command('aws'), ['s3', 'sync', parsedFrom, parsedTo]);
69
+ stdout.write(ansis.blue('⛅ Syncing complete.\n'));
70
+ return result.exitCode;
71
+ }
72
+ }
73
+ S3SyncCommand.paths = [['aws', 's3', 'sync']];
74
+ export class LogsTailCommand extends JoltCommand {
75
+ constructor() {
76
+ super(...arguments);
77
+ this.requiredCommands = ['aws'];
78
+ this.group = Option.String();
79
+ }
80
+ async command() {
81
+ const { config, context, context: { stdout }, } = this;
82
+ const group = await config.parseArg(this.group);
83
+ stdout.write(ansis.blue(`⛅ Tailing logs from ${group}...\n`));
84
+ const result = await execC(config.command('aws'), ['logs', 'tail', group, '--follow'], { context });
85
+ return result.exitCode;
86
+ }
87
+ }
88
+ LogsTailCommand.paths = [['aws', 'logs', 'tail']];
67
89
  //# sourceMappingURL=AWS.js.map
@@ -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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"}
@@ -1,13 +1,4 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import chalk from 'chalk';
1
+ import ansis from 'ansis';
11
2
  import { Option } from 'clipanion';
12
3
  import { DockerBuildCommand } from './Docker.js';
13
4
  import JoltCommand from './JoltCommand.js';
@@ -17,19 +8,17 @@ export class BuildCommand extends JoltCommand {
17
8
  this.dev = Option.Boolean('--dev', false);
18
9
  this.prod = Option.Boolean('--prod', true);
19
10
  }
20
- command() {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- const { config, context, context: { stdout, stderr }, dev, } = this;
23
- const imageName = config.get('imageName');
24
- if (imageName) {
25
- stdout.write(chalk.yellow(`Found a configured image name (${imageName}) - assuming you wanted to build Docker.\n\n`));
26
- const args = ['build', 'docker'];
27
- args.push(dev ? '--dev' : '--prod');
28
- return yield this.cli.run(args, context);
29
- }
30
- stderr.write(this.cli.usage(DockerBuildCommand));
31
- return 1;
32
- });
11
+ async command() {
12
+ const { config, context, context: { stdout, stderr }, dev, } = this;
13
+ const imageName = config.get('imageName');
14
+ if (imageName) {
15
+ stdout.write(ansis.yellow(`Found a configured image name (${imageName}) - assuming you wanted to build Docker.\n\n`));
16
+ const args = ['build', 'docker'];
17
+ args.push(dev ? '--dev' : '--prod');
18
+ return await this.cli.run(args, context);
19
+ }
20
+ stderr.write(this.cli.usage(DockerBuildCommand));
21
+ return 1;
33
22
  }
34
23
  }
35
24
  BuildCommand.paths = [['build']];
@@ -1 +1 @@
1
- {"version":3,"file":"Build.js","sourceRoot":"","sources":["../../src/Command/Build.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,WAAW;IAA7C;;QAGE,QAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACpC,SAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAyBvC,CAAC;IAvBO,OAAO;;YACX,MAAM,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAC3B,GAAG,GACJ,GAAG,IAAI,CAAA;YAER,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAEzC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CACV,KAAK,CAAC,MAAM,CAAC,kCAAkC,SAAS,8CAA8C,CAAC,CACxG,CAAA;gBAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACnC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAC1C,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAChD,OAAO,CAAC,CAAA;QACV,CAAC;KAAA;;AA3BM,kBAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,AAAd,CAAc"}
1
+ {"version":3,"file":"Build.js","sourceRoot":"","sources":["../../src/Command/Build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAE1C,MAAM,OAAO,YAAa,SAAQ,WAAW;IAA7C;;QAGE,QAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACpC,SAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAyBvC,CAAC;IAvBC,KAAK,CAAC,OAAO;QACX,MAAM,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAC3B,GAAG,GACJ,GAAG,IAAI,CAAA;QAER,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEzC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CACV,KAAK,CAAC,MAAM,CAAC,kCAAkC,SAAS,8CAA8C,CAAC,CACxG,CAAA;YAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACnC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,CAAA;IACV,CAAC;;AA3BM,kBAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,AAAd,CAAc"}
@@ -0,0 +1,30 @@
1
+ import { execC } from '../utils.js';
2
+ import JoltCommand from './JoltCommand.js';
3
+ import ansis from 'ansis';
4
+ export class CacheFlushCommand extends JoltCommand {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.requiredCommands = ['docker'];
8
+ }
9
+ async command() {
10
+ const { config, context, context: { stdout, stderr }, } = this;
11
+ const [composeCommand, args] = config.getComposeCommand();
12
+ const cacheInfo = await config.getCacheContainerInfo();
13
+ if (!cacheInfo) {
14
+ stderr.write(ansis.red("🗃️ Couldn't find a configured cache container.\n"));
15
+ return 1;
16
+ }
17
+ const { name: container, cliCommand } = cacheInfo;
18
+ stdout.write(ansis.blue(`🗃️ Clearing cache in container '${container}' using the ${cliCommand} command.\n`));
19
+ args.push('exec', container, cliCommand, 'flushall');
20
+ const result = await execC(composeCommand, args, { context });
21
+ stdout.write(ansis.blue('🗃️ Cache cleared.\n'));
22
+ return result.exitCode;
23
+ }
24
+ }
25
+ CacheFlushCommand.paths = [
26
+ ['cache', 'flush'],
27
+ ['cache', 'clean'],
28
+ ['cache', 'clear'],
29
+ ];
30
+ //# sourceMappingURL=Cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Command/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,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,CAAC,iBAAiB,EAAE,CAAA;QACzD,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,14 +1,5 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { stderr } from 'node:process';
11
- import chalk from 'chalk';
2
+ import ansis from 'ansis';
12
3
  import { Option } from 'clipanion';
13
4
  import shelljs from 'shelljs';
14
5
  import * as t from 'typanion';
@@ -28,63 +19,57 @@ export class ConfigCommand extends JoltCommand {
28
19
  });
29
20
  this.commands = ['aws', 'docker', 'docker-compose', 'node', 'ssh', 'tofu', 'yarn'];
30
21
  }
31
- command() {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- const { config, format, context: { stdout }, } = this;
34
- if (format === undefined || format === ConfigCommandFormat.Pretty) {
35
- stdout.write(chalk.bold.whiteBright(this.getHeader('Config')));
36
- yield this.listCommands();
37
- stdout.write('\n');
38
- yield this.listConfig();
39
- return 0;
22
+ async command() {
23
+ const { config, format, context: { stdout }, } = this;
24
+ if (format === undefined || format === ConfigCommandFormat.Pretty) {
25
+ stdout.write(ansis.bold.whiteBright(this.getHeader('Config')));
26
+ await this.listCommands();
27
+ stdout.write('\n');
28
+ await this.listConfig();
29
+ return 0;
30
+ }
31
+ if (format === ConfigCommandFormat.Json) {
32
+ stderr.write(`${config.asJson()}\n`);
33
+ return 0;
34
+ }
35
+ stderr.write(ansis.red(`Unknown format "${format}"\n`));
36
+ return 1;
37
+ }
38
+ async listCommands() {
39
+ const { config, commands, context: { stdout }, } = this;
40
+ stdout.write(ansis.bold.blue('Commands:\n'));
41
+ for (const commandName of commands) {
42
+ const { command, source, sourceType } = config.getCommandOverride(commandName);
43
+ stdout.write(ansis.bold(`${commandName}: `));
44
+ if (which(command)) {
45
+ stdout.write(ansis.green(command));
40
46
  }
41
- if (format === ConfigCommandFormat.Json) {
42
- stderr.write(`${config.asJson()}\n`);
43
- return 0;
47
+ else {
48
+ stdout.write(ansis.red(`${command} ${ansis.bold('[Missing!]')}`));
44
49
  }
45
- stderr.write(chalk.red(`Unknown format "${format}"\n`));
46
- return 1;
47
- });
48
- }
49
- listCommands() {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- const { config, commands, context: { stdout }, } = this;
52
- stdout.write(chalk.bold.blue('Commands:\n'));
53
- for (const commandName of commands) {
54
- const { command, source, sourceType } = config.getCommandOverride(commandName);
55
- stdout.write(chalk.bold(`${commandName}: `));
56
- if (which(command)) {
57
- stdout.write(chalk.green(command));
58
- }
59
- else {
60
- stdout.write(chalk.red(`${command} ${chalk.bold('[Missing!]')}`));
61
- }
62
- let sourceString = '';
63
- switch (sourceType) {
64
- case 'env':
65
- sourceString = `[Env var: ${source}]`;
66
- break;
67
- case 'config':
68
- sourceString = `[Config: ${source}]`;
69
- break;
70
- }
71
- if (sourceString) {
72
- stdout.write(` ${chalk.gray(sourceString)}`);
73
- }
74
- stdout.write('\n');
50
+ let sourceString = '';
51
+ switch (sourceType) {
52
+ case 'env':
53
+ sourceString = `[Env var: ${source}]`;
54
+ break;
55
+ case 'config':
56
+ sourceString = `[Config: ${source}]`;
57
+ break;
75
58
  }
76
- });
77
- }
78
- listConfig() {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- const { config, context: { stdout }, } = this;
81
- const sourceString = config.configPath ? chalk.dim(`[Source file: ${config.configPath}]`) : '';
82
- stdout.write(chalk.bold.blue(`Config: ${sourceString}\n`));
83
- for (const [key, value] of config) {
84
- stdout.write(chalk.bold(`${key}: `));
85
- stdout.write(`${value}\n`);
59
+ if (sourceString) {
60
+ stdout.write(` ${ansis.gray(sourceString)}`);
86
61
  }
87
- });
62
+ stdout.write('\n');
63
+ }
64
+ }
65
+ async listConfig() {
66
+ const { config, context: { stdout }, } = this;
67
+ const sourceString = config.configPath ? ansis.dim(`[Source file: ${config.configPath}]`) : '';
68
+ stdout.write(ansis.bold.blue(`Config: ${sourceString}\n`));
69
+ for (const [key, value] of config) {
70
+ stdout.write(ansis.bold(`${key}: `));
71
+ stdout.write(`${value}\n`);
72
+ }
88
73
  }
89
74
  }
90
75
  ConfigCommand.paths = [['config']];
@@ -1 +1 @@
1
- {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Command/Config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Command/Config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ import { Option } from 'clipanion';
2
+ import JoltCommand from './JoltCommand.js';
3
+ import ansis from 'ansis';
4
+ import { execa } from 'execa';
5
+ import path from 'node:path';
6
+ import shelljs from 'shelljs';
7
+ import { delay, execC } from '../utils.js';
8
+ const { which } = shelljs;
9
+ export class DBDumpCommand extends JoltCommand {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.requiredCommands = ['docker'];
13
+ this.backup = Option.Boolean('--backup', false);
14
+ }
15
+ async command() {
16
+ const { backup, config, context: { stdout, stderr }, } = this;
17
+ const backupPath = config.get('dbBackupPath');
18
+ let filename;
19
+ let shouldGzip = backup;
20
+ if (backup) {
21
+ if (!backupPath) {
22
+ stderr.write(ansis.red('The DB backup location must be configured as dbBackupPath.\n'));
23
+ return 1;
24
+ }
25
+ const now = new Date();
26
+ const date = now
27
+ .toISOString()
28
+ .replace('T', '_')
29
+ .replace(/:/g, '-')
30
+ .replace(/\.\d+Z.*$/, '');
31
+ filename = `backup-${date}.sql`;
32
+ }
33
+ else {
34
+ const configSeed = config.get('dbSeed');
35
+ if (!configSeed) {
36
+ stderr.write(ansis.red('The DB seed location must be configured.\n'));
37
+ return 1;
38
+ }
39
+ filename = configSeed;
40
+ }
41
+ const [composeCommand, args] = config.getComposeCommand();
42
+ const containerInfo = await config.getDBContainerInfo();
43
+ if (!containerInfo) {
44
+ stderr.write(ansis.red(`Couldn't find information about database container. Try setting config explicitly.\n`));
45
+ return 2;
46
+ }
47
+ const { name: container, dumpCommand, credentials } = containerInfo;
48
+ let filePath = backup ? path.resolve(backupPath, filename) : path.resolve(filename);
49
+ if (filePath.endsWith('.gz')) {
50
+ shouldGzip = true;
51
+ filePath = filePath.replace(/\.gz$/, '');
52
+ }
53
+ stdout.write(ansis.blue(`🛢️ Dumping contents of the DB in container '${container}' to ${filePath}...\n`));
54
+ args.push('exec', container || '', dumpCommand || '', '--skip-add-drop-table', '-u', credentials.user || '', `-p${credentials.pass}`, credentials.db || '');
55
+ const result = await execa(composeCommand, args, {
56
+ buffer: { stdout: false },
57
+ stderr,
58
+ stdout: { file: filePath },
59
+ });
60
+ if (shouldGzip) {
61
+ if (which('gzip')) {
62
+ stderr.write(ansis.blue('🛢️ Gzipping file...\n'));
63
+ const gzipResult = await execa('gzip', ['--force', filePath], { stdout, stderr });
64
+ filePath = `${filePath}.gz`;
65
+ }
66
+ else {
67
+ if (backup) {
68
+ stderr.write(ansis.yellow(`🛢️ Wrote backup to ${filePath} but couldn't find gzip. Install gzip to automatically compress backups.\n`));
69
+ }
70
+ else {
71
+ stderr.write(ansis.red(`🛢️ Wrote seed to ${filePath} but gzip is missing. Install gzip to compress the DB seed.\n`));
72
+ return 2;
73
+ }
74
+ }
75
+ }
76
+ stdout.write(ansis.blue(`🛢️ Successfully dumped contents of the DB in container '${container}' to ${filePath}.\n`));
77
+ return result.exitCode;
78
+ }
79
+ }
80
+ DBDumpCommand.paths = [['db', 'dump']];
81
+ export class DBResetCommand extends JoltCommand {
82
+ constructor() {
83
+ super(...arguments);
84
+ this.requiredCommands = ['docker'];
85
+ }
86
+ async command() {
87
+ const { config, cli, context, context: { stdout, stderr }, } = this;
88
+ stdout.write(ansis.blue('🛢️ Backing up current database...\n'));
89
+ const backupResult = await cli.run(['db', 'dump', '--backup'], context);
90
+ if (backupResult > 0) {
91
+ stderr.write(ansis.red('🛢️ Failed to backup database!\n'));
92
+ return backupResult;
93
+ }
94
+ const [composeCommand, args] = await config.getComposeCommand();
95
+ stdout.write(ansis.blue('🛢️ Bringing containers down...\n'));
96
+ const dcDownResult = await execC(composeCommand, [...args, 'down'], { context });
97
+ const composeConfig = await config.getComposeConfig();
98
+ const services = composeConfig === null || composeConfig === void 0 ? void 0 : composeConfig.services;
99
+ const volumes = composeConfig === null || composeConfig === void 0 ? void 0 : composeConfig.volumes;
100
+ if (!composeConfig || !services || !volumes) {
101
+ stderr.write(ansis.red('🛢️ Failed to get compose config!\n'));
102
+ return 1;
103
+ }
104
+ const [dbConfig, cacheConfig] = await Promise.all([config.getDBContainerInfo(), config.getCacheContainerInfo()]);
105
+ const dbVolumes = (dbConfig === null || dbConfig === void 0 ? void 0 : dbConfig.service.volumes) || [];
106
+ const cacheVolumes = (cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.service.volumes) || [];
107
+ const volumesToDelete = [...dbVolumes, ...cacheVolumes]
108
+ .filter((x) => x.type === 'volume')
109
+ .map((x) => x.source || '');
110
+ const fullVolumeNames = [];
111
+ if (volumesToDelete.length > 0) {
112
+ for (const volume of volumesToDelete) {
113
+ if (!volumes[volume]) {
114
+ stderr.write(ansis.red(`🛢️ Missing volume config in compose file for volume '${volume}'!\n`));
115
+ return 2;
116
+ }
117
+ fullVolumeNames.push(volumes[volume].name);
118
+ }
119
+ stdout.write(ansis.blue(`🛢️ Deleting the following volumes: ${fullVolumeNames.join(', ')}\n`));
120
+ const volumeDeleteResult = await execC(config.command('docker'), ['volume', 'rm', ...fullVolumeNames], {
121
+ stdout: 'ignore',
122
+ stderr,
123
+ reject: false,
124
+ });
125
+ stdout.write(ansis.blue('🛢️ Deleted volumes.\n'));
126
+ }
127
+ else {
128
+ stdout.write(ansis.yellow(`🛢️ Didn't find any DB or cache volumes to delete. Maybe there's a config issue?\n`));
129
+ }
130
+ stdout.write(ansis.blue('🛢️ Bringing containers back up...\n'));
131
+ const dcUpResult = await execC(composeCommand, [...args, 'up', '--detach'], { context });
132
+ const devPlugins = config.get('devPlugins');
133
+ if (devPlugins) {
134
+ const devPluginDelay = config.get('devPluginDelay');
135
+ let delaySeconds = Number.parseFloat(devPluginDelay || '5');
136
+ if (Number.isNaN(delaySeconds)) {
137
+ stdout.write(ansis.yellow(`🛢️ Unreadable devPluginDelay config value "${devPluginDelay}". Defaulting to 5 seconds.\n`));
138
+ delaySeconds = 5;
139
+ }
140
+ if (delaySeconds > 0) {
141
+ const delayMs = delaySeconds * 1000;
142
+ stdout.write(ansis.blue(`🛢️ Waiting for ${delaySeconds} seconds for DB to populate...\n`));
143
+ await delay(delayMs);
144
+ }
145
+ stdout.write(ansis.blue('🛢️ Activating dev plugins...\n'));
146
+ await cli.run(['wp', 'plugin', 'activate', ...devPlugins.split(',').map((x) => x.trim())], context);
147
+ stdout.write(ansis.blue('🛢️ Done resetting DB!\n'));
148
+ return 0;
149
+ }
150
+ }
151
+ }
152
+ DBResetCommand.paths = [['db', 'reset']];
153
+ //# sourceMappingURL=DB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DB.js","sourceRoot":"","sources":["../../src/Command/DB.ts"],"names":[],"mappings":"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"}