@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 +3 -3
- package/dist/bin/vip-dev-env-exec.js +1 -1
- package/dist/bin/vip-export-sql.js +8 -5
- package/dist/bin/vip-export.js +1 -1
- package/dist/bin/vip-import-sql-status.js +2 -1
- package/dist/bin/vip-import-sql.js +4 -1
- package/dist/bin/vip-validate-preflight.js +1 -1
- package/dist/bin/vip.js +1 -1
- package/dist/commands/backup-db.js +1 -1
- package/dist/commands/dev-env-import-sql.js +1 -1
- package/dist/commands/export-sql.js +2 -2
- package/dist/lib/dev-environment/dev-environment-cli.js +20 -49
- package/dist/lib/dev-environment/dev-environment-lando.js +2 -2
- package/dist/lib/site-import/status.js +5 -3
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/CHANGELOG.md +43 -0
- package/docs/SETUP.md +2 -2
- package/npm-shrinkwrap.json +162 -281
- package/package.json +6 -6
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
|
|
18
|
-
-
|
|
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
|
|
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
|
|
10
|
-
description: '
|
|
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
|
|
13
|
-
description: '
|
|
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', '
|
|
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,
|
package/dist/bin/vip-export.js
CHANGED
|
@@ -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', '
|
|
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
|
});
|
|
@@ -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 ${
|
|
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/
|
|
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
|
|
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/
|
|
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
|
|
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/
|
|
318
|
-
|
|
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
|
|
110
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
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
|
|
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/
|
|
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 &&
|
|
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/
|
|
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(() => {
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -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/
|
|
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/
|
|
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/
|
|
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
|
|