@automattic/vip 2.21.0 → 2.23.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.
- package/CHANGELOG.md +23 -0
- package/assets/dev-env.lando.template.yml.ejs +1 -1
- package/automattic-vip-2.23.0.tgz +0 -0
- package/dist/bin/vip-app-list.js +0 -12
- package/dist/bin/vip-app.js +6 -13
- package/dist/bin/vip-cache-purge-url.js +4 -19
- package/dist/bin/vip-cache.js +0 -2
- package/dist/bin/vip-config-envvar-delete.js +4 -19
- package/dist/bin/vip-config-envvar-get-all.js +6 -19
- package/dist/bin/vip-config-envvar-get.js +4 -15
- package/dist/bin/vip-config-envvar-list.js +8 -20
- package/dist/bin/vip-config-envvar-set.js +4 -23
- package/dist/bin/vip-config-envvar.js +0 -2
- package/dist/bin/vip-config-software-get.js +0 -17
- package/dist/bin/vip-config-software-update.js +6 -22
- package/dist/bin/vip-config-software.js +0 -2
- package/dist/bin/vip-config.js +0 -2
- package/dist/bin/vip-dev-env-create.js +0 -18
- package/dist/bin/vip-dev-env-destroy.js +0 -9
- package/dist/bin/vip-dev-env-exec.js +0 -12
- package/dist/bin/vip-dev-env-import-media.js +0 -7
- package/dist/bin/vip-dev-env-import-sql.js +2 -17
- package/dist/bin/vip-dev-env-import.js +0 -3
- package/dist/bin/vip-dev-env-info.js +0 -10
- package/dist/bin/vip-dev-env-list.js +0 -7
- package/dist/bin/vip-dev-env-start.js +4 -14
- package/dist/bin/vip-dev-env-stop.js +0 -9
- package/dist/bin/vip-dev-env-update.js +0 -11
- package/dist/bin/vip-dev-env.js +0 -2
- package/dist/bin/vip-import-media-abort.js +0 -18
- package/dist/bin/vip-import-media-status.js +0 -12
- package/dist/bin/vip-import-media.js +6 -23
- package/dist/bin/vip-import-sql-status.js +0 -12
- package/dist/bin/vip-import-sql.js +40 -103
- package/dist/bin/vip-import-validate-files.js +21 -42
- package/dist/bin/vip-import-validate-sql.js +0 -8
- package/dist/bin/vip-import.js +0 -3
- package/dist/bin/vip-logs.js +20 -50
- package/dist/bin/vip-search-replace.js +8 -14
- package/dist/bin/vip-sync.js +2 -25
- package/dist/bin/vip-validate-preflight.js +427 -0
- package/dist/bin/vip-validate.js +19 -0
- package/dist/bin/vip-whoami.js +2 -14
- package/dist/bin/vip-wp.js +39 -89
- package/dist/bin/vip.js +5 -35
- package/dist/lib/analytics/clients/pendo.js +9 -18
- package/dist/lib/analytics/clients/stub.js +1 -3
- package/dist/lib/analytics/clients/tracks.js +11 -20
- package/dist/lib/analytics/index.js +4 -11
- package/dist/lib/api/app.js +1 -11
- package/dist/lib/api/cache-purge.js +4 -7
- package/dist/lib/api/feature-flags.js +1 -4
- package/dist/lib/api/http.js +9 -15
- package/dist/lib/api/user.js +1 -7
- package/dist/lib/api.js +17 -19
- package/dist/lib/app-logs/app-logs.js +2 -9
- package/dist/lib/app.js +2 -5
- package/dist/lib/cli/apiConfig.js +4 -19
- package/dist/lib/cli/command.js +43 -133
- package/dist/lib/cli/config.js +1 -5
- package/dist/lib/cli/envAlias.js +14 -15
- package/dist/lib/cli/exit.js +4 -6
- package/dist/lib/cli/format.js +8 -50
- package/dist/lib/cli/progress.js +13 -42
- package/dist/lib/cli/prompt.js +1 -5
- package/dist/lib/cli/repo.js +7 -20
- package/dist/lib/client-file-uploader.js +44 -97
- package/dist/lib/config/software.js +2 -52
- package/dist/lib/constants/dev-environment.js +1 -2
- package/dist/lib/constants/file-size.js +1 -1
- package/dist/lib/constants/vipgo.js +1 -1
- package/dist/lib/dev-environment/dev-environment-cli.js +68 -155
- package/dist/lib/dev-environment/dev-environment-core.js +73 -194
- package/dist/lib/dev-environment/dev-environment-lando.js +16 -71
- package/dist/lib/env.js +1 -4
- package/dist/lib/envvar/api-delete.js +1 -4
- package/dist/lib/envvar/api-get-all.js +1 -4
- package/dist/lib/envvar/api-get.js +1 -2
- package/dist/lib/envvar/api-list.js +3 -4
- package/dist/lib/envvar/api-set.js +1 -4
- package/dist/lib/envvar/api.js +5 -16
- package/dist/lib/envvar/input.js +1 -8
- package/dist/lib/envvar/logging.js +2 -6
- package/dist/lib/envvar/read-file.js +1 -3
- package/dist/lib/http/proxy-agent.js +17 -22
- package/dist/lib/keychain/browser.js +1 -4
- package/dist/lib/keychain/insecure.js +1 -10
- package/dist/lib/keychain/secure.js +1 -8
- package/dist/lib/keychain.js +4 -8
- package/dist/lib/logout.js +0 -6
- package/dist/lib/media-import/media-file-import.js +3 -7
- package/dist/lib/media-import/progress.js +6 -17
- package/dist/lib/media-import/status.js +14 -65
- package/dist/lib/read-file.js +1 -6
- package/dist/lib/rollbar.js +1 -7
- package/dist/lib/search-and-replace.js +9 -41
- package/dist/lib/site-import/db-file-import.js +3 -9
- package/dist/lib/site-import/status.js +17 -74
- package/dist/lib/token.js +1 -33
- package/dist/lib/tracker.js +4 -20
- package/dist/lib/user-error.js +0 -2
- package/dist/lib/validations/is-multi-site-sql-dump.js +4 -12
- package/dist/lib/validations/is-multi-site.js +5 -21
- package/dist/lib/validations/is-multisite-domain-mapped.js +5 -31
- package/dist/lib/validations/line-by-line.js +4 -16
- package/dist/lib/validations/site-type.js +10 -19
- package/dist/lib/validations/sql.js +11 -76
- package/dist/lib/validations/utils.js +1 -6
- package/dist/lib/vip-import-validate-files.js +82 -109
- package/npm-shrinkwrap.json +2407 -1800
- package/package.json +18 -15
|
@@ -10,25 +10,17 @@
|
|
|
10
10
|
"use strict";
|
|
11
11
|
|
|
12
12
|
var _command = _interopRequireDefault(require("../lib/cli/command"));
|
|
13
|
-
|
|
14
13
|
var exit = _interopRequireWildcard(require("../lib/cli/exit"));
|
|
15
|
-
|
|
16
14
|
var _sql = require("../lib/validations/sql");
|
|
17
|
-
|
|
18
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
-
|
|
24
18
|
(0, _command.default)({
|
|
25
19
|
requiredArgs: 1
|
|
26
20
|
}).example('vip import validate-sql <file>', 'Run the import validation against file').argv(process.argv, async arg => {
|
|
27
21
|
const filename = arg[0];
|
|
28
|
-
|
|
29
22
|
if (!arg && !filename) {
|
|
30
23
|
exit.withError('You must pass in a filename');
|
|
31
24
|
}
|
|
32
|
-
|
|
33
25
|
(0, _sql.validate)(filename);
|
|
34
26
|
});
|
package/dist/bin/vip-import.js
CHANGED
|
@@ -10,11 +10,8 @@
|
|
|
10
10
|
"use strict";
|
|
11
11
|
|
|
12
12
|
var _command = _interopRequireDefault(require("../lib/cli/command"));
|
|
13
|
-
|
|
14
13
|
var _tracker = require("../lib/tracker");
|
|
15
|
-
|
|
16
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
15
|
(0, _command.default)().command('sql', 'Import SQL to your database from a file').command('validate-sql', 'Validate your SQL dump').command('validate-files', 'Validate your media file library').command('media', 'Import media files to the production environment of your application from a compressed web archive').example('vip import sql @mysite.develop <file.sql>', 'Import the given SQL file to your site').example('vip import media @mysite.production https://<path_to_publicly_accessible_archive>', 'Import contents of the given archive file into the media library of your site').argv(process.argv, async () => {
|
|
19
16
|
await (0, _tracker.trackEvent)('vip_import_command_execute');
|
|
20
17
|
});
|
package/dist/bin/vip-logs.js
CHANGED
|
@@ -8,31 +8,20 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", {
|
|
9
9
|
value: true
|
|
10
10
|
});
|
|
11
|
-
exports.
|
|
11
|
+
exports.appQuery = void 0;
|
|
12
12
|
exports.followLogs = followLogs;
|
|
13
|
+
exports.getLogs = getLogs;
|
|
13
14
|
exports.validateInputs = validateInputs;
|
|
14
|
-
exports.appQuery = void 0;
|
|
15
|
-
|
|
16
15
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
17
|
-
|
|
18
16
|
var _command = _interopRequireDefault(require("../lib/cli/command"));
|
|
19
|
-
|
|
20
17
|
var _rollbar = require("../lib/rollbar");
|
|
21
|
-
|
|
22
18
|
var _tracker = require("../lib/tracker");
|
|
23
|
-
|
|
24
19
|
var logsLib = _interopRequireWildcard(require("../lib/app-logs/app-logs"));
|
|
25
|
-
|
|
26
20
|
var exit = _interopRequireWildcard(require("../lib/cli/exit"));
|
|
27
|
-
|
|
28
21
|
var _format = require("../lib/cli/format");
|
|
29
|
-
|
|
30
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
-
|
|
32
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
-
|
|
34
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
-
|
|
36
25
|
/**
|
|
37
26
|
* Internal dependencies
|
|
38
27
|
*/
|
|
@@ -43,49 +32,43 @@ const ALLOWED_FORMATS = ['csv', 'json', 'text'];
|
|
|
43
32
|
const DEFAULT_POLLING_DELAY_IN_SECONDS = 30;
|
|
44
33
|
const MIN_POLLING_DELAY_IN_SECONDS = 5;
|
|
45
34
|
const MAX_POLLING_DELAY_IN_SECONDS = 300;
|
|
46
|
-
|
|
47
35
|
async function getLogs(arg, opt) {
|
|
48
36
|
validateInputs(opt.type, opt.limit, opt.format);
|
|
49
37
|
const trackingParams = getBaseTrackingParams(opt);
|
|
50
38
|
await (0, _tracker.trackEvent)('logs_command_execute', trackingParams);
|
|
51
39
|
let logs;
|
|
52
|
-
|
|
53
40
|
try {
|
|
54
41
|
if (opt.follow) {
|
|
55
42
|
return await followLogs(opt);
|
|
56
43
|
}
|
|
57
|
-
|
|
58
44
|
logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, opt.limit);
|
|
59
45
|
} catch (error) {
|
|
60
46
|
_rollbar.rollbar.error(error);
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
await (0, _tracker.trackEvent)('logs_command_error', {
|
|
48
|
+
...trackingParams,
|
|
63
49
|
error: error.message
|
|
64
50
|
});
|
|
65
51
|
return exit.withError(error.message);
|
|
66
52
|
}
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
await (0, _tracker.trackEvent)('logs_command_success', {
|
|
54
|
+
...trackingParams,
|
|
69
55
|
total: logs.nodes.length
|
|
70
56
|
});
|
|
71
|
-
|
|
72
57
|
if (!logs.nodes.length) {
|
|
73
58
|
console.error('No logs found');
|
|
74
59
|
return;
|
|
75
60
|
}
|
|
76
|
-
|
|
77
61
|
printLogs(logs.nodes, opt.format);
|
|
78
62
|
}
|
|
79
|
-
|
|
80
63
|
async function followLogs(opt) {
|
|
81
64
|
let after = null;
|
|
82
|
-
let isFirstRequest = true;
|
|
83
|
-
|
|
65
|
+
let isFirstRequest = true;
|
|
66
|
+
// How many times have we polled?
|
|
84
67
|
let requestNumber = 0;
|
|
85
|
-
const trackingParams = getBaseTrackingParams(opt);
|
|
68
|
+
const trackingParams = getBaseTrackingParams(opt);
|
|
86
69
|
|
|
70
|
+
// Set an initial default delay
|
|
87
71
|
let delay = DEFAULT_POLLING_DELAY_IN_SECONDS;
|
|
88
|
-
|
|
89
72
|
while (true) {
|
|
90
73
|
const limit = isFirstRequest ? opt.limit : LIMIT_MAX;
|
|
91
74
|
requestNumber++;
|
|
@@ -93,49 +76,44 @@ async function followLogs(opt) {
|
|
|
93
76
|
trackingParams.request_delay = delay;
|
|
94
77
|
trackingParams.limit = limit;
|
|
95
78
|
let logs;
|
|
96
|
-
|
|
97
79
|
try {
|
|
98
80
|
var _logs;
|
|
99
|
-
|
|
100
81
|
logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, limit, after);
|
|
101
|
-
await (0, _tracker.trackEvent)('logs_command_follow_success', {
|
|
82
|
+
await (0, _tracker.trackEvent)('logs_command_follow_success', {
|
|
83
|
+
...trackingParams,
|
|
102
84
|
total: (_logs = logs) === null || _logs === void 0 ? void 0 : _logs.nodes.length
|
|
103
85
|
});
|
|
104
86
|
} catch (error) {
|
|
105
|
-
await (0, _tracker.trackEvent)('logs_command_follow_error', {
|
|
87
|
+
await (0, _tracker.trackEvent)('logs_command_follow_error', {
|
|
88
|
+
...trackingParams,
|
|
106
89
|
error: error.message
|
|
107
|
-
});
|
|
90
|
+
});
|
|
108
91
|
|
|
92
|
+
// If the first request fails we don't want to retry (it's probably not recoverable)
|
|
109
93
|
if (isFirstRequest) {
|
|
110
94
|
console.error(`${_chalk.default.red('Error:')} Failed to fetch logs.`);
|
|
111
95
|
break;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
96
|
+
}
|
|
97
|
+
// Increase the delay on errors to avoid overloading the server, up to a max of 5 minutes
|
|
115
98
|
delay += DEFAULT_POLLING_DELAY_IN_SECONDS;
|
|
116
99
|
delay = Math.min(delay, MAX_POLLING_DELAY_IN_SECONDS);
|
|
117
100
|
console.error(`${_chalk.default.red('Error:')} Failed to fetch logs. Trying again in ${delay} seconds.`);
|
|
118
|
-
|
|
119
101
|
_rollbar.rollbar.error(error);
|
|
120
102
|
}
|
|
121
|
-
|
|
122
103
|
if (logs) {
|
|
123
104
|
var _logs2, _logs3, _logs4;
|
|
124
|
-
|
|
125
105
|
if ((_logs2 = logs) !== null && _logs2 !== void 0 && _logs2.nodes.length) {
|
|
126
106
|
printLogs(logs.nodes, opt.format);
|
|
127
107
|
}
|
|
128
|
-
|
|
129
108
|
after = (_logs3 = logs) === null || _logs3 === void 0 ? void 0 : _logs3.nextCursor;
|
|
130
|
-
isFirstRequest = false;
|
|
109
|
+
isFirstRequest = false;
|
|
131
110
|
|
|
111
|
+
// Keep a sane lower limit of MIN_POLLING_DELAY_IN_SECONDS just in case something goes wrong in the server-side
|
|
132
112
|
delay = Math.max(((_logs4 = logs) === null || _logs4 === void 0 ? void 0 : _logs4.pollingDelaySeconds) || DEFAULT_POLLING_DELAY_IN_SECONDS, MIN_POLLING_DELAY_IN_SECONDS);
|
|
133
113
|
}
|
|
134
|
-
|
|
135
114
|
await new Promise(resolve => setTimeout(resolve, delay * 1000));
|
|
136
115
|
}
|
|
137
116
|
}
|
|
138
|
-
|
|
139
117
|
function getBaseTrackingParams(opt) {
|
|
140
118
|
return {
|
|
141
119
|
command: 'vip logs',
|
|
@@ -148,7 +126,6 @@ function getBaseTrackingParams(opt) {
|
|
|
148
126
|
format: opt.format
|
|
149
127
|
};
|
|
150
128
|
}
|
|
151
|
-
|
|
152
129
|
function printLogs(logs, format) {
|
|
153
130
|
// Strip out __typename
|
|
154
131
|
logs = logs.map(log => {
|
|
@@ -162,10 +139,8 @@ function printLogs(logs, format) {
|
|
|
162
139
|
};
|
|
163
140
|
});
|
|
164
141
|
let output = '';
|
|
165
|
-
|
|
166
142
|
if (format && 'text' === format) {
|
|
167
143
|
const rows = [];
|
|
168
|
-
|
|
169
144
|
for (const {
|
|
170
145
|
timestamp,
|
|
171
146
|
message
|
|
@@ -176,24 +151,19 @@ function printLogs(logs, format) {
|
|
|
176
151
|
} else {
|
|
177
152
|
output = (0, _format.formatData)(logs, format);
|
|
178
153
|
}
|
|
179
|
-
|
|
180
154
|
console.log(output);
|
|
181
155
|
}
|
|
182
|
-
|
|
183
156
|
function validateInputs(type, limit, format) {
|
|
184
157
|
if (!ALLOWED_TYPES.includes(type)) {
|
|
185
158
|
exit.withError(`Invalid type: ${type}. The supported types are: ${ALLOWED_TYPES.join(', ')}.`);
|
|
186
159
|
}
|
|
187
|
-
|
|
188
160
|
if (!ALLOWED_FORMATS.includes(format)) {
|
|
189
161
|
exit.withError(`Invalid format: ${format}. The supported formats are: ${ALLOWED_FORMATS.join(', ')}.`);
|
|
190
162
|
}
|
|
191
|
-
|
|
192
163
|
if (!Number.isInteger(limit) || limit < LIMIT_MIN || limit > logsLib.LIMIT_MAX) {
|
|
193
164
|
exit.withError(`Invalid limit: ${limit}. It should be a number between ${LIMIT_MIN} and ${logsLib.LIMIT_MAX}.`);
|
|
194
165
|
}
|
|
195
166
|
}
|
|
196
|
-
|
|
197
167
|
const appQuery = `
|
|
198
168
|
id
|
|
199
169
|
name
|
|
@@ -11,33 +11,30 @@
|
|
|
11
11
|
"use strict";
|
|
12
12
|
|
|
13
13
|
var _debug = _interopRequireDefault(require("debug"));
|
|
14
|
-
|
|
15
14
|
var _command = _interopRequireDefault(require("../lib/cli/command"));
|
|
16
|
-
|
|
17
15
|
var exit = _interopRequireWildcard(require("../lib/cli/exit"));
|
|
18
|
-
|
|
19
16
|
var _searchAndReplace = require("../lib/search-and-replace");
|
|
20
|
-
|
|
21
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
22
|
-
|
|
23
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
|
-
|
|
25
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
26
|
-
|
|
27
20
|
/**
|
|
28
21
|
* Internal dependencies
|
|
29
22
|
*/
|
|
30
|
-
const debug = (0, _debug.default)('@automattic/vip:bin:vip-search-replace');
|
|
23
|
+
const debug = (0, _debug.default)('@automattic/vip:bin:vip-search-replace');
|
|
31
24
|
|
|
32
|
-
|
|
25
|
+
// Command examples
|
|
26
|
+
const examples = [
|
|
27
|
+
// `search-replace` flag
|
|
33
28
|
{
|
|
34
29
|
usage: 'vip search-replace <file.sql> --search-replace="from,to"',
|
|
35
30
|
description: 'Replace instances of <from> with <to> in the provided <file.sql>\n' + ' * Ensure there are no spaces between your search-replace parameters'
|
|
36
|
-
},
|
|
31
|
+
},
|
|
32
|
+
// `in-place` flag
|
|
37
33
|
{
|
|
38
34
|
usage: 'vip search-replace <file.sql> --search-replace="from,to" --in-place',
|
|
39
35
|
description: 'Perform Search and Replace explicitly on the provided input <file.sql> file'
|
|
40
|
-
},
|
|
36
|
+
},
|
|
37
|
+
// `output` flag
|
|
41
38
|
{
|
|
42
39
|
usage: 'vip search-replace <file.sql> --search-replace="from,to" --output="<output.sql>"',
|
|
43
40
|
description: 'Search and Replace to the specified output <output.sql> file\n' + ' * Has no effect when the `in-place` flag is used'
|
|
@@ -53,15 +50,12 @@ const examples = [// `search-replace` flag
|
|
|
53
50
|
} = opt;
|
|
54
51
|
debug('Args: ', arg, 'searchReplace: ', searchReplace);
|
|
55
52
|
const filename = arg[0];
|
|
56
|
-
|
|
57
53
|
if (!arg && !filename) {
|
|
58
54
|
exit.withError('You must pass in a filename');
|
|
59
55
|
}
|
|
60
|
-
|
|
61
56
|
if (!searchReplace || !searchReplace.length) {
|
|
62
57
|
exit.withError('You must provide a pair of strings (separated by comma) such as original,replacement');
|
|
63
58
|
}
|
|
64
|
-
|
|
65
59
|
const isImport = false;
|
|
66
60
|
await (0, _searchAndReplace.searchAndReplace)(filename, searchReplace, {
|
|
67
61
|
isImport,
|
package/dist/bin/vip-sync.js
CHANGED
|
@@ -6,23 +6,14 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
-
|
|
10
9
|
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
11
|
-
|
|
12
10
|
var _singleLineLog = require("single-line-log");
|
|
13
|
-
|
|
14
11
|
var _api = _interopRequireDefault(require("../lib/api"));
|
|
15
|
-
|
|
16
12
|
var _app2 = _interopRequireDefault(require("../lib/api/app"));
|
|
17
|
-
|
|
18
13
|
var _command = _interopRequireDefault(require("../lib/cli/command"));
|
|
19
|
-
|
|
20
14
|
var _format = require("../lib/cli/format");
|
|
21
|
-
|
|
22
15
|
var _tracker = require("../lib/tracker");
|
|
23
|
-
|
|
24
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
17
|
/**
|
|
27
18
|
* Internal dependencies
|
|
28
19
|
*/
|
|
@@ -41,7 +32,6 @@ const appQuery = `id,name,environments{
|
|
|
41
32
|
const api = await (0, _api.default)();
|
|
42
33
|
let syncing = false;
|
|
43
34
|
await (0, _tracker.trackEvent)('sync_command_execute');
|
|
44
|
-
|
|
45
35
|
try {
|
|
46
36
|
await api.mutate({
|
|
47
37
|
// $FlowFixMe: gql template is not supported by flow
|
|
@@ -64,47 +54,40 @@ const appQuery = `id,name,environments{
|
|
|
64
54
|
} catch (error) {
|
|
65
55
|
if (error.graphQLErrors) {
|
|
66
56
|
let bail = false;
|
|
67
|
-
|
|
68
57
|
for (const err of error.graphQLErrors) {
|
|
69
58
|
if (err.message !== 'Site is already syncing') {
|
|
70
59
|
bail = true;
|
|
71
60
|
console.log(_chalk.default.red('Error:'), err.message);
|
|
72
61
|
}
|
|
73
|
-
}
|
|
62
|
+
}
|
|
74
63
|
|
|
64
|
+
// TODO: Log e
|
|
75
65
|
|
|
76
66
|
if (bail) {
|
|
77
67
|
return;
|
|
78
68
|
}
|
|
79
69
|
}
|
|
80
|
-
|
|
81
70
|
syncing = true;
|
|
82
71
|
await (0, _tracker.trackEvent)('sync_command_execute_error', {
|
|
83
72
|
error: `Already syncing: ${error.message}`
|
|
84
73
|
});
|
|
85
74
|
}
|
|
86
|
-
|
|
87
75
|
const sprite = {
|
|
88
76
|
count: 0,
|
|
89
77
|
sprite: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],
|
|
90
|
-
|
|
91
78
|
next() {
|
|
92
79
|
this.count++;
|
|
93
|
-
|
|
94
80
|
if (this.count >= this.sprite.length) {
|
|
95
81
|
this.count = 0;
|
|
96
82
|
}
|
|
97
|
-
|
|
98
83
|
return {
|
|
99
84
|
value: this.sprite[this.count],
|
|
100
85
|
done: false
|
|
101
86
|
};
|
|
102
87
|
}
|
|
103
|
-
|
|
104
88
|
};
|
|
105
89
|
const application = await (0, _app2.default)(opts.app.id, appQuery);
|
|
106
90
|
let environment = application.environments.find(env => env.id === opts.env.id);
|
|
107
|
-
|
|
108
91
|
if (syncing) {
|
|
109
92
|
if (environment.syncProgress.status === 'running') {
|
|
110
93
|
console.log(_chalk.default.yellow('Note:'), 'A data sync is already running');
|
|
@@ -113,7 +96,6 @@ const appQuery = `id,name,environments{
|
|
|
113
96
|
console.log(_chalk.default.yellow('Note:'), 'Please wait a few minutes before trying again');
|
|
114
97
|
}
|
|
115
98
|
}
|
|
116
|
-
|
|
117
99
|
console.log();
|
|
118
100
|
console.log(` syncing: ${_chalk.default.yellow(opts.app.name)}`);
|
|
119
101
|
console.log(` from: ${(0, _format.formatEnvironment)('production')}`);
|
|
@@ -143,7 +125,6 @@ const appQuery = `id,name,environments{
|
|
|
143
125
|
environment = _app.environments.find(env => env.id === opts.env.id);
|
|
144
126
|
});
|
|
145
127
|
}
|
|
146
|
-
|
|
147
128
|
const marks = {
|
|
148
129
|
pending: '○',
|
|
149
130
|
running: _chalk.default.blueBright(sprite.next().value),
|
|
@@ -162,12 +143,10 @@ const appQuery = `id,name,environments{
|
|
|
162
143
|
}
|
|
163
144
|
});
|
|
164
145
|
out.push('');
|
|
165
|
-
|
|
166
146
|
switch (environment.syncProgress.status) {
|
|
167
147
|
case 'running':
|
|
168
148
|
out.push(`${marks.running} Press ^C to hide progress. Data sync will continue in the background.`);
|
|
169
149
|
break;
|
|
170
|
-
|
|
171
150
|
case 'failed':
|
|
172
151
|
clearInterval(progress);
|
|
173
152
|
await (0, _tracker.trackEvent)('sync_command_error', {
|
|
@@ -176,7 +155,6 @@ const appQuery = `id,name,environments{
|
|
|
176
155
|
out.push(`${marks.failed} Data Sync is finished for ${opts.app.name}`);
|
|
177
156
|
out.push('');
|
|
178
157
|
break;
|
|
179
|
-
|
|
180
158
|
case 'success':
|
|
181
159
|
default:
|
|
182
160
|
clearInterval(progress);
|
|
@@ -185,7 +163,6 @@ const appQuery = `id,name,environments{
|
|
|
185
163
|
out.push('');
|
|
186
164
|
break;
|
|
187
165
|
}
|
|
188
|
-
|
|
189
166
|
(0, _singleLineLog.stdout)(out.join('\n'));
|
|
190
167
|
}, 100);
|
|
191
168
|
});
|