@scandipwa/magento-scripts 1.16.1 → 2.0.0-alpha.10
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/exec.js +71 -0
- package/index.js +1 -1
- package/lib/commands/cli.js +4 -6
- package/lib/commands/execute.js +3 -33
- 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 +103 -85
- 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/default-es-env.js +6 -0
- package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +19 -0
- package/lib/config/services/elasticsearch/versions/index.js +5 -0
- package/lib/config/templates/magentorc.template +6 -6
- 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 +9 -4
- 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-p4.js +44 -0
- 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-p3.js +46 -0
- package/lib/config/versions/magento-2.4.3.js +7 -7
- package/lib/config/versions/magento-2.4.4-p1.js +46 -0
- package/lib/config/versions/magento-2.4.4.js +9 -2
- package/lib/config/versions/magento-2.4.5.js +46 -0
- 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 +132 -0
- package/lib/tasks/docker/containers/container-api.js +163 -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.js +97 -0
- 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/enable-magento-composer-plugins.js +85 -30
- package/lib/tasks/magento/install-magento-project.js +32 -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 +2 -0
- package/lib/tasks/magento/setup-magento/install-magento.js +21 -20
- package/lib/tasks/magento/setup-magento/migrate-database.js +7 -14
- package/lib/tasks/magento/setup-magento/set-base-url.js +3 -3
- 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 +10 -8
- package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +130 -3
- package/lib/tasks/php/php-container.js +112 -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 +18 -13
- 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 +21 -50
- 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/execute-in-container.js +63 -0
- 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 +11 -10
- package/typings/context.d.ts +7 -13
- package/typings/index.d.ts +67 -85
- 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/execute/index.js +0 -23
- 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
|
@@ -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',
|
|
@@ -19,6 +30,7 @@ NOTE: After installation it's recommended to log out and log back in so your gro
|
|
|
19
30
|
if (automaticallyInstallDocker) {
|
|
20
31
|
return task.newListr([
|
|
21
32
|
installDocker(),
|
|
33
|
+
checkDockerSocketPermissions(),
|
|
22
34
|
getDockerVersion(),
|
|
23
35
|
{
|
|
24
36
|
task: (ctx) => {
|
|
@@ -47,7 +59,6 @@ ${ logger.style.link('https://docs.create-magento-app.com/getting-started/prereq
|
|
|
47
59
|
};
|
|
48
60
|
|
|
49
61
|
/**
|
|
50
|
-
*
|
|
51
62
|
* @param {import('listr2').ListrTaskWrapper} task
|
|
52
63
|
*/
|
|
53
64
|
const dockerInstallPromptMacOS = async (task) => {
|
|
@@ -70,13 +81,10 @@ Would you like to install it automatically using brew cask or you prefer to inst
|
|
|
70
81
|
if (confirmationToInstallDocker === 'automatic') {
|
|
71
82
|
return task.newListr([
|
|
72
83
|
installDockerOnMac(),
|
|
84
|
+
checkDockerSocketPermissions(),
|
|
73
85
|
checkDockerStatus(),
|
|
74
86
|
getDockerVersion(),
|
|
75
|
-
|
|
76
|
-
task: (ctx) => {
|
|
77
|
-
task.title = `Using Docker version ${ctx.dockerVersion}`;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
87
|
+
setVersionInContextTask(task)
|
|
80
88
|
]);
|
|
81
89
|
}
|
|
82
90
|
|
|
@@ -116,13 +124,10 @@ const checkDocker = () => ({
|
|
|
116
124
|
}
|
|
117
125
|
|
|
118
126
|
return task.newListr([
|
|
127
|
+
checkDockerSocketPermissions(),
|
|
119
128
|
checkDockerStatus(),
|
|
120
129
|
getDockerVersion(),
|
|
121
|
-
|
|
122
|
-
task: (ctx) => {
|
|
123
|
-
task.title = `Using Docker version ${ctx.dockerVersion}`;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
130
|
+
setVersionInContextTask(task)
|
|
126
131
|
]);
|
|
127
132
|
}
|
|
128
133
|
});
|
|
@@ -132,8 +137,8 @@ const checkDocker = () => ({
|
|
|
132
137
|
*/
|
|
133
138
|
module.exports = () => ({
|
|
134
139
|
task: (ctx, task) => task.newListr([
|
|
135
|
-
|
|
136
|
-
|
|
140
|
+
checkDocker(),
|
|
141
|
+
checkDockerPerformance()
|
|
137
142
|
], {
|
|
138
143
|
concurrent: false
|
|
139
144
|
})
|
|
@@ -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,
|