@scandipwa/magento-scripts 1.14.1-alpha.10 → 1.14.1-alpha.11
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/lib/commands/logs.js +1 -0
- package/lib/commands/start.js +18 -5
- package/lib/config/dependencies-for-platforms.js +12 -2
- package/lib/config/docker.js +4 -3
- package/lib/config/get-port-config.js +2 -1
- package/lib/config/index.js +2 -1
- package/lib/config/php/extensions/libsodium.js +2 -1
- package/lib/config/scandipwa-versions.js +2 -2
- package/lib/config/system-config.js +34 -5
- package/lib/errors/known-error.js +15 -0
- package/lib/errors/unknown-error.js +15 -0
- package/lib/tasks/cli/create-bashrc-config.js +2 -1
- package/lib/tasks/composer/index.js +5 -3
- package/lib/tasks/composer/local-auth-json.js +4 -2
- package/lib/tasks/docker/network.js +2 -1
- package/lib/tasks/file-system/create-nginx-config.js +2 -1
- package/lib/tasks/file-system/create-php-config.js +2 -1
- package/lib/tasks/file-system/create-php-fpm-config.js +2 -1
- package/lib/tasks/file-system/create-php-storm-config.js +6 -5
- package/lib/tasks/file-system/create-ssl-terminator-config.js +5 -3
- package/lib/tasks/file-system/create-varnish-config.js +2 -23
- package/lib/tasks/file-system/create-vscode-config.js +3 -2
- package/lib/tasks/magento/enable-magento-composer-plugins.js +3 -2
- package/lib/tasks/magento/install-magento.js +7 -5
- package/lib/tasks/magento/setup-magento/flush-redis-config.js +2 -1
- package/lib/tasks/magento/setup-magento/index.js +3 -1
- package/lib/tasks/magento/setup-magento/install-magento.js +2 -1
- package/lib/tasks/magento/setup-magento/upgrade-magento.js +11 -1
- package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +41 -0
- package/lib/tasks/mysql/connect-to-mysql.js +2 -1
- package/lib/tasks/mysql/import-dump-to-mysql.js +4 -2
- package/lib/tasks/mysql/import-remote-db/index.js +2 -1
- package/lib/tasks/mysql/import-remote-db/ssh/index.js +2 -1
- package/lib/tasks/mysql/import-remote-db/ssh/regular-server.js +2 -1
- package/lib/tasks/php/bundled-extensions.js +28 -0
- package/lib/tasks/php/compile-options.js +18 -48
- package/lib/tasks/php/compile.js +4 -3
- package/lib/tasks/php/configure.js +7 -66
- package/lib/tasks/php/extensions/index.js +71 -0
- package/lib/tasks/php/index.js +7 -6
- package/lib/tasks/php/update-phpbrew.js +2 -1
- package/lib/tasks/php/validate-php.js +67 -0
- package/lib/tasks/php-fpm/start-php-fpm.js +2 -1
- package/lib/tasks/requirements/composer.js +5 -3
- package/lib/tasks/requirements/dependency/arch.js +2 -1
- package/lib/tasks/requirements/dependency/centos.js +2 -1
- package/lib/tasks/requirements/dependency/fedora.js +2 -1
- package/lib/tasks/requirements/docker/index.js +5 -4
- package/lib/tasks/requirements/docker/install.js +2 -1
- package/lib/tasks/requirements/docker/running-status.js +3 -2
- package/lib/tasks/requirements/docker/version.js +2 -1
- package/lib/tasks/requirements/node-version.js +2 -1
- package/lib/tasks/requirements/php-version.js +5 -3
- package/lib/tasks/requirements/phpbrew/index.js +2 -1
- package/lib/tasks/requirements/phpbrew/install.js +2 -1
- package/lib/tasks/requirements/phpbrew/version.js +2 -1
- package/lib/tasks/requirements/platform.js +3 -2
- package/lib/tasks/start.js +3 -1
- package/lib/tasks/theme/build-theme.js +2 -1
- package/lib/tasks/theme/install-theme.js +2 -1
- package/lib/tasks/theme/retrieve-theme-data.js +2 -1
- package/lib/tasks/theme/setup-persisted-query.js +2 -1
- package/lib/tasks/theme/setup-themes.js +2 -1
- package/lib/tasks/theme/symlink-theme.js +2 -1
- package/lib/util/analytics.js +337 -0
- package/lib/util/config-file-validator.js +2 -1
- package/lib/util/config-php-json.js +3 -2
- package/lib/util/env-php-json.js +3 -2
- package/lib/util/get-installed-magento-version.js +3 -2
- package/lib/util/get-jsonfile-data.js +2 -1
- package/lib/util/install-dependencies-task.js +4 -4
- package/lib/util/instance-metadata.js +2 -1
- package/lib/util/ip.js +45 -1
- package/lib/util/magento-task.js +20 -9
- package/lib/util/request.js +0 -0
- package/lib/util/resolve-configuration-with-overrides.js +2 -1
- package/lib/util/run-composer.js +3 -2
- package/lib/util/run-magento.js +3 -2
- package/lib/util/run-php.js +3 -2
- package/lib/util/wait-for-it.js +3 -2
- package/package.json +4 -3
package/lib/commands/logs.js
CHANGED
package/lib/commands/start.js
CHANGED
|
@@ -4,12 +4,14 @@ const { Listr } = require('listr2');
|
|
|
4
4
|
const { start } = require('../tasks/start');
|
|
5
5
|
const pathExists = require('../util/path-exists');
|
|
6
6
|
const { baseConfig } = require('../config');
|
|
7
|
-
const googleAnalytics = require('
|
|
7
|
+
const googleAnalytics = require('../util/analytics');
|
|
8
8
|
const systeminformation = require('systeminformation');
|
|
9
9
|
const { getCSAThemes } = require('../util/CSA-theme');
|
|
10
10
|
const shouldUseYarn = require('@scandipwa/scandipwa-dev-utils/should-use-yarn');
|
|
11
11
|
const ConsoleBlock = require('../util/console-block');
|
|
12
12
|
const { getInstanceMetadata } = require('../util/instance-metadata');
|
|
13
|
+
const UnknownError = require('../errors/unknown-error');
|
|
14
|
+
const KnownError = require('../errors/known-error');
|
|
13
15
|
|
|
14
16
|
const cmaGaTrackingId = 'UA-127741417-7';
|
|
15
17
|
|
|
@@ -156,8 +158,8 @@ module.exports = (yargs) => {
|
|
|
156
158
|
}
|
|
157
159
|
|
|
158
160
|
try {
|
|
161
|
+
await googleAnalytics.trackTiming('CMA start time', Date.now() - timeStamp);
|
|
159
162
|
if (!process.isFirstStart) {
|
|
160
|
-
await googleAnalytics.trackTiming('CMA start time', Date.now() - timeStamp);
|
|
161
163
|
googleAnalytics.printAboutAnalytics();
|
|
162
164
|
process.exit(0);
|
|
163
165
|
}
|
|
@@ -171,7 +173,6 @@ module.exports = (yargs) => {
|
|
|
171
173
|
const paramInfo = `Platform: ${platform} ${kernel}, CPU model: ${manufacturer} ${brand}, RAM amount: ${totalRam}MB`;
|
|
172
174
|
|
|
173
175
|
await googleAnalytics.trackEvent('Params', paramInfo, 0, 'OS');
|
|
174
|
-
await googleAnalytics.trackTiming('CMA first start time', Date.now() - timeStamp);
|
|
175
176
|
googleAnalytics.printAboutAnalytics();
|
|
176
177
|
} catch (e) {
|
|
177
178
|
await googleAnalytics.trackError(e.message || e);
|
|
@@ -179,8 +180,20 @@ module.exports = (yargs) => {
|
|
|
179
180
|
|
|
180
181
|
process.exit(0);
|
|
181
182
|
} catch (e) {
|
|
182
|
-
|
|
183
|
-
|
|
183
|
+
if (e instanceof UnknownError || e instanceof KnownError) {
|
|
184
|
+
logger.error(e.message);
|
|
185
|
+
if (e instanceof UnknownError) {
|
|
186
|
+
await googleAnalytics.trackError(`Unknown Error: ${e.stack}`);
|
|
187
|
+
} else {
|
|
188
|
+
await googleAnalytics.trackError(`Known Error: ${e.message}`);
|
|
189
|
+
}
|
|
190
|
+
} else if (e instanceof Error) {
|
|
191
|
+
logger.error(e.message);
|
|
192
|
+
await googleAnalytics.trackError(`Regular Error: ${e.message}`);
|
|
193
|
+
} else {
|
|
194
|
+
logger.error(e);
|
|
195
|
+
await googleAnalytics.trackError(`Non Error: ${e}`); // track non-errors throws
|
|
196
|
+
}
|
|
184
197
|
process.exit(1);
|
|
185
198
|
}
|
|
186
199
|
}
|
|
@@ -51,7 +51,12 @@ const dependenciesForPlatforms = {
|
|
|
51
51
|
'libsodium',
|
|
52
52
|
'libsodium-devel',
|
|
53
53
|
'libtool-ltdl-devel',
|
|
54
|
-
'oniguruma-devel'
|
|
54
|
+
'oniguruma-devel',
|
|
55
|
+
'libxml2-devel',
|
|
56
|
+
'bzip2-devel',
|
|
57
|
+
'curl-devel',
|
|
58
|
+
'libxslt-devel',
|
|
59
|
+
'autoconf'
|
|
55
60
|
],
|
|
56
61
|
installCommand: (deps) => `sudo yum install ${deps} -y`,
|
|
57
62
|
packageManager: 'yum'
|
|
@@ -68,7 +73,12 @@ const dependenciesForPlatforms = {
|
|
|
68
73
|
'libsodium',
|
|
69
74
|
'libsodium-devel',
|
|
70
75
|
'libtool-ltdl-devel',
|
|
71
|
-
'oniguruma-devel'
|
|
76
|
+
'oniguruma-devel',
|
|
77
|
+
'libxml2-devel',
|
|
78
|
+
'bzip2-devel',
|
|
79
|
+
'curl-devel',
|
|
80
|
+
'libxslt-devel',
|
|
81
|
+
'autoconf'
|
|
72
82
|
],
|
|
73
83
|
installCommand: (deps) => `sudo yum install --enablerepo=PowerTools ${deps} -y`,
|
|
74
84
|
packageManager: 'yum'
|
package/lib/config/docker.js
CHANGED
|
@@ -193,7 +193,8 @@ module.exports = async ({ configuration, ssl, host }, config) => {
|
|
|
193
193
|
command: [
|
|
194
194
|
'--log_bin_trust_function_creators=1',
|
|
195
195
|
'--default-authentication-plugin=mysql_native_password',
|
|
196
|
-
'--max_allowed_packet=1GB'
|
|
196
|
+
'--max_allowed_packet=1GB',
|
|
197
|
+
'--bind-address=0.0.0.0'
|
|
197
198
|
].join(' '),
|
|
198
199
|
securityOptions: [
|
|
199
200
|
'seccomp=unconfined'
|
|
@@ -225,9 +226,9 @@ module.exports = async ({ configuration, ssl, host }, config) => {
|
|
|
225
226
|
'xpack.ml.enabled': ['sse4.2', 'sse4_2'].some((sse42Flag) => cpuSupportedFlags.includes(sse42Flag))
|
|
226
227
|
},
|
|
227
228
|
network: network.name,
|
|
228
|
-
image: `
|
|
229
|
+
image: `elasticsearch:${ elasticsearch.version }`,
|
|
229
230
|
imageDetails: {
|
|
230
|
-
name: '
|
|
231
|
+
name: 'elasticsearch',
|
|
231
232
|
tag: elasticsearch.version
|
|
232
233
|
},
|
|
233
234
|
name: `${ prefix }_elasticsearch`
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const { baseConfig } = require('.');
|
|
4
|
+
const KnownError = require('../errors/known-error');
|
|
4
5
|
const pathExists = require('../util/path-exists');
|
|
5
6
|
const {
|
|
6
7
|
getPort,
|
|
@@ -43,7 +44,7 @@ const getAvailablePorts = () => ({
|
|
|
43
44
|
if (ctx.port) {
|
|
44
45
|
const isPortAvailable = (await getPort(ctx.port)) === ctx.port;
|
|
45
46
|
if (!isPortAvailable) {
|
|
46
|
-
throw new
|
|
47
|
+
throw new KnownError(`Port ${ctx.port} is not available`);
|
|
47
48
|
} else {
|
|
48
49
|
availablePorts.sslTerminator = ctx.port;
|
|
49
50
|
}
|
package/lib/config/index.js
CHANGED
|
@@ -10,6 +10,7 @@ const { getMagentoConfig } = require('./magento-config');
|
|
|
10
10
|
const { getPhpStormConfig } = require('./phpstorm/debug-config');
|
|
11
11
|
const resolveConfigurationWithOverrides = require('../util/resolve-configuration-with-overrides');
|
|
12
12
|
const { getPrefix, folderName } = require('../util/prefix');
|
|
13
|
+
const UnknownError = require('../errors/unknown-error');
|
|
13
14
|
|
|
14
15
|
const platforms = ['linux', 'darwin'];
|
|
15
16
|
const darwinMinimalVersion = '10.5';
|
|
@@ -38,7 +39,7 @@ module.exports = {
|
|
|
38
39
|
const newBaseConfig = getBaseConfig(projectPath, prefix);
|
|
39
40
|
const configurations = getConfigurations(newBaseConfig);
|
|
40
41
|
if (!configurations[magentoVersion]) {
|
|
41
|
-
throw new
|
|
42
|
+
throw new UnknownError(`No config found for magento version ${magentoVersion}`);
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
const {
|
|
@@ -2,6 +2,7 @@ const path = require('path');
|
|
|
2
2
|
const fs = require('fs');
|
|
3
3
|
const os = require('os');
|
|
4
4
|
const pathExists = require('../../../util/path-exists');
|
|
5
|
+
const UnknownError = require('../../../errors/unknown-error');
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* @type {import('../../../../typings/index').PHPExtension}
|
|
@@ -21,7 +22,7 @@ module.exports = {
|
|
|
21
22
|
);
|
|
22
23
|
|
|
23
24
|
if (!await pathExists(sodiumDynamicLibraryPath)) {
|
|
24
|
-
throw new
|
|
25
|
+
throw new UnknownError(`libsodium dynamic library file configuration not found: ${sodiumDynamicLibraryPath}`);
|
|
25
26
|
}
|
|
26
27
|
const fileContent = await fs.promises.readFile(sodiumDynamicLibraryPath, 'utf-8');
|
|
27
28
|
|
|
@@ -9,8 +9,8 @@ const scandipwaMagentoVersionMapping = {
|
|
|
9
9
|
'2.4.0': '3.1.0 - 3.1.6',
|
|
10
10
|
'2.4.1': '3.2.0 - 4.2.1',
|
|
11
11
|
'2.4.2': '4.3.0 - 5.0.3',
|
|
12
|
-
'2.4.3': '5.0.4 - 5.2.
|
|
13
|
-
'2.4.4': '5.
|
|
12
|
+
'2.4.3': '5.0.4 - 5.2.7',
|
|
13
|
+
'2.4.4': '5.3.0+'
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
module.exports = scandipwaMagentoVersionMapping;
|
|
@@ -4,6 +4,8 @@ const fs = require('fs');
|
|
|
4
4
|
const pathExists = require('../util/path-exists');
|
|
5
5
|
const { systemConfigurationSchema } = require('../util/config-file-validator');
|
|
6
6
|
const { deepmerge } = require('../util/deepmerge');
|
|
7
|
+
const pathExistsSync = require('../util/path-exists-sync');
|
|
8
|
+
const KnownError = require('../errors/known-error');
|
|
7
9
|
|
|
8
10
|
const defaultSystemConfig = {
|
|
9
11
|
analytics: true,
|
|
@@ -14,19 +16,45 @@ const systemConfigPath = path.join(os.homedir(), '.cmarc');
|
|
|
14
16
|
/**
|
|
15
17
|
* @returns {Promise<typeof defaultSystemConfig>}
|
|
16
18
|
*/
|
|
17
|
-
const getSystemConfig = async () => {
|
|
19
|
+
const getSystemConfig = async ({ validate = true } = {}) => {
|
|
18
20
|
if (await pathExists(systemConfigPath)) {
|
|
19
21
|
const userSystemConfig = await fs.promises.readFile(systemConfigPath, 'utf-8');
|
|
20
22
|
let userSystemConfigParsed;
|
|
21
23
|
try {
|
|
22
24
|
userSystemConfigParsed = JSON.parse(userSystemConfig);
|
|
23
25
|
} catch (e) {
|
|
24
|
-
throw new
|
|
26
|
+
throw new KnownError(`System configuration file is not a valid JSON!\n\nFile location: ${systemConfigPath}`);
|
|
25
27
|
}
|
|
28
|
+
|
|
29
|
+
if (validate) {
|
|
30
|
+
try {
|
|
31
|
+
await systemConfigurationSchema.validateAsync(userSystemConfigParsed);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
throw new KnownError(`Configuration file validation error!\n\n${e.message}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return deepmerge(defaultSystemConfig, userSystemConfigParsed);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return defaultSystemConfig;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const getSystemConfigSync = ({ validate = true } = {}) => {
|
|
44
|
+
if (pathExistsSync(systemConfigPath)) {
|
|
45
|
+
const userSystemConfig = fs.readFileSync(systemConfigPath, { encoding: 'utf-8' });
|
|
46
|
+
let userSystemConfigParsed;
|
|
26
47
|
try {
|
|
27
|
-
|
|
48
|
+
userSystemConfigParsed = JSON.parse(userSystemConfig);
|
|
28
49
|
} catch (e) {
|
|
29
|
-
throw new
|
|
50
|
+
throw new KnownError(`System configuration file is not a valid JSON!\n\nFile location: ${systemConfigPath}`);
|
|
51
|
+
}
|
|
52
|
+
if (validate) {
|
|
53
|
+
try {
|
|
54
|
+
systemConfigurationSchema.validate(userSystemConfigParsed);
|
|
55
|
+
} catch (e) {
|
|
56
|
+
throw new KnownError(`Configuration file validation error!\n\n${e.message}`);
|
|
57
|
+
}
|
|
30
58
|
}
|
|
31
59
|
|
|
32
60
|
return deepmerge(defaultSystemConfig, userSystemConfigParsed);
|
|
@@ -48,5 +76,6 @@ const getSystemConfigTask = () => ({
|
|
|
48
76
|
module.exports = {
|
|
49
77
|
defaultSystemConfig,
|
|
50
78
|
getSystemConfigTask,
|
|
51
|
-
getSystemConfig
|
|
79
|
+
getSystemConfig,
|
|
80
|
+
getSystemConfigSync
|
|
52
81
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class KnownError extends Error {
|
|
2
|
+
/**
|
|
3
|
+
* @param {String} message Error message
|
|
4
|
+
* @param {String} [name] Error name
|
|
5
|
+
* @param {{ reportToAnalytics?: boolean }} [param2]
|
|
6
|
+
*/
|
|
7
|
+
constructor(message, name = 'Known Error', { reportToAnalytics = true } = {}) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = name;
|
|
10
|
+
|
|
11
|
+
this.reportToAnalytics = reportToAnalytics;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = KnownError;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class UnknownError extends Error {
|
|
2
|
+
/**
|
|
3
|
+
* @param {String} message Error message
|
|
4
|
+
* @param {String} [name] Error name
|
|
5
|
+
* @param {{ reportToAnalytics?: boolean }} [param2]
|
|
6
|
+
*/
|
|
7
|
+
constructor(message, name = 'Unknown Error', { reportToAnalytics = true } = {}) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = name;
|
|
10
|
+
|
|
11
|
+
this.reportToAnalytics = reportToAnalytics;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = UnknownError;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
2
3
|
const setConfigFile = require('../../util/set-config');
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -20,7 +21,7 @@ const createBashrcConfigFile = () => ({
|
|
|
20
21
|
}
|
|
21
22
|
});
|
|
22
23
|
} catch (e) {
|
|
23
|
-
throw new
|
|
24
|
+
throw new UnknownError(`Unexpected error accrued during php.ini config creation\n\n${e}`);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
});
|
|
@@ -7,6 +7,8 @@ const { execAsyncSpawn } = require('../../util/exec-async-command');
|
|
|
7
7
|
const pathExists = require('../../util/path-exists');
|
|
8
8
|
const safeRegexExtract = require('../../util/safe-regex-extract');
|
|
9
9
|
const installPrestissimo = require('./install-prestissimo');
|
|
10
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
11
|
+
const KnownError = require('../../errors/known-error');
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* @param {import('../../../typings/context').ListrContext['config']} param0
|
|
@@ -19,7 +21,7 @@ const getComposerVersion = async ({ composer, php }) => {
|
|
|
19
21
|
string: composerVersionOutput,
|
|
20
22
|
regex: /composer.+(\d+\.\d+\.\d+)/i,
|
|
21
23
|
onNoMatch: () => {
|
|
22
|
-
throw new
|
|
24
|
+
throw new UnknownError(`
|
|
23
25
|
No composer version found in composer version output!\n\n${composerVersionOutput}
|
|
24
26
|
|
|
25
27
|
Follow steps below to resolve this issue:
|
|
@@ -56,7 +58,7 @@ const downloadComposerBinary = async ({ composer }) => {
|
|
|
56
58
|
destination: composer.binPath
|
|
57
59
|
});
|
|
58
60
|
} catch (e) {
|
|
59
|
-
throw new
|
|
61
|
+
throw new UnknownError(
|
|
60
62
|
`Unexpected issue, while installing composer.
|
|
61
63
|
Please see the error log below.\n\n${e}`
|
|
62
64
|
);
|
|
@@ -108,7 +110,7 @@ const installComposer = () => ({
|
|
|
108
110
|
break;
|
|
109
111
|
}
|
|
110
112
|
case 'exit': {
|
|
111
|
-
throw new
|
|
113
|
+
throw new KnownError(`Current composer version ${logger.style.misc(`v${currentComposerVersion}`)} is not compatible with version ${logger.style.misc(expectedComposerVersion)}!`);
|
|
112
114
|
}
|
|
113
115
|
case 'continue':
|
|
114
116
|
default: {
|
|
@@ -2,6 +2,8 @@ const path = require('path');
|
|
|
2
2
|
const fs = require('fs');
|
|
3
3
|
const pathExists = require('../../util/path-exists');
|
|
4
4
|
const logger = require('@scandipwa/scandipwa-dev-utils/logger');
|
|
5
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
6
|
+
const KnownError = require('../../errors/known-error');
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
@@ -16,11 +18,11 @@ const localAuthJson = () => ({
|
|
|
16
18
|
try {
|
|
17
19
|
localAuthJsonContent = JSON.parse(localAuthJson);
|
|
18
20
|
} catch (e) {
|
|
19
|
-
throw new
|
|
21
|
+
throw new UnknownError(`Could not parse ./auth.json file as JSON!\n\n${e}`);
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
if (!localAuthJsonContent || !localAuthJsonContent['http-basic'] || !localAuthJsonContent['http-basic']['repo.magento.com']) {
|
|
23
|
-
throw new
|
|
25
|
+
throw new KnownError(`Your ./auth.json file does not contain the ${ logger.style.misc("{ 'http-basic': { 'repo.magento.com': <> } }") } field.`);
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
process.env.COMPOSER_AUTH = localAuthJson;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const logger = require('@scandipwa/scandipwa-dev-utils/logger');
|
|
2
|
+
const KnownError = require('../../errors/known-error');
|
|
2
3
|
const { execAsyncSpawn } = require('../../util/exec-async-command');
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -29,7 +30,7 @@ Do you want remove all custom networks not used by at least one container?`
|
|
|
29
30
|
);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
throw new
|
|
33
|
+
throw new KnownError(`Unable to create network for your project.
|
|
33
34
|
You need to delete unused networks yourself.
|
|
34
35
|
Use command ${logger.style.command('docker network prune')}`);
|
|
35
36
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const os = require('os');
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const setConfigFile = require('../../util/set-config');
|
|
4
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
@@ -47,7 +48,7 @@ const createNginxConfig = () => ({
|
|
|
47
48
|
}
|
|
48
49
|
});
|
|
49
50
|
} catch (e) {
|
|
50
|
-
throw new
|
|
51
|
+
throw new UnknownError(`Unexpected error accrued during nginx config creation\n\n${e}`);
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const semver = require('semver');
|
|
2
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
2
3
|
const setConfigFile = require('../../util/set-config');
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -21,7 +22,7 @@ const createPhpConfig = () => ({
|
|
|
21
22
|
}
|
|
22
23
|
});
|
|
23
24
|
} catch (e) {
|
|
24
|
-
throw new
|
|
25
|
+
throw new UnknownError(`Unexpected error accrued during php.ini config creation\n\n${e}`);
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
2
3
|
const setConfigFile = require('../../util/set-config');
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -17,7 +18,7 @@ const createPhpFpmConfig = () => ({
|
|
|
17
18
|
}
|
|
18
19
|
});
|
|
19
20
|
} catch (e) {
|
|
20
|
-
throw new
|
|
21
|
+
throw new UnknownError(`Unexpected error accrued during php-fpm config creation\n\n${e}`);
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
});
|
|
@@ -2,6 +2,7 @@ const setConfigFile = require('../../util/set-config');
|
|
|
2
2
|
const pathExists = require('../../util/path-exists');
|
|
3
3
|
const path = require('path');
|
|
4
4
|
const fs = require('fs');
|
|
5
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
5
6
|
|
|
6
7
|
const createPhpStormConfig = () => ({
|
|
7
8
|
title: 'Setting PHPStorm config',
|
|
@@ -19,7 +20,7 @@ const createPhpStormConfig = () => ({
|
|
|
19
20
|
}
|
|
20
21
|
});
|
|
21
22
|
} catch (e) {
|
|
22
|
-
throw new
|
|
23
|
+
throw new UnknownError(`Unexpected error accrued during workspace.xml config creation\n\n${e}`);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
try {
|
|
@@ -32,7 +33,7 @@ const createPhpStormConfig = () => ({
|
|
|
32
33
|
}
|
|
33
34
|
});
|
|
34
35
|
} catch (e) {
|
|
35
|
-
throw new
|
|
36
|
+
throw new UnknownError(`Unexpected error accrued during php.xml config creation\n\n${e}`);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
try {
|
|
@@ -45,7 +46,7 @@ const createPhpStormConfig = () => ({
|
|
|
45
46
|
}
|
|
46
47
|
});
|
|
47
48
|
} catch (e) {
|
|
48
|
-
throw new
|
|
49
|
+
throw new UnknownError(`Unexpected error accrued during dataSources.local.xml config creation\n\n${e}`);
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
try {
|
|
@@ -59,7 +60,7 @@ const createPhpStormConfig = () => ({
|
|
|
59
60
|
}
|
|
60
61
|
});
|
|
61
62
|
} catch (e) {
|
|
62
|
-
throw new
|
|
63
|
+
throw new UnknownError(`Unexpected error accrued during dataSources.xml config creation\n\n${e}`);
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
if (!await pathExists(path.resolve('./.idea/dataSources'))) {
|
|
@@ -74,7 +75,7 @@ const createPhpStormConfig = () => ({
|
|
|
74
75
|
templateArgs: {}
|
|
75
76
|
});
|
|
76
77
|
} catch (e) {
|
|
77
|
-
throw new
|
|
78
|
+
throw new UnknownError(`Unexpected error accrued during Project_Default.xml config creation\n\n${e}`);
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
});
|
|
@@ -4,6 +4,8 @@ const fs = require('fs');
|
|
|
4
4
|
const setConfigFile = require('../../util/set-config');
|
|
5
5
|
const pathExists = require('../../util/path-exists');
|
|
6
6
|
const { isIpAddress } = require('../../util/ip');
|
|
7
|
+
const KnownError = require('../../errors/known-error');
|
|
8
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
@@ -30,10 +32,10 @@ const createSSLTerminatorConfig = () => ({
|
|
|
30
32
|
|
|
31
33
|
if (ssl.enabled) {
|
|
32
34
|
if (!(await pathExists(ssl.ssl_certificate))) {
|
|
33
|
-
throw new
|
|
35
|
+
throw new KnownError('ssl.ssl_certificate file does not exist!');
|
|
34
36
|
}
|
|
35
37
|
if (!(await pathExists(ssl.ssl_certificate_key))) {
|
|
36
|
-
throw new
|
|
38
|
+
throw new KnownError('ssl.ssl_certificate_key file does not exist!');
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
const nginxCacheDir = path.join(baseConfig.cacheDir, 'nginx', 'conf.d');
|
|
@@ -86,7 +88,7 @@ const createSSLTerminatorConfig = () => ({
|
|
|
86
88
|
}
|
|
87
89
|
});
|
|
88
90
|
} catch (e) {
|
|
89
|
-
throw new
|
|
91
|
+
throw new UnknownError(`Unexpected error accrued during ssl terminator config creation\n\n${e}`);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
2
3
|
const setConfigFile = require('../../util/set-config');
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -44,30 +45,8 @@ const createVarnishConfig = () => ({
|
|
|
44
45
|
}
|
|
45
46
|
});
|
|
46
47
|
} catch (e) {
|
|
47
|
-
throw new
|
|
48
|
+
throw new UnknownError(`Unexpected error accrued during varnish config creation\n\n${e}`);
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
-
// try {
|
|
51
|
-
// await setConfigFile({
|
|
52
|
-
// configPathname: path.join(
|
|
53
|
-
// cacheDir,
|
|
54
|
-
// 'nginx-cache-router',
|
|
55
|
-
// 'conf.d',
|
|
56
|
-
// 'default.conf'
|
|
57
|
-
// ),
|
|
58
|
-
// template: path.join(templateDir, 'nginx-cache-router.template.conf'),
|
|
59
|
-
// overwrite: true,
|
|
60
|
-
// templateArgs: {
|
|
61
|
-
// ports,
|
|
62
|
-
// hostMachine,
|
|
63
|
-
// hostPort,
|
|
64
|
-
// config: overridenConfiguration,
|
|
65
|
-
// networkToBindTo
|
|
66
|
-
// }
|
|
67
|
-
// });
|
|
68
|
-
// } catch (e) {
|
|
69
|
-
// throw new Error(`Unexpected error accrued during nginx-cache-router config creation\n\n${e}`);
|
|
70
|
-
// }
|
|
71
50
|
}
|
|
72
51
|
});
|
|
73
52
|
|
|
@@ -5,6 +5,7 @@ const os = require('os');
|
|
|
5
5
|
const hjson = require('hjson');
|
|
6
6
|
const pathExists = require('../../util/path-exists');
|
|
7
7
|
const setConfigFile = require('../../util/set-config');
|
|
8
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
8
9
|
|
|
9
10
|
const phpXDebug2port = 9111;
|
|
10
11
|
const phpXDebug3port = 9003;
|
|
@@ -87,7 +88,7 @@ const createPhpFpmConfig = () => ({
|
|
|
87
88
|
try {
|
|
88
89
|
await fs.promises.mkdir(path.join(process.cwd(), '.vscode'));
|
|
89
90
|
} catch (e) {
|
|
90
|
-
throw new
|
|
91
|
+
throw new UnknownError(`Unable to creade .vscode directory in your project!\n\n${e}`);
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
|
|
@@ -103,7 +104,7 @@ const createPhpFpmConfig = () => ({
|
|
|
103
104
|
}
|
|
104
105
|
});
|
|
105
106
|
} catch (e) {
|
|
106
|
-
throw new
|
|
107
|
+
throw new UnknownError(`Unexpected error accrued during launch.json config creation!\n\n${e}`);
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
});
|
|
@@ -4,6 +4,7 @@ const logger = require('@scandipwa/scandipwa-dev-utils/logger');
|
|
|
4
4
|
const semver = require('semver');
|
|
5
5
|
const pathExists = require('../../util/path-exists');
|
|
6
6
|
const getJsonfileData = require('../../util/get-jsonfile-data');
|
|
7
|
+
const KnownError = require('../../errors/known-error');
|
|
7
8
|
|
|
8
9
|
const vendorPath = path.join(process.cwd(), 'vendor');
|
|
9
10
|
const composerJsonPath = path.join(process.cwd(), 'composer.json');
|
|
@@ -121,7 +122,7 @@ Do you want to enable them all or disable some of them?`,
|
|
|
121
122
|
encoding: 'utf-8'
|
|
122
123
|
});
|
|
123
124
|
} else {
|
|
124
|
-
throw new
|
|
125
|
+
throw new KnownError('Please confirm your choice or choose other option.');
|
|
125
126
|
}
|
|
126
127
|
break;
|
|
127
128
|
}
|
|
@@ -153,7 +154,7 @@ Do you want to enable them all or disable some of them?`,
|
|
|
153
154
|
encoding: 'utf-8'
|
|
154
155
|
});
|
|
155
156
|
} else {
|
|
156
|
-
throw new
|
|
157
|
+
throw new KnownError('Please confirm your choice or choose other option.');
|
|
157
158
|
}
|
|
158
159
|
|
|
159
160
|
break;
|
|
@@ -6,6 +6,8 @@ const moveFile = require('../../util/move-file');
|
|
|
6
6
|
const pathExists = require('../../util/path-exists');
|
|
7
7
|
const getJsonFileData = require('../../util/get-jsonfile-data');
|
|
8
8
|
const rmdirSafe = require('../../util/rmdir-safe');
|
|
9
|
+
const KnownError = require('../../errors/known-error');
|
|
10
|
+
const UnknownError = require('../../errors/unknown-error');
|
|
9
11
|
|
|
10
12
|
const magentoProductEnterpriseEdition = 'magento/product-enterprise-edition';
|
|
11
13
|
const magentoProductCommunityEdition = 'magento/product-community-edition';
|
|
@@ -58,7 +60,7 @@ const adjustComposerJson = async ({
|
|
|
58
60
|
composerData.require[magentoProductCommunityEdition]
|
|
59
61
|
&& composerData.require[magentoProductEnterpriseEdition]
|
|
60
62
|
) {
|
|
61
|
-
throw new
|
|
63
|
+
throw new KnownError('Somehow, both Magento editions are installed!\nPlease choose only one edition an modify your composer.json manually!');
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
const oppositeEdition = [magentoProductCommunityEdition, magentoProductEnterpriseEdition]
|
|
@@ -66,7 +68,7 @@ const adjustComposerJson = async ({
|
|
|
66
68
|
|
|
67
69
|
// if opposite edition is installed than selected in config file, throw an error
|
|
68
70
|
if (composerData.require[oppositeEdition]) {
|
|
69
|
-
throw new
|
|
71
|
+
throw new KnownError(`You have installed ${oppositeEdition} but selected magento.edition as ${magentoEdition} in config file!
|
|
70
72
|
|
|
71
73
|
Change magento edition in config file or manually reinstall correct magento edition!`);
|
|
72
74
|
}
|
|
@@ -187,11 +189,11 @@ const installMagento = () => ({
|
|
|
187
189
|
});
|
|
188
190
|
} catch (e) {
|
|
189
191
|
if (e.message.includes('man-in-the-middle attack')) {
|
|
190
|
-
throw new
|
|
191
|
-
|
|
192
|
+
throw new KnownError(`Probably you haven't setup pubkeys in composer.
|
|
193
|
+
Please run composer diagnose in cli to get mode.\n\n${e}`);
|
|
192
194
|
}
|
|
193
195
|
|
|
194
|
-
throw new
|
|
196
|
+
throw new UnknownError(`Unexpected error during composer install.\n\n${e}`);
|
|
195
197
|
}
|
|
196
198
|
ctx.magentoFirstInstall = true;
|
|
197
199
|
},
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const { execAsyncSpawn } = require('../../../util/exec-async-command');
|
|
2
2
|
const os = require('os');
|
|
3
|
+
const UnknownError = require('../../../errors/unknown-error');
|
|
3
4
|
|
|
4
5
|
const isLinux = os.platform() === 'linux';
|
|
5
6
|
|
|
@@ -15,7 +16,7 @@ module.exports = () => ({
|
|
|
15
16
|
const result = await execAsyncSpawn(`docker exec ${ name } redis-cli -h ${ host } -p ${ port } -n 0 flushdb`);
|
|
16
17
|
|
|
17
18
|
if (!result.trim().includes('OK')) {
|
|
18
|
-
throw new
|
|
19
|
+
throw new UnknownError(`Unexpected output from redis flush command: ${result}`);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
});
|