@govuk-pay/cli 0.0.32 → 0.0.33

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,136 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const standardContent_js_1 = require("../core/standardContent.js");
7
- const otp_js_1 = __importDefault(require("./local/subcommands/otp.js"));
8
- const up_js_1 = __importDefault(require("./local/subcommands/up.js"));
9
- const down_js_1 = __importDefault(require("./local/subcommands/down.js"));
10
- const nuke_js_1 = __importDefault(require("./local/subcommands/nuke.js"));
11
- const restart_js_1 = __importDefault(require("./local/subcommands/restart.js"));
12
- const paymentlink_js_1 = __importDefault(require("./local/subcommands/paymentlink.js"));
13
- const url_js_1 = __importDefault(require("./local/subcommands/url.js"));
14
- const browse_js_1 = __importDefault(require("./local/subcommands/browse.js"));
15
- const db_js_1 = __importDefault(require("./local/subcommands/db.js"));
16
- const account_js_1 = __importDefault(require("./local/subcommands/account.js"));
17
- const token_js_1 = __importDefault(require("./local/subcommands/token.js"));
18
- const payment_js_1 = __importDefault(require("./local/subcommands/payment.js"));
19
- const user_js_1 = __importDefault(require("./local/subcommands/user.js"));
20
- var LocalCommand;
21
- (function (LocalCommand) {
22
- LocalCommand["OTP"] = "otp";
23
- LocalCommand["Up"] = "up";
24
- LocalCommand["Launch"] = "launch";
25
- LocalCommand["Down"] = "down";
26
- LocalCommand["Restart"] = "restart";
27
- LocalCommand["Nuke"] = "nuke";
28
- LocalCommand["PaymentLink"] = "paymentlink";
29
- LocalCommand["Browse"] = "browse";
30
- LocalCommand["Url"] = "url";
31
- LocalCommand["DB"] = "db";
32
- LocalCommand["Token"] = "token";
33
- LocalCommand["Payment"] = "payment";
34
- LocalCommand["Account"] = "account";
35
- LocalCommand["User"] = "user";
36
- LocalCommand["Help"] = "help";
37
- LocalCommand["Unknown"] = "Unknown";
38
- })(LocalCommand || (LocalCommand = {}));
39
- async function localHandler(options) {
40
- await (0, standardContent_js_1.showHeader)();
41
- const { subcommand, subcommandOptions } = parseArguments(options);
42
- switch (subcommand) {
43
- case LocalCommand.OTP: {
44
- await (0, otp_js_1.default)(subcommandOptions);
45
- break;
46
- }
47
- case LocalCommand.PaymentLink: {
48
- await (0, paymentlink_js_1.default)(subcommandOptions);
49
- break;
50
- }
51
- case LocalCommand.Browse: {
52
- await (0, browse_js_1.default)(subcommandOptions);
53
- break;
54
- }
55
- case LocalCommand.Account: {
56
- await (0, account_js_1.default)(subcommandOptions);
57
- break;
58
- }
59
- case LocalCommand.Url: {
60
- await (0, url_js_1.default)(subcommandOptions);
61
- break;
62
- }
63
- case LocalCommand.DB: {
64
- await (0, db_js_1.default)(subcommandOptions);
65
- break;
66
- }
67
- case LocalCommand.Token: {
68
- await (0, token_js_1.default)(subcommandOptions);
69
- break;
70
- }
71
- case LocalCommand.Payment: {
72
- await (0, payment_js_1.default)(subcommandOptions);
73
- break;
74
- }
75
- case LocalCommand.User: {
76
- await (0, user_js_1.default)(subcommandOptions);
77
- break;
78
- }
79
- case LocalCommand.Up: {
80
- await (0, up_js_1.default)(subcommandOptions);
81
- break;
82
- }
83
- case LocalCommand.Launch: {
84
- await (0, up_js_1.default)(subcommandOptions);
85
- break;
86
- }
87
- case LocalCommand.Down: {
88
- await (0, down_js_1.default)(subcommandOptions);
89
- break;
90
- }
91
- case LocalCommand.Restart: {
92
- await (0, restart_js_1.default)(subcommandOptions);
93
- break;
94
- }
95
- case LocalCommand.Nuke: {
96
- await (0, nuke_js_1.default)();
97
- break;
98
- }
99
- case LocalCommand.Help:
100
- case LocalCommand.Unknown: {
101
- help();
102
- break;
103
- }
104
- default: {
105
- help();
106
- break;
107
- }
108
- }
109
- }
110
- exports.default = localHandler;
111
- // TODO: Replace this with yargs
112
- function parseArguments(options) {
113
- const subcommandOptions = options.arguments;
114
- const subcommand = subcommandOptions.shift();
115
- switch (subcommand) {
116
- case LocalCommand.OTP: return { subcommand, subcommandOptions };
117
- case LocalCommand.PaymentLink: return { subcommand, subcommandOptions };
118
- case LocalCommand.Url: return { subcommand, subcommandOptions };
119
- case LocalCommand.Browse: return { subcommand, subcommandOptions };
120
- case LocalCommand.Account: return { subcommand, subcommandOptions };
121
- case LocalCommand.Up: return { subcommand, subcommandOptions };
122
- case LocalCommand.DB: return { subcommand, subcommandOptions };
123
- case LocalCommand.Token: return { subcommand, subcommandOptions };
124
- case LocalCommand.Payment: return { subcommand, subcommandOptions };
125
- case LocalCommand.User: return { subcommand, subcommandOptions };
126
- case LocalCommand.Launch: return { subcommand, subcommandOptions };
127
- case LocalCommand.Down: return { subcommand, subcommandOptions };
128
- case LocalCommand.Restart: return { subcommand, subcommandOptions };
129
- case LocalCommand.Nuke: return { subcommand, subcommandOptions };
130
- case LocalCommand.Help: return { subcommand, subcommandOptions };
131
- default: return { subcommand: LocalCommand.Unknown, subcommandOptions };
132
- }
133
- }
134
- function help() {
135
- console.error('USAGE FOLLOWS');
136
- }
3
+ exports.builder = exports.desc = exports.command = void 0;
4
+ exports.command = 'local';
5
+ exports.desc = 'Local pay for local people';
6
+ const builder = (yargs) => {
7
+ return yargs
8
+ .commandDir('local/subcommands')
9
+ .demandCommand();
10
+ };
11
+ exports.builder = builder;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.logTunnelCommands = void 0;
6
+ exports.handler = exports.builder = exports.desc = exports.command = void 0;
7
7
  const standardContent_js_1 = require("../core/standardContent.js");
