@scandipwa/magento-scripts 1.16.0 → 2.0.0-alpha.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/lib/commands/cli.js +4 -6
- package/lib/commands/execute.js +29 -4
- package/lib/commands/import-db.js +1 -1
- package/lib/commands/logs.js +1 -1
- package/lib/commands/start.js +38 -20
- package/lib/commands/status.js +2 -0
- package/lib/config/docker.js +98 -83
- package/lib/config/get-project-configuration.js +3 -1
- package/lib/config/index.js +10 -7
- package/lib/config/magento/required-php-extensions/index.js +29 -0
- package/lib/config/magento/required-php-extensions/magento-2.3.js +19 -0
- package/lib/config/magento/required-php-extensions/magento-2.4.js +29 -0
- package/lib/config/php/base-repo.js +3 -0
- package/lib/config/php/extensions/apcu.js +12 -0
- package/lib/config/php/extensions/bcmath.js +7 -0
- package/lib/config/php/extensions/curl.js +11 -0
- package/lib/config/php/extensions/gd.js +14 -0
- package/lib/config/php/extensions/index.js +18 -2
- package/lib/config/php/extensions/intl.js +10 -0
- package/lib/config/php/extensions/opcache.js +10 -0
- package/lib/config/php/extensions/pdo_mysql.js +7 -0
- package/lib/config/php/extensions/soap.js +10 -0
- package/lib/config/php/extensions/sodium.js +10 -0
- package/lib/config/php/extensions/xdebug.js +8 -5
- package/lib/config/php/extensions/xsl.js +10 -0
- package/lib/config/php/extensions/zip.js +10 -0
- package/lib/config/php/{releases → versions}/index.js +0 -0
- package/lib/config/php/versions/php-7.2.js +23 -0
- package/lib/config/php/versions/php-7.3.js +23 -0
- package/lib/config/php/versions/php-7.4.js +23 -0
- package/lib/config/php/versions/php-8.1.js +23 -0
- package/lib/config/php-config.js +8 -12
- package/lib/config/port-config.js +2 -6
- package/lib/config/services/elasticsearch/base-repo.js +3 -0
- package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +23 -0
- package/lib/config/services/elasticsearch/versions/index.js +5 -0
- package/lib/config/templates/magentorc.template +5 -5
- package/lib/config/templates/mariadb.template.cnf +191 -0
- package/lib/config/templates/php-fpm.template.conf +3 -3
- package/lib/config/templates/php.template.ini +12 -6
- package/lib/config/templates/ssl-terminator.template.conf +1 -1
- package/lib/config/templates/vscode-launch.template.json +3 -1
- package/lib/config/versions/magento-2.3.0.js +10 -5
- package/lib/config/versions/magento-2.3.1.js +10 -5
- package/lib/config/versions/magento-2.3.2-p1.js +43 -0
- package/lib/config/versions/magento-2.3.2-p2.js +10 -5
- package/lib/config/versions/magento-2.3.2.js +10 -5
- package/lib/config/versions/magento-2.3.3-p1.js +10 -5
- package/lib/config/versions/magento-2.3.3.js +10 -5
- package/lib/config/versions/magento-2.3.4-p1.js +43 -0
- package/lib/config/versions/magento-2.3.4-p2.js +10 -5
- package/lib/config/versions/magento-2.3.4.js +10 -5
- package/lib/config/versions/magento-2.3.5-p1.js +8 -2
- package/lib/config/versions/magento-2.3.5-p2.js +8 -2
- package/lib/config/versions/magento-2.3.5.js +8 -2
- package/lib/config/versions/magento-2.3.6-p1.js +8 -2
- package/lib/config/versions/magento-2.3.6.js +8 -2
- package/lib/config/versions/magento-2.3.7-p1.js +8 -2
- package/lib/config/versions/magento-2.3.7-p2.js +8 -2
- package/lib/config/versions/magento-2.3.7-p3.js +8 -2
- package/lib/config/versions/magento-2.3.7.js +8 -2
- package/lib/config/versions/magento-2.4.0-p1.js +9 -3
- package/lib/config/versions/magento-2.4.0.js +9 -3
- package/lib/config/versions/magento-2.4.1-p1.js +6 -5
- package/lib/config/versions/magento-2.4.1.js +9 -2
- package/lib/config/versions/magento-2.4.2-p1.js +6 -5
- package/lib/config/versions/magento-2.4.2-p2.js +6 -6
- package/lib/config/versions/magento-2.4.2.js +6 -6
- package/lib/config/versions/magento-2.4.3-p1.js +7 -7
- package/lib/config/versions/magento-2.4.3-p2.js +7 -7
- package/lib/config/versions/magento-2.4.3.js +7 -7
- package/lib/config/versions/magento-2.4.4.js +9 -2
- package/lib/tasks/cleanup.js +3 -3
- package/lib/tasks/composer/index.js +14 -104
- package/lib/tasks/database/connect-to-database.js +117 -0
- package/lib/tasks/database/create-magento-database.js +18 -0
- package/lib/tasks/{mysql → database}/dump-theme-config.js +3 -3
- package/lib/tasks/{mysql → database}/fix-db.js +2 -2
- package/lib/tasks/{mysql/import-dump-to-mysql.js → database/import-dump-to-database.js} +65 -22
- package/lib/tasks/{mysql → database}/import-remote-db/index.js +0 -0
- package/lib/tasks/{mysql/import-remote-db/ssh/mysqldump-command.js → database/import-remote-db/ssh/database-dump-command.js} +2 -2
- package/lib/tasks/{mysql → database}/import-remote-db/ssh/index.js +0 -0
- package/lib/tasks/{mysql → database}/import-remote-db/ssh/readymage.js +4 -4
- package/lib/tasks/{mysql → database}/import-remote-db/ssh/regular-server.js +2 -2
- package/lib/tasks/{mysql → database}/index.js +2 -2
- package/lib/tasks/{mysql → database}/magento-tables.js +0 -0
- package/lib/tasks/{mysql → database}/restore-theme-config.js +4 -4
- package/lib/tasks/docker/api.d.ts +71 -0
- package/lib/tasks/docker/api.js +30 -0
- package/lib/tasks/docker/containers/container-api.d.ts +128 -0
- package/lib/tasks/docker/containers/container-api.js +153 -0
- package/lib/tasks/docker/containers/index.js +19 -0
- package/lib/tasks/docker/containers/tasks.js +215 -0
- package/lib/tasks/docker/convert-legacy-volumes.js +15 -10
- package/lib/tasks/docker/convert-mysql-to-mariadb.js +284 -0
- package/lib/tasks/docker/image/image-api.d.ts +34 -0
- package/lib/tasks/docker/image/image-api.js +49 -0
- package/lib/tasks/docker/image/index.js +5 -0
- package/lib/tasks/docker/index.js +1 -13
- package/lib/tasks/docker/network/index.js +7 -0
- package/lib/tasks/docker/network/network-api.d.ts +103 -0
- package/lib/tasks/docker/network/network-api.js +99 -0
- package/lib/tasks/docker/{network.js → network/tasks.js} +17 -10
- package/lib/tasks/docker/project-image-builder.js +167 -0
- package/lib/tasks/docker/volume/index.js +8 -0
- package/lib/tasks/docker/{volumes.js → volume/tasks.js} +5 -19
- package/lib/tasks/docker/volume/volume-api.d.ts +39 -0
- package/lib/tasks/docker/volume/volume-api.js +66 -0
- package/lib/tasks/execute/index.js +5 -2
- package/lib/tasks/file-system/create-mariadb-config.js +23 -0
- package/lib/tasks/file-system/create-nginx-config.js +2 -3
- package/lib/tasks/file-system/create-php-config.js +20 -5
- package/lib/tasks/file-system/create-php-fpm-config.js +8 -4
- package/lib/tasks/file-system/create-phpstorm-config/exclude-folder-config.js +41 -29
- package/lib/tasks/file-system/create-phpstorm-config/index.js +2 -0
- package/lib/tasks/file-system/create-phpstorm-config/keys.js +15 -1
- package/lib/tasks/file-system/create-phpstorm-config/php-config/index.js +4 -1
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-config.js +3 -3
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-interpreters-config.js +81 -0
- package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/index.js +42 -0
- package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/php-docker-settings-config.js +9 -0
- package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/setup-php-docker-container-settings-config.js +66 -0
- package/lib/tasks/file-system/create-phpstorm-config/setup-xml-structure.js +11 -9
- package/lib/tasks/file-system/create-phpstorm-config/stylelint-config.js +2 -1
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/composer-settings-config.js +15 -30
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/index.js +24 -5
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/mess-detector-project-configuration-config.js +50 -0
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-code-sniffer-project-configuration-config.js +50 -0
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-cs-fixer-project-configuration-config.js +50 -0
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-debug-general-config.js +15 -15
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-server-config.js +29 -3
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-stan-project-configuration-config.js.js +50 -0
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-workspace-project-configuration-config.js +42 -0
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/psalm-project-configuration-config.js.js +50 -0
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/workspace-config.js +0 -2
- package/lib/tasks/file-system/create-ssl-terminator-config.js +4 -2
- package/lib/tasks/file-system/create-vscode-config.js +57 -42
- package/lib/tasks/file-system/index.js +5 -2
- package/lib/tasks/import-dump.js +6 -6
- package/lib/tasks/link.js +5 -4
- package/lib/tasks/magento/install-magento-project.js +31 -63
- package/lib/tasks/magento/setup-magento/adjust-full-page-cache.js +4 -4
- package/lib/tasks/magento/setup-magento/configure-elasticsearch.js +7 -3
- package/lib/tasks/magento/setup-magento/create-admin.js +5 -6
- package/lib/tasks/magento/setup-magento/delete-admin-users.js +2 -2
- package/lib/tasks/magento/setup-magento/delete-customers.js +4 -4
- package/lib/tasks/magento/setup-magento/delete-orders.js +4 -4
- package/lib/tasks/magento/setup-magento/disable-2fa.js +3 -5
- package/lib/tasks/magento/setup-magento/disable-maintenance-mode.js +3 -4
- package/lib/tasks/magento/setup-magento/increase-admin-session-lifetime.js +2 -2
- package/lib/tasks/magento/setup-magento/index.js +3 -3
- package/lib/tasks/magento/setup-magento/install-magento.js +47 -40
- package/lib/tasks/magento/setup-magento/migrate-database.js +7 -14
- package/lib/tasks/magento/setup-magento/set-base-url.js +2 -2
- package/lib/tasks/magento/setup-magento/set-deployment-mode.js +4 -4
- package/lib/tasks/magento/setup-magento/set-url-rewrite.js +2 -2
- package/lib/tasks/magento/setup-magento/varnish-config.js +11 -9
- package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +128 -3
- package/lib/tasks/php/php-container.js +108 -0
- package/lib/tasks/php/update-env-php.js +39 -21
- package/lib/tasks/php/update-env.php +66 -61
- package/lib/tasks/php/working_health_check.php +85 -0
- package/lib/tasks/requirements/{composer.js → composer-credentials.js} +3 -1
- package/lib/tasks/requirements/docker/index.js +15 -12
- package/lib/tasks/requirements/docker/performance.js +54 -0
- package/lib/tasks/requirements/docker/version.js +8 -8
- package/lib/tasks/requirements/index.js +5 -8
- package/lib/tasks/requirements/php-version.js +8 -116
- package/lib/tasks/requirements/platform.js +12 -25
- package/lib/tasks/start.js +24 -51
- package/lib/tasks/status/index.js +8 -12
- package/lib/tasks/stop.js +0 -2
- package/lib/tasks/theme/install-theme.js +1 -1
- package/lib/tasks/theme/link-theme.js +2 -2
- package/lib/tasks/theme/symlink-theme.js +2 -3
- package/lib/util/config-file-validator.js +27 -13
- package/lib/util/config-php-json.js +13 -4
- package/lib/util/database.js +7 -7
- package/lib/util/dockerfile-builder/build-instructions.js +197 -0
- package/lib/util/dockerfile-builder/index.js +276 -0
- package/lib/util/dockerfile-builder/types.d.ts +123 -0
- package/lib/util/env-php-json.js +10 -6
- package/lib/util/exec-async-command.js +3 -9
- package/lib/util/macos-version.js +20 -0
- package/lib/util/magento-task.js +3 -4
- package/lib/util/nginx-logs-parser.js +122 -0
- package/lib/util/php-task.js +3 -6
- package/lib/util/run-composer.js +6 -14
- package/lib/util/run-container-image.js +17 -0
- package/lib/util/run-magento.js +6 -14
- package/lib/util/run-php.js +6 -17
- package/package.json +9 -9
- package/typings/context.d.ts +7 -13
- package/typings/index.d.ts +67 -85
- package/yarn-error.log +9660 -0
- package/lib/config/composer.js +0 -11
- package/lib/config/php/extensions/libsodium.js +0 -36
- package/lib/config/php/releases/php-7.2.js +0 -25
- package/lib/config/php/releases/php-7.3.js +0 -25
- package/lib/config/php/releases/php-7.4.js +0 -23
- package/lib/config/php/releases/php-8.1.js +0 -25
- package/lib/config/phpbrew.js +0 -12
- package/lib/tasks/composer/install-prestissimo.js +0 -103
- package/lib/tasks/docker/containers.js +0 -231
- package/lib/tasks/mysql/connect-to-mysql.js +0 -114
- package/lib/tasks/mysql/create-magento-database.js +0 -18
- package/lib/tasks/php/bundled-extensions.js +0 -27
- package/lib/tasks/php/compile-options.js +0 -56
- package/lib/tasks/php/compile.js +0 -55
- package/lib/tasks/php/configure.js +0 -89
- package/lib/tasks/php/extensions/disable.js +0 -49
- package/lib/tasks/php/extensions/enable.js +0 -52
- package/lib/tasks/php/extensions/index.js +0 -80
- package/lib/tasks/php/extensions/install.js +0 -54
- package/lib/tasks/php/index.js +0 -79
- package/lib/tasks/php/install-sodium.js +0 -93
- package/lib/tasks/php/update-phpbrew.js +0 -45
- package/lib/tasks/php/validate-php.js +0 -67
- package/lib/tasks/php-fpm/get-process-id.js +0 -14
- package/lib/tasks/php-fpm/index.js +0 -4
- package/lib/tasks/php-fpm/start-php-fpm.js +0 -49
- package/lib/tasks/php-fpm/stop-php-fpm.js +0 -48
- package/lib/tasks/requirements/phpbrew/index.js +0 -61
- package/lib/tasks/requirements/phpbrew/install.js +0 -159
- package/lib/tasks/requirements/phpbrew/version.js +0 -28
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
|
+
const os = require('os');
|
|
2
3
|
const envPhpToJson = require('../../util/env-php-json');
|
|
3
4
|
const getJsonfileData = require('../../util/get-jsonfile-data');
|
|
4
5
|
const pathExists = require('../../util/path-exists');
|
|
5
|
-
const
|
|
6
|
+
const { containerApi } = require('../docker/containers');
|
|
6
7
|
|
|
7
8
|
const composerLockPath = path.join(process.cwd(), 'composer.lock');
|
|
9
|
+
const envPhpPath = path.join(process.cwd(), 'app', 'etc', 'env.php');
|
|
8
10
|
/**
|
|
9
11
|
* @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
10
12
|
*/
|
|
@@ -12,13 +14,19 @@ const updateEnvPHP = () => ({
|
|
|
12
14
|
title: 'Updating env.php',
|
|
13
15
|
task: async (ctx, task) => {
|
|
14
16
|
// update env.php only if it's exist
|
|
15
|
-
if (!await pathExists(
|
|
17
|
+
if (!await pathExists(envPhpPath)) {
|
|
16
18
|
task.skip();
|
|
17
19
|
return;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
+
const { php } = ctx.config.docker.getContainers(ctx.ports);
|
|
23
|
+
|
|
24
|
+
const isLinux = ctx.platform === 'linux';
|
|
25
|
+
const isNativeLinux = isLinux && !ctx.isWsl;
|
|
26
|
+
const hostMachine = isNativeLinux ? '127.0.0.1' : 'host.docker.internal';
|
|
27
|
+
|
|
28
|
+
const useVarnish = (!ctx.debug && ctx.config.overridenConfiguration.configuration.varnish.enabled) ? '1' : '';
|
|
29
|
+
const varnishHost = hostMachine;
|
|
22
30
|
const varnishPort = ctx.ports.varnish;
|
|
23
31
|
const previousVarnishPort = ctx.cachedPorts
|
|
24
32
|
? ctx.cachedPorts.varnish
|
|
@@ -34,15 +42,15 @@ const updateEnvPHP = () => ({
|
|
|
34
42
|
ctx.CSAThemeInstalled = true;
|
|
35
43
|
}
|
|
36
44
|
|
|
37
|
-
const envPhp = await envPhpToJson(
|
|
45
|
+
const envPhp = await envPhpToJson(ctx);
|
|
38
46
|
|
|
39
47
|
const persistedQueryConfig = envPhp.cache && envPhp.cache['persisted-query'];
|
|
40
48
|
|
|
41
49
|
if (
|
|
42
50
|
persistedQueryConfig
|
|
43
51
|
&& persistedQueryConfig.redis
|
|
44
|
-
&& persistedQueryConfig.redis.port
|
|
45
|
-
|
|
52
|
+
&& (persistedQueryConfig.redis.port !== `${ ctx.ports.redis }`
|
|
53
|
+
|| persistedQueryConfig.redis.host === hostMachine)
|
|
46
54
|
) {
|
|
47
55
|
SETUP_PQ = '';
|
|
48
56
|
return;
|
|
@@ -50,20 +58,30 @@ const updateEnvPHP = () => ({
|
|
|
50
58
|
}
|
|
51
59
|
}
|
|
52
60
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
const result = await containerApi.run({
|
|
62
|
+
env: {
|
|
63
|
+
USE_VARNISH: useVarnish,
|
|
64
|
+
VARNISH_PORT: `${ varnishPort }`,
|
|
65
|
+
VARNISH_HOST: varnishHost,
|
|
66
|
+
PREVIOUS_VARNISH_PORT: `${ previousVarnishPort }`,
|
|
67
|
+
SETUP_PQ,
|
|
68
|
+
REDIS_PORT: ctx.ports.redis,
|
|
69
|
+
ADMIN_URI: ctx.config.overridenConfiguration.magento.adminuri,
|
|
70
|
+
HOST_MACHINE: hostMachine,
|
|
71
|
+
PORTS: JSON.stringify(ctx.ports)
|
|
72
|
+
},
|
|
73
|
+
command: 'php ./update-env-php.php',
|
|
74
|
+
mountVolumes: [
|
|
75
|
+
`${path.join(__dirname, 'update-env.php')}:${ctx.config.baseConfig.containerMagentoDir}/update-env-php.php`,
|
|
76
|
+
`${envPhpPath}:/${ctx.config.baseConfig.containerMagentoDir}/env.php`
|
|
77
|
+
],
|
|
78
|
+
image: php.image,
|
|
79
|
+
detach: false,
|
|
80
|
+
rm: true,
|
|
81
|
+
user: isLinux ? `${os.userInfo().uid}:${os.userInfo().gid}` : ''
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
task.output = result;
|
|
67
85
|
}
|
|
68
86
|
});
|
|
69
87
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
function varexport($expression, $return=false): string
|
|
4
4
|
{
|
|
5
5
|
$export = var_export($expression, true);
|
|
6
|
-
$export = preg_replace("/^([ ]*)(.*)/m",
|
|
6
|
+
$export = preg_replace("/^([ ]*)(.*)/m", "$1$1$2", $export);
|
|
7
7
|
$array = preg_split("/\r\n|\n|\r/", $export);
|
|
8
|
-
$array = preg_replace(["/\s*array\s\($/", "/\)(,)?$/", "/\s=>\s$/"], [null,
|
|
8
|
+
$array = preg_replace(["/\s*array\s\($/", "/\)(,)?$/", "/\s=>\s$/"], [null, "]$1", " => ["], $array);
|
|
9
9
|
$export = join(PHP_EOL, array_filter(["["] + $array));
|
|
10
10
|
if ((bool)$return) {
|
|
11
11
|
return $export;
|
|
@@ -19,12 +19,12 @@ function joinpaths(): string
|
|
|
19
19
|
$paths = array();
|
|
20
20
|
|
|
21
21
|
foreach (func_get_args() as $arg) {
|
|
22
|
-
if ($arg !==
|
|
22
|
+
if ($arg !== "") {
|
|
23
23
|
$paths[] = $arg;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return preg_replace(
|
|
27
|
+
return preg_replace("#/+#", "/", join("/", $paths));
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
class EnvUpdater
|
|
@@ -42,7 +42,7 @@ class EnvUpdater
|
|
|
42
42
|
|
|
43
43
|
public function loadConfig()
|
|
44
44
|
{
|
|
45
|
-
$this->config = require
|
|
45
|
+
$this->config = require "./env.php";
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
@@ -63,14 +63,14 @@ class EnvUpdater
|
|
|
63
63
|
|
|
64
64
|
public function loadPortConfig()
|
|
65
65
|
{
|
|
66
|
-
$portConfigContent =
|
|
66
|
+
$portConfigContent = getenv("PORTS");
|
|
67
67
|
if ($portConfigContent === false) {
|
|
68
|
-
throw new Error(
|
|
68
|
+
throw new Error("Ports env does not exists");
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
$portConfigJsonData = json_decode($portConfigContent, true);
|
|
72
72
|
if ($portConfigJsonData === null) {
|
|
73
|
-
throw new Error(
|
|
73
|
+
throw new Error("Ports env is not parseable");
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
$this->portConfig = $portConfigJsonData;
|
|
@@ -79,91 +79,96 @@ class EnvUpdater
|
|
|
79
79
|
public function modifyConfig()
|
|
80
80
|
{
|
|
81
81
|
// set admin uri
|
|
82
|
-
$this->config[
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
82
|
+
$this->config["backend"]["frontName"] = getenv("ADMIN_URI");
|
|
83
|
+
$hostMachine = getenv("HOST_MACHINE");
|
|
84
|
+
if ($hostMachine === false) {
|
|
85
|
+
$hostMachine = '127.0.0.1';
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// update mariadb config
|
|
89
|
+
if (isset($this->config["db"]["connection"]["default"])) {
|
|
90
|
+
$conn = &$this->config["db"]["connection"]["default"];
|
|
91
|
+
$mysqlHost = $hostMachine . ":" . $this->portConfig["mariadb"];
|
|
92
|
+
|
|
93
|
+
$conn["host"] = $mysqlHost;
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
// update redis session config
|
|
98
97
|
if (
|
|
99
|
-
isset($this->config[
|
|
100
|
-
$this->config[
|
|
101
|
-
$this->config[
|
|
98
|
+
isset($this->config["session"]) &&
|
|
99
|
+
$this->config["session"]["save"] === "redis" &&
|
|
100
|
+
$this->config["session"]["redis"]["port"] !== strval($this->portConfig["redis"])
|
|
102
101
|
) {
|
|
103
|
-
$this->config[
|
|
102
|
+
$this->config["session"]["redis"]["port"] = strval($this->portConfig["redis"]);
|
|
104
103
|
}
|
|
105
104
|
|
|
106
105
|
if (
|
|
107
|
-
isset($this->config[
|
|
108
|
-
$this->config[
|
|
109
|
-
$this->config[
|
|
106
|
+
isset($this->config["session"]) &&
|
|
107
|
+
$this->config["session"]["save"] === "redis" &&
|
|
108
|
+
$this->config["session"]["redis"]["host"] !== $hostMachine
|
|
110
109
|
) {
|
|
111
|
-
$this->config[
|
|
110
|
+
$this->config["session"]["redis"]["host"] = $hostMachine;
|
|
112
111
|
}
|
|
113
112
|
|
|
114
113
|
// update redis frontend config
|
|
115
|
-
if (isset($this->config[
|
|
116
|
-
$frontendCache = &$this->config[
|
|
117
|
-
if ($frontendCache[
|
|
118
|
-
$frontendCache[
|
|
114
|
+
if (isset($this->config["cache"]["frontend"]["default"])) {
|
|
115
|
+
$frontendCache = &$this->config["cache"]["frontend"]["default"];
|
|
116
|
+
if ($frontendCache["backend_options"]["port"] !== strval($this->portConfig["redis"])) {
|
|
117
|
+
$frontendCache["backend_options"]["port"] = strval($this->portConfig["redis"]);
|
|
119
118
|
}
|
|
120
|
-
if ($frontendCache[
|
|
121
|
-
$frontendCache[
|
|
119
|
+
if ($frontendCache["backend_options"]["server"] !== $hostMachine) {
|
|
120
|
+
$frontendCache["backend_options"]["server"] = $hostMachine;
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
// update persisted query redis config
|
|
126
|
-
if (getenv(
|
|
127
|
-
$cacheConfig = &$this->config[
|
|
128
|
-
$redisPort = getenv(
|
|
125
|
+
if (getenv("SETUP_PQ") == "1") {
|
|
126
|
+
$cacheConfig = &$this->config["cache"];
|
|
127
|
+
$redisPort = getenv("REDIS_PORT");
|
|
129
128
|
|
|
130
|
-
if (isset($cacheConfig) && isset($cacheConfig[
|
|
131
|
-
$cacheConfig[
|
|
129
|
+
if (isset($cacheConfig) && isset($cacheConfig["persisted-query"]) && isset($cacheConfig["persisted-query"]["redis"])) {
|
|
130
|
+
if ($cacheConfig["persisted-query"]["redis"]["port"] !== $redisPort) {
|
|
131
|
+
$cacheConfig["persisted-query"]["redis"]["port"] = $redisPort;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if ($cacheConfig["persisted-query"]["redis"]["host"] !== $hostMachine) {
|
|
135
|
+
$cacheConfig["persisted-query"]["redis"]["host"] = $hostMachine;
|
|
136
|
+
}
|
|
132
137
|
} else {
|
|
133
138
|
if (!isset($cacheConfig)) {
|
|
134
|
-
$this->config[
|
|
139
|
+
$this->config["cache"] = [];
|
|
135
140
|
}
|
|
136
|
-
$this->config[
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
141
|
+
$this->config["cache"]["persisted-query"] = [
|
|
142
|
+
"redis" => [
|
|
143
|
+
"host" => $hostMachine,
|
|
144
|
+
"port" => $redisPort,
|
|
145
|
+
"database" => "5",
|
|
146
|
+
"scheme" => "tcp"
|
|
142
147
|
]
|
|
143
148
|
];
|
|
144
149
|
}
|
|
145
150
|
} else {
|
|
146
|
-
unset($this->config[
|
|
151
|
+
unset($this->config["cache"]["persisted-query"]);
|
|
147
152
|
}
|
|
148
153
|
|
|
149
154
|
// set varnish config
|
|
150
|
-
$httpCacheHosts = &$this->config[
|
|
155
|
+
$httpCacheHosts = &$this->config["http_cache_hosts"];
|
|
151
156
|
$httpCacheHosts = [];
|
|
152
157
|
|
|
153
|
-
if (getenv(
|
|
154
|
-
$varnishHost = getenv(
|
|
155
|
-
$varnishPort = getenv(
|
|
156
|
-
$previousVarnishPort = getenv(
|
|
158
|
+
if (getenv("USE_VARNISH") == "1") {
|
|
159
|
+
$varnishHost = getenv("VARNISH_HOST");
|
|
160
|
+
$varnishPort = getenv("VARNISH_PORT");
|
|
161
|
+
$previousVarnishPort = getenv("PREVIOUS_VARNISH_PORT");
|
|
157
162
|
$varnishConfig = [
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
"host" => $varnishHost,
|
|
164
|
+
"port" => $varnishPort
|
|
160
165
|
];
|
|
161
166
|
|
|
162
167
|
if (isset($httpCacheHosts)) {
|
|
163
168
|
$varnishHostExists = false;
|
|
164
169
|
foreach ($httpCacheHosts as $host) {
|
|
165
|
-
if ($host[
|
|
166
|
-
$host[
|
|
170
|
+
if ($host["host"] == $varnishHost && $host["port"] == $previousVarnishPort) {
|
|
171
|
+
$host["port"] = $varnishPort;
|
|
167
172
|
$varnishHostExists = true;
|
|
168
173
|
break;
|
|
169
174
|
}
|
|
@@ -173,10 +178,10 @@ class EnvUpdater
|
|
|
173
178
|
$httpCacheHosts = [$varnishConfig];
|
|
174
179
|
}
|
|
175
180
|
} else {
|
|
176
|
-
$this->config[
|
|
181
|
+
$this->config["http_cache_hosts"] = [$varnishConfig];
|
|
177
182
|
}
|
|
178
183
|
} else {
|
|
179
|
-
unset($this->config[
|
|
184
|
+
unset($this->config["http_cache_hosts"]);
|
|
180
185
|
}
|
|
181
186
|
}
|
|
182
187
|
|
|
@@ -184,7 +189,7 @@ class EnvUpdater
|
|
|
184
189
|
{
|
|
185
190
|
file_put_contents(
|
|
186
191
|
$filePath,
|
|
187
|
-
|
|
192
|
+
"<?php".PHP_EOL."return ".varexport($this->config, true).";" . PHP_EOL
|
|
188
193
|
);
|
|
189
194
|
}
|
|
190
195
|
|
|
@@ -193,7 +198,7 @@ class EnvUpdater
|
|
|
193
198
|
$this->loadConfig();
|
|
194
199
|
$this->loadPortConfig();
|
|
195
200
|
$this->modifyConfig();
|
|
196
|
-
$this->saveConfig(
|
|
201
|
+
$this->saveConfig("./env.php");
|
|
197
202
|
}
|
|
198
203
|
}
|
|
199
204
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Copyright © Magento, Inc. All rights reserved.
|
|
4
|
+
* See COPYING.txt for license details.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
use Magento\Framework\Config\ConfigOptionsListConstants;
|
|
8
|
+
|
|
9
|
+
register_shutdown_function("fatalErrorHandler");
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
// phpcs:ignore Magento2.Security.IncludeFile
|
|
13
|
+
require __DIR__ . '/../app/bootstrap.php';
|
|
14
|
+
/** @var \Magento\Framework\App\ObjectManagerFactory $objectManagerFactory */
|
|
15
|
+
$objectManagerFactory = \Magento\Framework\App\Bootstrap::createObjectManagerFactory(BP, []);
|
|
16
|
+
/** @var \Magento\Framework\ObjectManagerInterface $objectManager */
|
|
17
|
+
$objectManager = $objectManagerFactory->create([]);
|
|
18
|
+
/** @var \Magento\Framework\App\DeploymentConfig $deploymentConfig */
|
|
19
|
+
$deploymentConfig = $objectManager->get(\Magento\Framework\App\DeploymentConfig::class);
|
|
20
|
+
/** @var \Psr\Log\LoggerInterface $logger */
|
|
21
|
+
$logger = $objectManager->get(\Psr\Log\LoggerInterface::class);
|
|
22
|
+
} catch (\Exception $e) {
|
|
23
|
+
http_response_code(500);
|
|
24
|
+
// phpcs:ignore Magento2.Security.LanguageConstruct
|
|
25
|
+
exit(1);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// check mysql connectivity
|
|
29
|
+
foreach ($deploymentConfig->get(ConfigOptionsListConstants::CONFIG_PATH_DB_CONNECTIONS) as $connectionData) {
|
|
30
|
+
try {
|
|
31
|
+
/** @var \Magento\Framework\DB\Adapter\Pdo\Mysql $dbAdapter */
|
|
32
|
+
$dbAdapter = $objectManager->create(
|
|
33
|
+
\Magento\Framework\DB\Adapter\Pdo\Mysql::class,
|
|
34
|
+
['config' => $connectionData]
|
|
35
|
+
);
|
|
36
|
+
$dbAdapter->getConnection();
|
|
37
|
+
} catch (\Exception $e) {
|
|
38
|
+
http_response_code(500);
|
|
39
|
+
$logger->error("MySQL connection failed: " . $e->getMessage());
|
|
40
|
+
// phpcs:ignore Magento2.Security.LanguageConstruct
|
|
41
|
+
exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// check cache storage availability
|
|
45
|
+
$cacheConfigs = $deploymentConfig->get(ConfigOptionsListConstants::KEY_CACHE_FRONTEND);
|
|
46
|
+
if ($cacheConfigs) {
|
|
47
|
+
foreach ($cacheConfigs as $cacheConfig) {
|
|
48
|
+
// allow config if only available "id_prefix"
|
|
49
|
+
if (count($cacheConfig) === 1 && isset($cacheConfig['id_prefix'])) {
|
|
50
|
+
continue;
|
|
51
|
+
} elseif (!isset($cacheConfig[ConfigOptionsListConstants::CONFIG_PATH_BACKEND]) ||
|
|
52
|
+
!isset($cacheConfig[ConfigOptionsListConstants::CONFIG_PATH_BACKEND_OPTIONS])) {
|
|
53
|
+
http_response_code(500);
|
|
54
|
+
$logger->error("Cache configuration is invalid");
|
|
55
|
+
// phpcs:ignore Magento2.Security.LanguageConstruct
|
|
56
|
+
exit(1);
|
|
57
|
+
}
|
|
58
|
+
$cacheBackendClass = $cacheConfig[ConfigOptionsListConstants::CONFIG_PATH_BACKEND];
|
|
59
|
+
try {
|
|
60
|
+
/** @var \Magento\Framework\App\Cache\Frontend\Factory $cacheFrontendFactory */
|
|
61
|
+
$cacheFrontendFactory = $objectManager->get(Magento\Framework\App\Cache\Frontend\Factory::class);
|
|
62
|
+
/** @var \Zend_Cache_Backend_Interface $backend */
|
|
63
|
+
$backend = $cacheFrontendFactory->create($cacheConfig);
|
|
64
|
+
$backend->test('test_cache_id');
|
|
65
|
+
} catch (\Exception $e) {
|
|
66
|
+
http_response_code(500);
|
|
67
|
+
$logger->error("Cache storage is not accessible");
|
|
68
|
+
// phpcs:ignore Magento2.Security.LanguageConstruct
|
|
69
|
+
exit(1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Handle any fatal errors
|
|
76
|
+
*
|
|
77
|
+
* @return void
|
|
78
|
+
*/
|
|
79
|
+
function fatalErrorHandler()
|
|
80
|
+
{
|
|
81
|
+
$error = error_get_last();
|
|
82
|
+
if ($error !== null && $error['type'] === E_ERROR) {
|
|
83
|
+
http_response_code(500);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -4,10 +4,21 @@ const { execAsyncSpawn } = require('../../../util/exec-async-command');
|
|
|
4
4
|
const openBrowser = require('../../../util/open-browser');
|
|
5
5
|
const installDocker = require('./install');
|
|
6
6
|
const installDockerOnMac = require('./install-on-mac');
|
|
7
|
+
const { checkDockerPerformance } = require('./performance');
|
|
7
8
|
const { checkDockerSocketPermissions } = require('./permissions');
|
|
8
9
|
const checkDockerStatus = require('./running-status');
|
|
9
10
|
const getDockerVersion = require('./version');
|
|
10
11
|
|
|
12
|
+
const setVersionInContextTask = (task) => ({
|
|
13
|
+
task: (ctx) => {
|
|
14
|
+
if (ctx.platform === 'darwin' && ctx.dockerServerData && ctx.dockerServerData.Platform && ctx.dockerServerData.Platform.Name) {
|
|
15
|
+
task.title = `Using ${ctx.dockerServerData.Platform.Name} for Mac`;
|
|
16
|
+
} else {
|
|
17
|
+
task.title = `Using Docker version ${ctx.dockerVersion}`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
11
22
|
const dockerInstallPromptLinux = async (task) => {
|
|
12
23
|
const automaticallyInstallDocker = await task.prompt({
|
|
13
24
|
type: 'Confirm',
|
|
@@ -47,7 +58,6 @@ ${ logger.style.link('https://docs.create-magento-app.com/getting-started/prereq
|
|
|
47
58
|
};
|
|
48
59
|
|
|
49
60
|
/**
|
|
50
|
-
*
|
|
51
61
|
* @param {import('listr2').ListrTaskWrapper} task
|
|
52
62
|
*/
|
|
53
63
|
const dockerInstallPromptMacOS = async (task) => {
|
|
@@ -72,11 +82,7 @@ Would you like to install it automatically using brew cask or you prefer to inst
|
|
|
72
82
|
installDockerOnMac(),
|
|
73
83
|
checkDockerStatus(),
|
|
74
84
|
getDockerVersion(),
|
|
75
|
-
|
|
76
|
-
task: (ctx) => {
|
|
77
|
-
task.title = `Using Docker version ${ctx.dockerVersion}`;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
85
|
+
setVersionInContextTask(task)
|
|
80
86
|
]);
|
|
81
87
|
}
|
|
82
88
|
|
|
@@ -118,11 +124,7 @@ const checkDocker = () => ({
|
|
|
118
124
|
return task.newListr([
|
|
119
125
|
checkDockerStatus(),
|
|
120
126
|
getDockerVersion(),
|
|
121
|
-
|
|
122
|
-
task: (ctx) => {
|
|
123
|
-
task.title = `Using Docker version ${ctx.dockerVersion}`;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
127
|
+
setVersionInContextTask(task)
|
|
126
128
|
]);
|
|
127
129
|
}
|
|
128
130
|
});
|
|
@@ -133,7 +135,8 @@ const checkDocker = () => ({
|
|
|
133
135
|
module.exports = () => ({
|
|
134
136
|
task: (ctx, task) => task.newListr([
|
|
135
137
|
checkDockerSocketPermissions(),
|
|
136
|
-
checkDocker()
|
|
138
|
+
checkDocker(),
|
|
139
|
+
checkDockerPerformance()
|
|
137
140
|
], {
|
|
138
141
|
concurrent: false
|
|
139
142
|
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const os = require('os');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const semver = require('semver');
|
|
4
|
+
const getJsonfileData = require('../../../util/get-jsonfile-data');
|
|
5
|
+
const pathExists = require('../../../util/path-exists');
|
|
6
|
+
|
|
7
|
+
const dockerSettingsJsonPath = path.join(
|
|
8
|
+
os.homedir(),
|
|
9
|
+
'Library',
|
|
10
|
+
'Group Containers',
|
|
11
|
+
'group.com.docker',
|
|
12
|
+
'settings.json'
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
|
|
17
|
+
*/
|
|
18
|
+
const checkDockerPerformance = () => ({
|
|
19
|
+
title: 'Checking Docker Performance',
|
|
20
|
+
// eslint-disable-next-line no-return-await
|
|
21
|
+
skip: async (ctx) => ctx.platform !== 'darwin' || (ctx.platform === 'darwin' && !(await pathExists(dockerSettingsJsonPath))),
|
|
22
|
+
task: async (ctx, task) => {
|
|
23
|
+
const dockerSettings = await getJsonfileData(dockerSettingsJsonPath);
|
|
24
|
+
|
|
25
|
+
if (!dockerSettings) {
|
|
26
|
+
task.skip();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const dockerForMacVersionMatch = ctx.dockerServerData.Platform.Name.match(/(\d+\.\d+\.\d+)/i);
|
|
31
|
+
|
|
32
|
+
const dockerForMacVersion = dockerForMacVersionMatch && dockerForMacVersionMatch[1];
|
|
33
|
+
|
|
34
|
+
if (ctx.arch === 'arm64'
|
|
35
|
+
&& semver.gt('12.2.0', ctx.platformVersion)
|
|
36
|
+
&& semver.gt(dockerForMacVersion, '4.6.0')) {
|
|
37
|
+
if (!dockerSettings.useVirtualizationFrameworkVirtioFS) {
|
|
38
|
+
task.title = 'Performance is not optimal. VirtioFS is not enabled.';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (ctx.arch === 'x64'
|
|
43
|
+
&& semver.gt('12.3.0', ctx.platformVersion)
|
|
44
|
+
&& semver.gt(dockerForMacVersion, '4.6.0')) {
|
|
45
|
+
if (!dockerSettings.useVirtualizationFrameworkVirtioFS) {
|
|
46
|
+
task.title = 'Performance is not optimal. VirtioFS is not enabled.';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
module.exports = {
|
|
53
|
+
checkDockerPerformance
|
|
54
|
+
};
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
const UnknownError = require('../../../errors/unknown-error');
|
|
2
|
-
const {
|
|
2
|
+
const { version } = require('../../docker/api');
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
|
|
6
6
|
*/
|
|
7
7
|
const getDockerVersion = () => ({
|
|
8
8
|
task: async (ctx) => {
|
|
9
|
-
const
|
|
10
|
-
|
|
9
|
+
const dockerVersion = await version({
|
|
10
|
+
formatToJSON: true
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
-
if (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
ctx.dockerVersion = dockerVersion;
|
|
13
|
+
if (dockerVersion) {
|
|
14
|
+
ctx.dockerServerData = dockerVersion.Server;
|
|
15
|
+
ctx.dockerClientData = dockerVersion.Client;
|
|
16
|
+
ctx.dockerVersion = dockerVersion.Server.Version;
|
|
17
17
|
} else {
|
|
18
|
-
throw new UnknownError(`Got unexpected result during Docker version retrieval!\n\n${
|
|
18
|
+
throw new UnknownError(`Got unexpected result during Docker version retrieval!\n\n${ dockerVersion }`);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
const checkPlatform = require('./platform');
|
|
2
|
-
const
|
|
3
|
-
const
|
|
2
|
+
const { checkComposerCredentials } = require('./composer-credentials');
|
|
3
|
+
const localAuthJson = require('../composer/local-auth-json');
|
|
4
4
|
const checkDocker = require('./docker');
|
|
5
5
|
const checkNodeVersion = require('./node-version');
|
|
6
|
-
const checkPHPVersion = require('./php-version');
|
|
7
6
|
const checkRosetta = require('./rosetta');
|
|
8
7
|
|
|
9
8
|
/**
|
|
@@ -20,13 +19,11 @@ const checkRequirements = () => ({
|
|
|
20
19
|
checkDocker(),
|
|
21
20
|
// check for Node.js version
|
|
22
21
|
checkNodeVersion(),
|
|
23
|
-
// check the PHPBrew installation
|
|
24
|
-
checkPHPbrew(),
|
|
25
22
|
// check installed PHP version
|
|
26
|
-
checkPHPVersion(),
|
|
23
|
+
// checkPHPVersion(),
|
|
27
24
|
// check for COMPOSER_AUTH or auth.json
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
localAuthJson(),
|
|
26
|
+
checkComposerCredentials()
|
|
30
27
|
], {
|
|
31
28
|
concurrent: false,
|
|
32
29
|
exitOnError: true,
|