@automattic/vip 2.38.3 → 2.39.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.
package/README.md CHANGED
@@ -14,7 +14,7 @@ VIP-CLI is a tool for interacting with and managing your [WordPress VIP applicat
14
14
 
15
15
  ## Further information
16
16
 
17
- - In the [WordPress VIP Lobby](https://lobby.vip.wordpress.com/) find announcements related to the [CLI](https://lobby.vip.wordpress.com/?s=vip-cli) and [API](https://lobby.vip.wordpress.com/?s=vip%20go%20api).
18
- - The [WordPress VIP Documentation](https://docs.wpvip.com/) has instructions related to the [CLI](https://docs.wpvip.com/technical-references/vip-cli/).
17
+ - In the [WordPress VIP Lobby](https://lobby.vip.wordpress.com/) find announcements related to [VIP-CLI](https://lobby.vip.wordpress.com/?s=vip-cli) and [API](https://lobby.vip.wordpress.com/?s=vip%20go%20api).
18
+ - Find instructions for using [VIP-CLI](https://docs.wpvip.com/vip-cli/) in [WordPress VIP's Documentation](https://docs.wpvip.com/).
19
19
  - [Changelog](https://github.com/Automattic/vip-cli/blob/trunk/docs/CHANGELOG.md) file for VIP-CLI is available.
20
- - [VIP Cloud Changelog](https://wpvipchangelog.wordpress.com/) logs changes to the [CLI](https://wpvipchangelog.wordpress.com/?s=cli) and other aspects of the platform.
20
+ - [VIP Cloud Changelog](https://wpvipchangelog.wordpress.com/) logs changes to the [VIP-CLI](https://wpvipchangelog.wordpress.com/?s=cli) and other aspects of the platform.
@@ -24,7 +24,7 @@ const examples = [{
24
24
  }).option('slug', 'Custom name of the dev environment', undefined, _devEnvironmentCli.processSlug).option('force', 'Disable validations before task execution', undefined, _devEnvironmentCli.processBooleanOption).option('quiet', 'Suppress output', undefined, _devEnvironmentCli.processBooleanOption).examples(examples).argv(process.argv, async (unmatchedArgs, opt) => {
25
25
  const slug = await (0, _devEnvironmentCli.getEnvironmentName)(opt);
26
26
  const lando = await (0, _devEnvironmentLando.bootstrapLando)();
27
- await (0, _devEnvironmentCli.validateDependencies)(lando, slug, opt.quiet);
27
+ await (0, _devEnvironmentCli.validateDependencies)(lando, slug);
28
28
  const trackingInfo = (0, _devEnvironmentCli.getEnvTrackingInfo)(slug);
29
29
  await (0, _tracker.trackEvent)('dev_env_exec_command_execute', trackingInfo);
30
30
  try {
@@ -6,11 +6,14 @@ var _command = _interopRequireDefault(require("../lib/cli/command"));
6
6
  var _tracker = require("../lib/tracker");
7
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
8
  const examples = [{
9
- usage: 'vip export sql @mysite.develop',
10
- description: 'Export SQL file from your site and save it to the current directory'
9
+ usage: 'vip @example-app.develop export sql',
10
+ description: 'Download an archived copy of the most recent database backup for an environment to the current local directory.'
11
11
  }, {
12
- usage: 'vip export sql @mysite.develop --output=~/Desktop/export.sql.gz',
13
- description: 'The output file can be specified with the --output flag'
12
+ usage: 'vip @example-app.develop export sql --output=~/Desktop/export.sql.gz',
13
+ description: 'Download an archived copy of the most recent database backup for an environment to a specific file path.'
14
+ }, {
15
+ usage: 'vip @example-app.develop export sql --generate-backup',
16
+ description: 'Generate a fresh database backup for an environment and download a copy of that backup.'
14
17
  }];
15
18
  const appQuery = `
16
19
  id,
@@ -33,7 +36,7 @@ const appQuery = `
33
36
  module: 'export-sql',
34
37
  requiredArgs: 0,
35
38
  usage: 'vip export sql'
36
- }).option('output', 'Specify the location where you want to save the export file').option('generate-backup', 'Exports a freshly created database backup instead of using the latest existing one').examples(examples).argv(process.argv, async (arg, {
39
+ }).option('output', 'Download the file to a specific local directory path with a custom file name.').option('generate-backup', 'Generate a fresh database backup and export a copy of that backup.').examples(examples).argv(process.argv, async (arg, {
37
40
  app,
38
41
  env,
39
42
  output,
@@ -4,6 +4,6 @@
4
4
  var _command = _interopRequireDefault(require("../lib/cli/command"));
5
5
  var _tracker = require("../lib/tracker");
6
6
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
- (0, _command.default)().command('sql', 'Export the contents of your database to an SQL file').example('vip export sql @mysite.develop', 'Export the contents of your database to an SQL file').argv(process.argv, async () => {
7
+ (0, _command.default)().command('sql', 'Generate a copy of a database backup for an environment and download it as an archived SQL file.').example('vip @example-app.develop export sql', 'Download a copy of the most recent database backup for an environment as an archived SQL file to the current local directory.').argv(process.argv, async () => {
8
8
  await (0, _tracker.trackEvent)('vip_export_command_execute');
9
9
  });
@@ -56,6 +56,7 @@ Checking the SQL import status for your environment...
56
56
  await (0, _status.importSqlCheckStatus)({
57
57
  app,
58
58
  env,
59
- progressTracker
59
+ progressTracker,
60
+ shouldReturnMissingJobImmediately: true
60
61
  });
61
62
  });
@@ -215,14 +215,16 @@ const promptToContinue = async ({
215
215
  formattedEnvironment,
216
216
  track,
217
217
  domain,
218
+ isMultiSite,
218
219
  tableNames
219
220
  }) => {
220
221
  console.log();
221
222
  const promptToMatch = domain.toUpperCase();
223
+ const source = !isMultiSite && tableNames?.length ? 'the above tables' : 'the above file';
222
224
  const promptResponse = await (0, _enquirer.prompt)({
223
225
  type: 'input',
224
226
  name: 'confirmedDomain',
225
- message: `You are about to import ${tableNames && Array.isArray(tableNames) && tableNames.length ? 'above tables' : ''} into a ${launched ? 'launched' : 'un-launched'} ${formattedEnvironment} site ${_chalk.default.yellow(domain)}.\nType '${_chalk.default.yellow(promptToMatch)}' (without the quotes) to continue:\n`
227
+ message: `You are about to import ${source} into a ${launched ? 'launched' : 'un-launched'} ${formattedEnvironment} site ${_chalk.default.yellow(domain)}.\nType '${_chalk.default.yellow(promptToMatch)}' (without the quotes) to continue:\n`
226
228
  });
227
229
  if (promptResponse.confirmedDomain.toUpperCase() !== promptToMatch) {
228
230
  await track('import_sql_unexpected_tables');
@@ -398,6 +400,7 @@ void (0, _command.default)({
398
400
  formattedEnvironment,
399
401
  track,
400
402
  domain,
403
+ isMultiSite,
401
404
  tableNames
402
405
  });
403
406
 
@@ -92,7 +92,7 @@ async function getBuildConfiguration(application, environment) {
92
92
  return result.data.app.environments[0].buildConfiguration;
93
93
  } catch (error) {
94
94
  if (error.graphQLErrors && error.graphQLErrors.find(gqlError => gqlError.message === 'Unauthorized')) {
95
- console.log(`${_chalk.default.red('Error:')} You don't have the required permissions to run validations for this environment.\n` + `You must be either be an admin of the ${_chalk.default.bold.underline(application.organization.name)} organization, or, alternatively,\n` + `a guest of that organization and an admin of the ${_chalk.default.bold.underline(application.name)} application.\n\n` + 'You can read more about organization and application roles on our documentation:\n' + _chalk.default.underline('https://docs.wpvip.com/technical-references/enterprise-authentication/'));
95
+ console.log(`${_chalk.default.red('Error:')} You don't have the required permissions to run validations for this environment.\n` + `You must be either be an admin of the ${_chalk.default.bold.underline(application.organization.name)} organization, or, alternatively,\n` + `a guest of that organization and an admin of the ${_chalk.default.bold.underline(application.name)} application.\n\n` + 'You can read more about organization and application roles on our documentation:\n' + _chalk.default.underline('https://docs.wpvip.com/manage-user-access/vip-dashboard/'));
96
96
  await (0, _tracker.trackEvent)('validate_preflight_command_error', {
97
97
  env_id: environment.id,
98
98
  app_id: environment.appId,
package/dist/bin/vip.js CHANGED
@@ -22,7 +22,7 @@ const tokenURL = 'https://dashboard.wpvip.com/me/cli/token';
22
22
  const customDeployToken = process.env.WPVIP_DEPLOY_TOKEN;
23
23
  const runCmd = async function () {
24
24
  const cmd = (0, _command.default)();
25
- cmd.command('logout', 'Logout from your current session').command('app', 'List and modify your VIP applications').command('backup', 'Generate a backup for VIP applications').command('cache', 'Manage page cache for your VIP applications').command('config', 'Set configuration for your VIP applications').command('dev-env', 'Use local dev-environment').command('export', 'Export data from your VIP application').command('import', 'Import media or SQL files into your VIP applications').command('logs', 'Get logs from your VIP applications').command('search-replace', 'Perform search and replace tasks on files').command('slowlogs', 'Get slowlogs from your VIP applications').command('db', 'Run operations on your VIP application database').command('sync', 'Sync production to a development environment').command('whoami', 'Display details about the currently logged-in user').command('validate', 'Validate your VIP application and environment').command('wp', 'Run WP CLI commands against an environment');
25
+ cmd.command('logout', 'Logout from your current session').command('app', 'List and modify your VIP applications').command('backup', 'Generate a backup for VIP applications').command('cache', 'Manage page cache for your VIP applications').command('config', 'Set configuration for your VIP applications').command('dev-env', 'Use local dev-environment').command('export', 'Export a copy of data associated with an environment.').command('import', 'Import media or SQL files into your VIP applications').command('logs', 'Get logs from your VIP applications').command('search-replace', 'Perform search and replace tasks on files').command('slowlogs', 'Get slowlogs from your VIP applications').command('db', 'Run operations on your VIP application database').command('sync', 'Sync production to a development environment').command('whoami', 'Display details about the currently logged-in user').command('validate', 'Validate your VIP application and environment').command('wp', 'Run WP CLI commands against an environment');
26
26
  cmd.argv(process.argv);
27
27
  };
28
28
 
@@ -162,7 +162,7 @@ class BackupDBCommand {
162
162
  const errMessage = `A new database backup was not generated because a recently generated backup already exists.
163
163
  If you would like to run the same command, you can retry in ${(0, _format.formatDuration)(new Date(), new Date(retryAfter))}
164
164
  Alternatively, you can export the latest existing database backup by running: ${_chalk.default.green('vip @app.env export sql')}, right away.
165
- Learn more about limitations around generating database backups: https://docs.wpvip.com/technical-references/vip-dashboard/backups/#0-limitations
165
+ Learn more about limitations around generating database backups: https://docs.wpvip.com/databases/backups/limitations/
166
166
  `;
167
167
  exit.withError(errMessage);
168
168
  }
@@ -26,7 +26,7 @@ class DevEnvImportSQLCommand {
26
26
  }
27
27
  async run() {
28
28
  const lando = await (0, _devEnvironmentLando.bootstrapLando)();
29
- await (0, _devEnvironmentCli.validateDependencies)(lando, this.slug, this.options.quiet);
29
+ await (0, _devEnvironmentCli.validateDependencies)(lando, this.slug);
30
30
  (0, _sql.validateImportFileExtension)(this.fileName);
31
31
 
32
32
  // Check if file is compressed and if so, extract the
@@ -314,8 +314,8 @@ class ExportSQLCommand {
314
314
  const cmd = new _backupDb.BackupDBCommand(this.app, this.env);
315
315
  let noticeMessage = `\n${_chalk.default.yellow('NOTICE: ')}`;
316
316
  noticeMessage += 'If a recent database backup does not exist, a new one will be generated for this environment. ';
317
- noticeMessage += 'Learn more about this: https://docs.wpvip.com/technical-references/vip-dashboard/backups/#2-download-a-full-database-backup \n';
318
- this.log(noticeMessage);
317
+ noticeMessage += 'Learn more about this: https://docs.wpvip.com/databases/backups/download-a-full-database-backup/ \n';
318
+ console.log(noticeMessage);
319
319
  await cmd.run(false);
320
320
  }
321
321
  async confirmEnoughStorage(job) {
@@ -41,7 +41,6 @@ var _shelljs = require("shelljs");
41
41
  var _devEnvironmentConfigurationFile = require("./dev-environment-configuration-file");
42
42
  var _devEnvironmentCore = require("./dev-environment-core");
43
43
  var _devEnvironmentLando = require("./dev-environment-lando");
44
- var _progress = require("../../lib/cli/progress");
45
44
  var _devEnvironment = require("../constants/dev-environment");
46
45
  var _tracker = require("../tracker");
47
46
  var _userError = _interopRequireDefault(require("../user-error"));
@@ -102,63 +101,35 @@ async function handleCLIException(exception, trackKey, trackBaseInfo = {}) {
102
101
  const verifyDNSResolution = async slug => {
103
102
  const expectedIP = '127.0.0.1';
104
103
  const testDomain = `${slug}.vipdev.lndo.site`;
105
- const advice = `Please add following line to hosts file on your system:\n${expectedIP} ${testDomain}`;
104
+ const advice = `Please add following line to hosts file on your system:\n\n${expectedIP} ${testDomain}\n\nLearn more: https://docs.wpvip.com/vip-local-development-environment/troubleshooting-dev-env/#h-resolve-networking-configuration-issues\n`;
106
105
  debug(`Verifying DNS resolution for ${testDomain}`);
107
- let address;
108
106
  try {
109
- address = await (0, _promises.lookup)(testDomain, 4);
110
- debug(`Got DNS response ${address.address}`);
107
+ let address;
108
+ try {
109
+ address = await (0, _promises.lookup)(testDomain, 4);
110
+ debug(`Got DNS response ${address.address}`);
111
+ } catch (error) {
112
+ throw new _userError.default(`DNS resolution for ${testDomain} failed.`, {
113
+ cause: error
114
+ });
115
+ }
116
+ if (address.address !== expectedIP) {
117
+ throw new _userError.default(`DNS resolution for ${testDomain} returned unexpected IP ${address.address}. Expected value is ${expectedIP}.`);
118
+ }
111
119
  } catch (error) {
112
- throw new _userError.default(`DNS resolution for ${testDomain} failed. ${advice}`, {
113
- cause: error
114
- });
115
- }
116
- if (address.address !== expectedIP) {
117
- throw new _userError.default(`DNS resolution for ${testDomain} returned unexpected IP ${address.address}. Expected value is ${expectedIP}. ${advice}`);
120
+ if (error instanceof _userError.default) {
121
+ console.warn(_chalk.default.yellow.bold('Warning:'), `${error.message}\n\n${advice}`);
122
+ } else {
123
+ throw error;
124
+ }
118
125
  }
119
126
  };
120
- const VALIDATION_STEPS = [{
121
- id: 'docker',
122
- name: 'Check for Docker installation'
123
- }, {
124
- id: 'compose',
125
- name: 'Check for docker-compose installation'
126
- }, {
127
- id: 'access',
128
- name: 'Check Docker connectivity'
129
- }, {
130
- id: 'dns',
131
- name: 'Check DNS resolution'
132
- }];
133
- const validateDependencies = async (lando, slug, quiet) => {
127
+ const validateDependencies = async (lando, slug) => {
134
128
  const now = new Date();
135
- const steps = slug ? VALIDATION_STEPS : VALIDATION_STEPS.filter(step => step.id !== 'dns');
136
- const progressTracker = new _progress.ProgressTracker(steps);
137
- if (!quiet) {
138
- console.log('Running validation steps...');
139
- progressTracker.startPrinting();
140
- progressTracker.stepRunning('docker');
141
- }
142
129
  (0, _devEnvironmentLando.validateDockerInstalled)(lando);
143
- if (!quiet) {
144
- progressTracker.stepSuccess('docker');
145
- progressTracker.stepSuccess('compose');
146
- progressTracker.print();
147
- }
148
130
  await (0, _devEnvironmentLando.validateDockerAccess)(lando);
149
- if (!quiet) {
150
- progressTracker.stepSuccess('access');
151
- progressTracker.print();
152
- }
153
131
  if (slug) {
154
132
  await verifyDNSResolution(slug);
155
- if (!quiet) {
156
- progressTracker.stepSuccess('dns');
157
- progressTracker.print();
158
- }
159
- }
160
- if (!quiet) {
161
- progressTracker.stopPrinting();
162
133
  }
163
134
  const duration = new Date().getTime() - now.getTime();
164
135
  debug('Validation checks completed in %d ms', duration);
@@ -390,7 +361,7 @@ function validateLocalPath(component, providedPath) {
390
361
  }
391
362
  if (missingFiles.length > 0) {
392
363
  // eslint-disable-next-line max-len
393
- const message = `Provided path "${providedPath}" is missing following files/folders: ${missingFiles.join(', ')}. Learn more: https://docs.wpvip.com/technical-references/vip-codebase/#1-wordpress`;
364
+ const message = `Provided path "${providedPath}" is missing following files/folders: ${missingFiles.join(', ')}. Learn more: https://docs.wpvip.com/wordpress-skeleton/`;
394
365
  return {
395
366
  result: false,
396
367
  message
@@ -247,7 +247,7 @@ async function getBridgeNetwork(lando) {
247
247
  }
248
248
  async function cleanUpLandoProxy(lando) {
249
249
  const network = await getBridgeNetwork(lando);
250
- if (network?.Containers && !Object.keys(network.Containers).length) {
250
+ if (network?.Containers && Object.keys(network.Containers).length === 1) {
251
251
  const proxy = lando.engine.docker.getContainer(lando.config.proxyContainer);
252
252
  try {
253
253
  await proxy.remove({
@@ -329,7 +329,7 @@ async function landoInfo(lando, instancePath, options = {}) {
329
329
  }
330
330
 
331
331
  // Add documentation link
332
- appInfo.Documentation = 'https://docs.wpvip.com/technical-references/vip-local-development-environment/';
332
+ appInfo.Documentation = 'https://docs.wpvip.com/vip-local-development-environment/';
333
333
  return appInfo;
334
334
  } finally {
335
335
  const duration = new Date().getTime() - started.getTime();
@@ -144,7 +144,8 @@ The server said:
144
144
  async function importSqlCheckStatus({
145
145
  app,
146
146
  env,
147
- progressTracker
147
+ progressTracker,
148
+ shouldReturnMissingJobImmediately = false // we want to return fast only if we're checking the status via `vip import job status`
148
149
  }) {
149
150
  // Stop printing so we can pass our callback
150
151
  progressTracker.stopPrinting();
@@ -210,18 +211,19 @@ ${maybeExitPrompt}
210
211
  importStatus,
211
212
  launched
212
213
  } = status;
214
+ // we want the "vip import job status" command to fail fast if we have no import job.
215
+ const isMissingImportJobAndShouldReturnFast = !status.importJob && shouldReturnMissingJobImmediately;
213
216
  let {
214
217
  importJob
215
218
  } = status;
216
219
  let jobStatus;
217
220
  let jobSteps = [];
218
- if (env.isK8sResident) {
221
+ if (env.isK8sResident && !isMissingImportJobAndShouldReturnFast) {
219
222
  // in the future the API may provide this in k8s jobs so account for that.
220
223
  // Until then we need to create the importJob from the status object.
221
224
  if (!importJob) {
222
225
  importJob = {};
223
226
  const statusSteps = importStatus?.progress?.steps;
224
-
225
227
  // if the progress meta isn't filled out yet, wait until it is.
226
228
  if (!statusSteps) {
227
229
  return setTimeout(() => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Basic functionality
4
4
 
5
- This is a CLI for interacting with and managing your [WordPress VIP applications](https://docs.wpvip.com/technical-references/vip-cli/). Data is inputted and outputted via terminal to the [API offered by WordPress VIP](#communicating-with-wpvip-api) and to/from local filesystem.
5
+ This is a CLI for interacting with and managing your [WordPress VIP applications](https://docs.wpvip.com/vip-cli/). Data is inputted and outputted via terminal to the [API offered by WordPress VIP](#communicating-with-wpvip-api) and to/from local filesystem.
6
6
 
7
7
  For configuration, a few [environmental variables](SETUP.md#environmental-variables) are used and some [configuration files](SETUP.md#configuration-files) as well. No [database](#database) is required.
8
8
 
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  ## Changelog
2
2
 
3
+ ### 2.39.1
4
+
5
+ - Fix a crash due to an undefined function when running `export sql` with the `--generate-backup` flag by @noahtallen in https://github.com/Automattic/vip-cli/pull/1769
6
+ - refactor(dev-env): reduce noise from preflight checks by @sjinks in https://github.com/Automattic/vip-cli/pull/1758
7
+
8
+ ### 2.39.0
9
+
10
+ * Updated Docs URLs to current permalinks by @yolih in https://github.com/Automattic/vip-cli/pull/1742
11
+ * Updated the export command group according to VIP-CLI style guide by @yolih in https://github.com/Automattic/vip-cli/pull/1741
12
+ * build(deps-dev): bump @types/node from 18.19.26 to 18.19.28 by @dependabot in https://github.com/Automattic/vip-cli/pull/1747
13
+ * ci: add dependency review workflow by @sjinks in https://github.com/Automattic/vip-cli/pull/1750
14
+ * test: fix E2E tests for composer v2 by @sjinks in https://github.com/Automattic/vip-cli/pull/1752
15
+ * ci: install docker-compose by @sjinks in https://github.com/Automattic/vip-cli/pull/1751
16
+ * build(deps): bump cli-table3 from 0.6.3 to 0.6.4 by @dependabot in https://github.com/Automattic/vip-cli/pull/1739
17
+ * Make "importSQLCheckStatus" return immediately when called from the `vip import sql status` command and no import is running by @andrea-sdl in https://github.com/Automattic/vip-cli/pull/1722
18
+ * fix(dev-env): regression: stop proxy when there are no running envs by @sjinks in https://github.com/Automattic/vip-cli/pull/1738
19
+ * Fixes text so that it doesn't reference "the above tables" when tables are not displayed by @brunobasto in https://github.com/Automattic/vip-cli/pull/1731
20
+ * build(deps): bump fetch-retry from 5.0.6 to 6.0.0 by @dependabot in https://github.com/Automattic/vip-cli/pull/1730
21
+ * build(deps): bump ini from 4.1.1 to 4.1.2 by @dependabot in https://github.com/Automattic/vip-cli/pull/1717
22
+ * chore(deps): update lando by @sjinks in https://github.com/Automattic/vip-cli/pull/1753
23
+
24
+ **Full Changelog**: https://github.com/Automattic/vip-cli/compare/2.38.3...2.39.0
25
+
26
+ ### 2.38.3
27
+
28
+ * Fix triggering publish docs workflow on tag push by @seanlanglands in https://github.com/Automattic/vip-cli/pull/1716
29
+ * build(deps-dev): bump nock from 13.5.3 to 13.5.4 by @dependabot in https://github.com/Automattic/vip-cli/pull/1708
30
+ * build(deps-dev): bump @types/node from 18.19.18 to 18.19.21 by @dependabot in https://github.com/Automattic/vip-cli/pull/1715
31
+ * build(deps-dev): bump the babel group with 2 updates by @dependabot in https://github.com/Automattic/vip-cli/pull/1709
32
+ * vip app deploy - Allow passing in a deploy key with env variable by @rebeccahum in https://github.com/Automattic/vip-cli/pull/1718
33
+ * build(deps-dev): bump typescript from 5.3.3 to 5.4.2 by @dependabot in https://github.com/Automattic/vip-cli/pull/1721
34
+ * build(deps-dev): bump @types/node from 18.19.21 to 18.19.22 by @dependabot in https://github.com/Automattic/vip-cli/pull/1720
35
+ * build(deps-dev): bump @types/dockerode from 3.3.24 to 3.3.26 by @dependabot in https://github.com/Automattic/vip-cli/pull/1724
36
+ * build(deps): bump open from 10.0.4 to 10.1.0 by @dependabot in https://github.com/Automattic/vip-cli/pull/1725
37
+ * Allows user to continue even when the answer doesn't match the expected letter casing by @brunobasto in https://github.com/Automattic/vip-cli/pull/1632
38
+ * build(deps-dev): bump the babel group with 4 updates by @dependabot in https://github.com/Automattic/vip-cli/pull/1734
39
+ * build(deps-dev): bump @types/node from 18.19.22 to 18.19.26 by @dependabot in https://github.com/Automattic/vip-cli/pull/1733
40
+ * build(deps-dev): bump typescript from 5.4.2 to 5.4.3 by @dependabot in https://github.com/Automattic/vip-cli/pull/1735
41
+ * build(deps): bump socket.io-client from 4.7.4 to 4.7.5 by @dependabot in https://github.com/Automattic/vip-cli/pull/1729
42
+ * Update SQL import prompt message by @iamchughmayank in https://github.com/Automattic/vip-cli/pull/1743
43
+
44
+ **Full Changelog**: https://github.com/Automattic/vip-cli/compare/2.38.2...2.38.3
45
+
3
46
  ### 2.38.2
4
47
 
5
48
  * New develop release: 2.38.2-dev.0 by @github-actions in https://github.com/Automattic/vip-cli/pull/1697
package/docs/SETUP.md CHANGED
@@ -25,7 +25,7 @@ Then, launch the command and follow the prompts:
25
25
  vip
26
26
  ```
27
27
 
28
- If you need more information, check out our [VIP-CLI documentation](https://docs.wpvip.com/technical-references/vip-cli/).
28
+ If you need more information, check out our [VIP-CLI documentation](https://docs.wpvip.com/vip-cli/).
29
29
 
30
30
  ### Installation for developers
31
31
 
@@ -73,7 +73,7 @@ To start the software locally, run:
73
73
  vip
74
74
  ```
75
75
 
76
- If you need more information, check out our [VIP-CLI documentation](https://docs.wpvip.com/technical-references/vip-cli/).
76
+ If you need more information, check out our [VIP-CLI documentation](https://docs.wpvip.com/vip-cli/).
77
77
 
78
78
  ### Analytics
79
79