8
8
  const client_ec2_1 = require("@aws-sdk/client-ec2");
9
9
  const client_ecs_1 = require("@aws-sdk/client-ecs");
@@ -24,12 +24,19 @@ const FORMAT = {
24
24
  ul: '\x1b[4m',
25
25
  ulstop: '\x1b[24m'
26
26
  };
27
- function logTunnelCommands() {
28
- console.log(`Commands:
29
- pay tunnel <ENVIRONMENT> <APP-NAME> # Open tunnel to application <APP-NAME> database in specified environment <ENVIRONMENT>
30
- pay tunnel help # Describe tunnel command`);
31
- }
32
- exports.logTunnelCommands = logTunnelCommands;
27
+ exports.command = 'tunnel <environment> <application>';
28
+ exports.desc = 'Open a tunnel to an app database in a given environment';
29
+ const builder = (yargs) => {
30
+ return yargs.positional('environment', {
31
+ describe: 'The environment to open the tunnel to',
32
+ choices: constants_js_1.ENVIRONMENTS
33
+ }).positional('application', {
34
+ describe: 'The application to connect to',
35
+ choices: constants_js_1.APPLICATIONS
36
+ });
37
+ };
38
+ exports.builder = builder;
39
+ exports.handler = tunnelHandler;
33
40
  async function readInputForReadOrWriteDBAccess() {
34
41
  const rl = promises_1.default.createInterface({
35
42
  input: process.stdin,
@@ -54,9 +61,10 @@ async function readInputForReadOrWriteDBAccess() {
54
61
  process.exit(1);
55
62
  }
56
63
  }
57
- async function tunnelHandler(options) {
64
+ async function tunnelHandler(argv) {
58
65
  await (0, standardContent_js_1.showHeader)();
59
- const { environment, application } = parseArguments(options);
66
+ const environment = argv.environment;
67
+ const application = argv.application;
60
68
  console.log(`Opening a database tunnel to ${environment} ${application}`);
61
69
  ec2 = new client_ec2_1.EC2Client();
62
70
  ecs = new client_ecs_1.ECSClient();
@@ -84,25 +92,6 @@ async function tunnelHandler(options) {
84
92
  }
85
93
  }
86
94
  exports.default = tunnelHandler;
87
- function parseArguments(options) {
88
- if (options.arguments.length !== 2 || options.arguments[0] === 'help') {
89
- logTunnelCommands();
90
- process.exit(0);
91
- }
92
- const environment = options.arguments[0];
93
- const application = options.arguments[1];
94
- if (!constants_js_1.APPLICATIONS.includes(application)) {
95
- printError(`Invalid application: "${application}". Must be one of ${constants_js_1.APPLICATIONS.join(', ')}`);
96
- process.exit(2);
97
- }
98
- if (!constants_js_1.ENVIRONMENTS.includes(environment)) {
99
- printError(`Invalid environment: "${environment}". Must be one of ${constants_js_1.ENVIRONMENTS.join(', ')}`);
100
- process.exit(2);
101
- }
102
- return {
103
- environment, application
104
- };
105
- }
106
95
  async function waitForExit() {
107
96
  const prompt = "\nTo shutdown bastion task and close tunnel type 'exit' or 'Ctrl-C'\n";
108
97
  const rl = readline_1.default.createInterface({
@@ -3,81 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const standardContent_js_1 = require("./standardContent.js");
7
- const browse_js_1 = __importDefault(require("../commands/browse.js"));
8
- const demo_js_1 = __importDefault(require("../commands/demo.js"));
9
- const legacy_1 = __importDefault(require("../commands/legacy"));
10
- const local_js_1 = __importDefault(require("../commands/local.js"));
11
- const help_1 = __importDefault(require("../commands/help"));
12
- const tunnel_js_1 = __importDefault(require("../commands/tunnel.js"));
13
6
  const package_json_1 = __importDefault(require("../../package.json"));
14
7
  const semver_1 = __importDefault(require("semver"));
15
- const handlers = new Map();
16
- handlers.set('browse', {
17
- handler: browse_js_1.default
18
- });
19
- handlers.set('tunnel', {
20
- handler: tunnel_js_1.default
21
- });
22
- handlers.set('legacy', {
23
- handler: legacy_1.default
24
- });
25
- handlers.set('doctor', {
26
- handler: legacy_1.default
27
- });
28
- handlers.set('help', {
29
- handler: help_1.default
30
- });
31
- handlers.set('local', {
32
- handler: legacy_1.default
33
- });
34
- handlers.set('localx', {
35
- handler: local_js_1.default
36
- });
37
- handlers.set('schema', {
38
- handler: legacy_1.default
39
- });
40
- handlers.set('secrets', {
41
- handler: legacy_1.default
42
- });
43
- handlers.set('demo', {
44
- handler: demo_js_1.default
45
- });
8
+ const yargs_1 = __importDefault(require("yargs/yargs"));
9
+ const helpers_1 = require("yargs/helpers");
46
10
  async function runCommand() {
47
- const command = process.argv[2];
48
11
  await checkVersion();
49
- await showUsageIfNoCommand(command);
50
- const commandDetails = await getCommandDetails(command);
51
- if (commandDetails === undefined) {
52
- console.error(`No command found for [${command}]`);
53
- process.exit(10);
54
- }
55
- await runHandler(command, commandDetails);
12
+ const yargsInstance = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv));
13
+ await yargsInstance
14
+ .commandDir('../commands', { exclude: /.*\.spec\..*/ })
15
+ .demandCommand()
16
+ .usage('pay <command>\n\nProvides usefull commands for managing and developing the GOV.UK Pay platform. Use `pay <command> help` to find more information on an individual pay command.')
17
+ .strict()
18
+ .help()
19
+ .wrap(yargsInstance.terminalWidth())
20
+ .parse();
56
21
  }
57
22
  exports.default = runCommand;
58
- async function getCommandDetails(commandName) {
59
- return handlers.get(commandName);
60
- }
61
- async function showUsageIfNoCommand(commandName) {
62
- if (commandName === undefined || commandName.trim() === '') {
63
- await (0, standardContent_js_1.showHeader)();
64
- await (0, standardContent_js_1.showUsage)();
65
- process.exit(2);
66
- }
67
- }
68
- async function runHandler(commandName, commandHandler) {
69
- try {
70
- await commandHandler.handler({
71
- commandName,
72
- arguments: process.argv.slice(3)
73
- });
74
- }
75
- catch (e) {
76
- console.error(`Failed to run command [${commandName}]`);
77
- console.error(e);
78
- process.exit(12);
79
- }
80
- }
81
23
  async function checkVersion() {
82
24
  try {
83
25
  const { version: currentVersion, engines: { node: requiredNodeVersion } } = package_json_1.default;
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.showUsage = exports.showHeader = void 0;
26
+ exports.showHeader = void 0;
27
27
  const fsp = __importStar(require("fs/promises"));
28
28
  const path = __importStar(require("path"));
29
29
  const constants_js_1 = require("./constants.js");
@@ -31,7 +31,3 @@ async function showHeader() {
31
31
  console.log(await fsp.readFile(path.join(constants_js_1.rootDir, 'resources/header.txt'), 'utf8'));
32
32
  }
33
33
  exports.showHeader = showHeader;
34
- async function showUsage() {
35
- console.log(await fsp.readFile(path.join(constants_js_1.rootDir, 'resources/usageDetails.txt'), 'utf8'));
36
- }
37
- exports.showUsage = showUsage;
@@ -1,9 +0,0 @@
1
- Commands:
2
- pay browse # Opens web browser link to useful links
3
- pay doctor # Attempts to initialise or fix the Pay CLI
4
- pay help [COMMAND] # Describe available commands or one specific ...
5
- pay local # Sets up local Pay development environment
6
- pay localx # EXPERIMENTAL: Nodejs replacement of `pay local`
7
- pay schema # Generates web based database diagrams and me...
8
- pay secrets # Manage secrets in and between environments
9
- pay tunnel # Open tunnel to application database
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const legacy_1 = require("./legacy");
4
- const standardContent_1 = require("../core/standardContent");
5
- const browse_1 = require("./browse");
6
- async function helpHandler(options) {
7
- if (options.arguments[0] === 'browse') {
8
- await (0, standardContent_1.showHeader)();
9
- (0, browse_1.logBrowseCommands)();
10
- }
11
- else {
12
- await (0, legacy_1.proxyHandlerOptionsToLegacyCli)(options);
13
- }
14
- }
15
- exports.default = helpHandler;