@scandipwa/magento-scripts 2.0.0-alpha.1 → 2.0.0-alpha.12

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.
Files changed (128) hide show
  1. package/exec.js +71 -0
  2. package/index.js +1 -1
  3. package/lib/commands/cli.js +5 -0
  4. package/lib/commands/execute.js +2 -57
  5. package/lib/commands/start.js +17 -3
  6. package/lib/commands/status.js +9 -1
  7. package/lib/config/config.js +20 -2
  8. package/lib/config/docker.js +51 -49
  9. package/lib/config/index.js +1 -1
  10. package/lib/config/php/versions/php-7.2.js +1 -0
  11. package/lib/config/php/versions/php-7.3.js +1 -0
  12. package/lib/config/php/versions/php-7.4.js +1 -0
  13. package/lib/config/php/versions/php-8.1.js +1 -0
  14. package/lib/config/php-config.js +4 -3
  15. package/lib/config/services/composer/versions/composer-1.js +8 -0
  16. package/lib/config/services/composer/versions/composer-2.js +8 -0
  17. package/lib/config/services/composer/versions/index.js +4 -0
  18. package/lib/config/services/elasticsearch/default-es-env.js +6 -0
  19. package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +2 -6
  20. package/lib/config/services/nginx/versions/index.js +3 -0
  21. package/lib/config/services/nginx/versions/nginx-1.18.js +11 -0
  22. package/lib/config/{ssl-terminator → services/ssl-terminator}/index.js +3 -0
  23. package/lib/config/templates/magentorc.template +6 -5
  24. package/lib/config/templates/php-debug.template.ini +31 -0
  25. package/lib/config/templates/php-fpm.template.conf +1 -2
  26. package/lib/config/templates/php.template.ini +6 -202
  27. package/lib/config/templates/ssl-terminator.template.conf +10 -3
  28. package/lib/config/templates/varnish.template.vcl +20 -13
  29. package/lib/config/varnish/varnish-6-0.js +4 -0
  30. package/lib/config/varnish/varnish-6-6.js +4 -0
  31. package/lib/config/varnish/varnish-7-0.js +4 -0
  32. package/lib/config/versions/magento-2.3.0.js +5 -9
  33. package/lib/config/versions/magento-2.3.1.js +5 -9
  34. package/lib/config/versions/magento-2.3.2-p1.js +5 -9
  35. package/lib/config/versions/magento-2.3.2-p2.js +5 -9
  36. package/lib/config/versions/magento-2.3.2.js +5 -9
  37. package/lib/config/versions/magento-2.3.3-p1.js +5 -9
  38. package/lib/config/versions/magento-2.3.3.js +5 -9
  39. package/lib/config/versions/magento-2.3.4-p1.js +5 -9
  40. package/lib/config/versions/magento-2.3.4-p2.js +5 -9
  41. package/lib/config/versions/magento-2.3.4.js +5 -9
  42. package/lib/config/versions/magento-2.3.5-p1.js +5 -9
  43. package/lib/config/versions/magento-2.3.5-p2.js +5 -9
  44. package/lib/config/versions/magento-2.3.5.js +5 -9
  45. package/lib/config/versions/magento-2.3.6-p1.js +5 -9
  46. package/lib/config/versions/magento-2.3.6.js +5 -9
  47. package/lib/config/versions/magento-2.3.7-p1.js +5 -9
  48. package/lib/config/versions/magento-2.3.7-p2.js +5 -9
  49. package/lib/config/versions/magento-2.3.7-p3.js +5 -9
  50. package/lib/config/versions/magento-2.3.7-p4.js +40 -0
  51. package/lib/config/versions/magento-2.3.7.js +5 -9
  52. package/lib/config/versions/magento-2.4.0-p1.js +5 -9
  53. package/lib/config/versions/magento-2.4.0.js +5 -9
  54. package/lib/config/versions/magento-2.4.1-p1.js +5 -9
  55. package/lib/config/versions/magento-2.4.1.js +5 -9
  56. package/lib/config/versions/magento-2.4.2-p1.js +5 -9
  57. package/lib/config/versions/magento-2.4.2-p2.js +5 -9
  58. package/lib/config/versions/magento-2.4.2.js +5 -9
  59. package/lib/config/versions/magento-2.4.3-p1.js +5 -9
  60. package/lib/config/versions/magento-2.4.3-p2.js +5 -9
  61. package/lib/config/versions/magento-2.4.3-p3.js +42 -0
  62. package/lib/config/versions/magento-2.4.3.js +5 -9
  63. package/lib/config/versions/magento-2.4.4-p1.js +42 -0
  64. package/lib/config/versions/magento-2.4.4.js +5 -9
  65. package/lib/config/versions/magento-2.4.5.js +42 -0
  66. package/lib/tasks/composer/local-auth-json.js +1 -1
  67. package/lib/tasks/database/connect-to-database.js +6 -3
  68. package/lib/tasks/database/create-magento-database.js +5 -2
  69. package/lib/tasks/database/create-magento-user.js +50 -0
  70. package/lib/tasks/database/default-magento-database.js +3 -0
  71. package/lib/tasks/database/default-magento-user.js +7 -0
  72. package/lib/tasks/database/import-dump-to-database.js +3 -2
  73. package/lib/tasks/docker/api.d.ts +25 -1
  74. package/lib/tasks/docker/api.js +31 -1
  75. package/lib/tasks/docker/containers/container-api.d.ts +18 -0
  76. package/lib/tasks/docker/containers/container-api.js +76 -17
  77. package/lib/tasks/docker/containers/tasks.js +32 -1
  78. package/lib/tasks/docker/index.js +6 -1
  79. package/lib/tasks/docker/project-image-builder.js +6 -8
  80. package/lib/tasks/docker/volume/index.js +2 -1
  81. package/lib/tasks/docker/volume/tasks.js +54 -9
  82. package/lib/tasks/docker/volume/volume-api.d.ts +10 -0
  83. package/lib/tasks/docker/volume/volume-api.js +25 -1
  84. package/lib/tasks/execute.js +100 -0
  85. package/lib/tasks/file-system/create-nginx-config.js +3 -5
  86. package/lib/tasks/file-system/create-php-config.js +2 -23
  87. package/lib/tasks/file-system/create-php-debug-config.js +45 -0
  88. package/lib/tasks/file-system/create-php-fpm-config.js +2 -4
  89. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-workspace-project-configuration-config.js +1 -1
  90. package/lib/tasks/file-system/create-ssl-terminator-config.js +4 -7
  91. package/lib/tasks/file-system/create-varnish-config.js +4 -7
  92. package/lib/tasks/file-system/index.js +2 -0
  93. package/lib/tasks/magento/enable-magento-composer-plugins.js +85 -30
  94. package/lib/tasks/magento/install-magento-project.js +3 -2
  95. package/lib/tasks/magento/setup-magento/configure-elasticsearch.js +2 -4
  96. package/lib/tasks/magento/setup-magento/flush-redis-config.js +3 -6
  97. package/lib/tasks/magento/setup-magento/install-magento.js +8 -10
  98. package/lib/tasks/magento/setup-magento/set-base-url.js +1 -1
  99. package/lib/tasks/magento/setup-magento/varnish-config.js +4 -9
  100. package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +17 -16
  101. package/lib/tasks/php/php-container.js +7 -3
  102. package/lib/tasks/php/update-env-php.js +3 -4
  103. package/lib/tasks/requirements/composer-credentials.js +7 -3
  104. package/lib/tasks/requirements/docker/context.js +88 -0
  105. package/lib/tasks/requirements/docker/index.js +110 -19
  106. package/lib/tasks/requirements/docker/install.js +21 -7
  107. package/lib/tasks/requirements/docker/permissions.js +2 -11
  108. package/lib/tasks/requirements/docker/running-status.js +94 -24
  109. package/lib/tasks/requirements/docker/version.js +1 -0
  110. package/lib/tasks/requirements/index.js +0 -2
  111. package/lib/tasks/requirements/php-version.js +4 -2
  112. package/lib/tasks/start.js +28 -7
  113. package/lib/tasks/status/index.js +13 -11
  114. package/lib/tasks/stop.js +2 -0
  115. package/lib/util/config-file-validator.js +2 -0
  116. package/lib/util/execute-in-container.js +63 -0
  117. package/lib/util/systemctl.js +62 -13
  118. package/package.json +4 -3
  119. package/typings/context.d.ts +7 -0
  120. package/typings/index.d.ts +38 -1
  121. package/lib/tasks/execute/index.js +0 -26
  122. package/lib/tasks/requirements/dependency/arch.js +0 -50
  123. package/lib/tasks/requirements/dependency/centos.js +0 -36
  124. package/lib/tasks/requirements/dependency/fedora.js +0 -36
  125. package/lib/tasks/requirements/dependency/index.js +0 -33
  126. package/lib/tasks/requirements/dependency/mac.js +0 -124
  127. package/lib/tasks/requirements/dependency/ubuntu.js +0 -83
  128. package/yarn-error.log +0 -9660
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer1 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.1',
@@ -15,10 +16,7 @@ module.exports = ({ templateDir } = {}) => ({
15
16
  extensions: { ...magento24PHPExtensionList, sodium },
16
17
  baseImage: `${ repo }:php-7.4-magento-2.4`
17
18
  }),
18
- nginx: {
19
- version: '1.18.0',
20
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
21
- },
19
+ nginx: nginx118({ templateDir }),
22
20
  redis: {
23
21
  version: '6.0.10-alpine'
24
22
  },
@@ -31,9 +29,7 @@ module.exports = ({ templateDir } = {}) => ({
31
29
  elasticsearch: {
32
30
  version: '7.12.1'
33
31
  },
34
- composer: {
35
- version: '1'
36
- },
32
+ composer: composer1(),
37
33
  varnish: varnish66({ templateDir }),
38
34
  sslTerminator: sslTerminator({ templateDir })
39
35
  },
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.2-p1',
@@ -16,10 +17,7 @@ module.exports = ({ templateDir } = {}) => ({
16
17
  extensions: { ...magento24PHPExtensionList, sodium },
17
18
  baseImage: `${ repo }:php-7.4-magento-2.4`
18
19
  }),
19
- nginx: {
20
- version: '1.18.0',
21
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
22
- },
20
+ nginx: nginx118({ templateDir }),
23
21
  redis: {
24
22
  version: '6.0'
25
23
  },
@@ -32,9 +30,7 @@ module.exports = ({ templateDir } = {}) => ({
32
30
  elasticsearch: {
33
31
  version: '7.12.1'
34
32
  },
35
- composer: {
36
- version: '2'
37
- },
33
+ composer: composer2(),
38
34
  varnish: varnish66({ templateDir }),
39
35
  sslTerminator: sslTerminator({ templateDir })
40
36
  },
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.2-p2',
@@ -16,10 +17,7 @@ module.exports = ({ templateDir } = {}) => ({
16
17
  extensions: { ...magento24PHPExtensionList, sodium },
17
18
  baseImage: `${ repo }:php-7.4-magento-2.4`
18
19
  }),
19
- nginx: {
20
- version: '1.18.0',
21
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
22
- },
20
+ nginx: nginx118({ templateDir }),
23
21
  redis: {
24
22
  version: '6.0'
25
23
  },
@@ -32,9 +30,7 @@ module.exports = ({ templateDir } = {}) => ({
32
30
  elasticsearch: {
33
31
  version: '7.12.1'
34
32
  },
35
- composer: {
36
- version: '2'
37
- },
33
+ composer: composer2(),
38
34
  varnish: varnish66({ templateDir }),
39
35
  sslTerminator: sslTerminator({ templateDir })
40
36
  },
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.2',
@@ -15,10 +16,7 @@ module.exports = ({ templateDir } = {}) => ({
15
16
  extensions: { ...magento24PHPExtensionList, sodium },
16
17
  baseImage: `${ repo }:php-7.4-magento-2.4`
17
18
  }),
18
- nginx: {
19
- version: '1.18.0',
20
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
21
- },
19
+ nginx: nginx118({ templateDir }),
22
20
  redis: {
23
21
  version: '6.0'
24
22
  },
@@ -31,9 +29,7 @@ module.exports = ({ templateDir } = {}) => ({
31
29
  elasticsearch: {
32
30
  version: '7.12.1'
33
31
  },
34
- composer: {
35
- version: '2'
36
- },
32
+ composer: composer2(),
37
33
  varnish: varnish66({ templateDir }),
38
34
  sslTerminator: sslTerminator({ templateDir })
39
35
  },
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.3-p1',
@@ -16,10 +17,7 @@ module.exports = ({ templateDir } = {}) => ({
16
17
  extensions: { ...magento24PHPExtensionList, sodium },
17
18
  baseImage: `${ repo }:php-7.4-magento-2.4`
18
19
  }),
19
- nginx: {
20
- version: '1.18.0',
21
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
22
- },
20
+ nginx: nginx118({ templateDir }),
23
21
  redis: {
24
22
  version: '6.0'
25
23
  },
@@ -32,9 +30,7 @@ module.exports = ({ templateDir } = {}) => ({
32
30
  elasticsearch: {
33
31
  version: '7.16.3'
34
32
  },
35
- composer: {
36
- version: '2'
37
- },
33
+ composer: composer2(),
38
34
  varnish: varnish66({ templateDir }),
39
35
  sslTerminator: sslTerminator({ templateDir })
40
36
  },
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.3-p2',
@@ -16,10 +17,7 @@ module.exports = ({ templateDir } = {}) => ({
16
17
  extensions: { ...magento24PHPExtensionList, sodium },
17
18
  baseImage: `${ repo }:php-7.4-magento-2.4`
18
19
  }),
19
- nginx: {
20
- version: '1.18.0',
21
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
22
- },
20
+ nginx: nginx118({ templateDir }),
23
21
  redis: {
24
22
  version: '6.0'
25
23
  },
@@ -32,9 +30,7 @@ module.exports = ({ templateDir } = {}) => ({
32
30
  elasticsearch: {
33
31
  version: '7.16.3'
34
32
  },
35
- composer: {
36
- version: '2'
37
- },
33
+ composer: composer2(),
38
34
  varnish: varnish66({ templateDir }),
39
35
  sslTerminator: sslTerminator({ templateDir })
40
36
  },
@@ -0,0 +1,42 @@
1
+ const { defaultMagentoConfig } = require('../magento-config');
2
+ const sodium = require('../php/extensions/sodium');
3
+ const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
4
+ const { php74 } = require('../php/versions');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
6
+ const { varnish66 } = require('../varnish/varnish-6-6');
7
+ const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
10
+
11
+ module.exports = ({ templateDir } = {}) => ({
12
+ magentoVersion: '2.4.3-p3',
13
+ isDefault: true,
14
+ configuration: {
15
+ php: php74({
16
+ templateDir,
17
+ extensions: { ...magento24PHPExtensionList, sodium },
18
+ baseImage: `${ repo }:php-7.4-magento-2.4`
19
+ }),
20
+ nginx: nginx118({ templateDir }),
21
+ redis: {
22
+ version: '6.0'
23
+ },
24
+ mysql: {
25
+ version: '8.0'
26
+ },
27
+ mariadb: {
28
+ version: '10.4'
29
+ },
30
+ elasticsearch: {
31
+ version: '7.16.3'
32
+ },
33
+ composer: composer2(),
34
+ varnish: varnish66({ templateDir }),
35
+ sslTerminator: sslTerminator({ templateDir })
36
+ },
37
+ magento: defaultMagentoConfig,
38
+ host: 'localhost',
39
+ ssl: {
40
+ enabled: false
41
+ }
42
+ });
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php74 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish66 } = require('../varnish/varnish-6-6');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.3',
@@ -16,10 +17,7 @@ module.exports = ({ templateDir } = {}) => ({
16
17
  extensions: { ...magento24PHPExtensionList, sodium },
17
18
  baseImage: `${ repo }:php-7.4-magento-2.4`
18
19
  }),
19
- nginx: {
20
- version: '1.18.0',
21
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
22
- },
20
+ nginx: nginx118({ templateDir }),
23
21
  redis: {
24
22
  version: '6.0'
25
23
  },
@@ -32,9 +30,7 @@ module.exports = ({ templateDir } = {}) => ({
32
30
  elasticsearch: {
33
31
  version: '7.16.3'
34
32
  },
35
- composer: {
36
- version: '2'
37
- },
33
+ composer: composer2(),
38
34
  varnish: varnish66({ templateDir }),
39
35
  sslTerminator: sslTerminator({ templateDir })
40
36
  },
@@ -0,0 +1,42 @@
1
+ const { defaultMagentoConfig } = require('../magento-config');
2
+ const sodium = require('../php/extensions/sodium');
3
+ const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
4
+ const { php81 } = require('../php/versions');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
6
+ const { varnish70 } = require('../varnish/varnish-7-0');
7
+ const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
10
+
11
+ module.exports = ({ templateDir } = {}) => ({
12
+ magentoVersion: '2.4.4-p1',
13
+ isDefault: true,
14
+ configuration: {
15
+ php: php81({
16
+ templateDir,
17
+ extensions: { ...magento24PHPExtensionList, sodium },
18
+ baseImage: `${ repo }:php-8.1-magento-2.4`
19
+ }),
20
+ nginx: nginx118({ templateDir }),
21
+ redis: {
22
+ version: '6.0'
23
+ },
24
+ mysql: {
25
+ version: '8.0'
26
+ },
27
+ mariadb: {
28
+ version: '10.4'
29
+ },
30
+ elasticsearch: {
31
+ version: '7.16.3'
32
+ },
33
+ composer: composer2(),
34
+ varnish: varnish70({ templateDir }),
35
+ sslTerminator: sslTerminator({ templateDir })
36
+ },
37
+ magento: defaultMagentoConfig,
38
+ host: 'localhost',
39
+ ssl: {
40
+ enabled: false
41
+ }
42
+ });
@@ -1,11 +1,12 @@
1
- const path = require('path');
2
1
  const { defaultMagentoConfig } = require('../magento-config');
3
2
  const sodium = require('../php/extensions/sodium');
4
3
  const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
5
4
  const { php81 } = require('../php/versions');
6
- const { sslTerminator } = require('../ssl-terminator');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
7
6
  const { varnish70 } = require('../varnish/varnish-7-0');
8
7
  const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
9
10
 
10
11
  module.exports = ({ templateDir } = {}) => ({
11
12
  magentoVersion: '2.4.4',
@@ -16,10 +17,7 @@ module.exports = ({ templateDir } = {}) => ({
16
17
  extensions: { ...magento24PHPExtensionList, sodium },
17
18
  baseImage: `${ repo }:php-8.1-magento-2.4`
18
19
  }),
19
- nginx: {
20
- version: '1.18.0',
21
- configTemplate: path.join(templateDir || '', 'nginx.template.conf')
22
- },
20
+ nginx: nginx118({ templateDir }),
23
21
  redis: {
24
22
  version: '6.0'
25
23
  },
@@ -32,9 +30,7 @@ module.exports = ({ templateDir } = {}) => ({
32
30
  elasticsearch: {
33
31
  version: '7.16.3'
34
32
  },
35
- composer: {
36
- version: '2'
37
- },
33
+ composer: composer2(),
38
34
  varnish: varnish70({ templateDir }),
39
35
  sslTerminator: sslTerminator({ templateDir })
40
36
  },
@@ -0,0 +1,42 @@
1
+ const { defaultMagentoConfig } = require('../magento-config');
2
+ const sodium = require('../php/extensions/sodium');
3
+ const { magento24PHPExtensionList } = require('../magento/required-php-extensions');
4
+ const { php81 } = require('../php/versions');
5
+ const { sslTerminator } = require('../services/ssl-terminator');
6
+ const { varnish70 } = require('../varnish/varnish-7-0');
7
+ const { repo } = require('../php/base-repo');
8
+ const { nginx118 } = require('../services/nginx/versions');
9
+ const { composer2 } = require('../services/composer/versions');
10
+
11
+ module.exports = ({ templateDir } = {}) => ({
12
+ magentoVersion: '2.4.5',
13
+ isDefault: true,
14
+ configuration: {
15
+ php: php81({
16
+ templateDir,
17
+ extensions: { ...magento24PHPExtensionList, sodium },
18
+ baseImage: `${ repo }:php-8.1-magento-2.4`
19
+ }),
20
+ nginx: nginx118({ templateDir }),
21
+ redis: {
22
+ version: '6.0'
23
+ },
24
+ mysql: {
25
+ version: '8.0'
26
+ },
27
+ mariadb: {
28
+ version: '10.4'
29
+ },
30
+ elasticsearch: {
31
+ version: '7.17.5'
32
+ },
33
+ composer: composer2(),
34
+ varnish: varnish70({ templateDir }),
35
+ sslTerminator: sslTerminator({ templateDir })
36
+ },
37
+ magento: defaultMagentoConfig,
38
+ host: 'localhost',
39
+ ssl: {
40
+ enabled: false
41
+ }
42
+ });
@@ -27,7 +27,7 @@ const localAuthJson = () => ({
27
27
  throw new KnownError(`Your ./auth.json file does not contain the ${ logger.style.misc("{ 'http-basic': { 'repo.magento.com': <> } }") } field.`);
28
28
  }
29
29
 
30
- process.env.COMPOSER_AUTH = localAuthJson;
30
+ process.env.COMPOSER_AUTH = JSON.stringify(JSON.parse(localAuthJson), null, 0);
31
31
  }
32
32
  },
33
33
  options: {
@@ -3,6 +3,8 @@ const UnknownError = require('../../errors/unknown-error');
3
3
  const { execAsyncSpawn } = require('../../util/exec-async-command');
4
4
  const sleep = require('../../util/sleep');
5
5
  const { createMagentoDatabase } = require('./create-magento-database');
6
+ const { createMagentoUser } = require('./create-magento-user');
7
+ const defaultMagentoUser = require('./default-magento-user');
6
8
 
7
9
  /**
8
10
  * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -60,9 +62,9 @@ const gettingDatabaseConnection = () => ({
60
62
  const connection = await mysql2.createConnection({
61
63
  host: '127.0.0.1',
62
64
  port: ports.mariadb,
63
- user: mariadb.env.MARIADB_USER,
64
- password: mariadb.env.MARIADB_PASSWORD,
65
- database: mariadb.env.MARIADB_DATABASE
65
+ user: defaultMagentoUser.user,
66
+ password: defaultMagentoUser.password,
67
+ database: 'magento'
66
68
  });
67
69
 
68
70
  ctx.databaseConnection = connection;
@@ -101,6 +103,7 @@ const connectToDatabase = () => ({
101
103
  task: (ctx, task) => task.newListr([
102
104
  waitForDatabaseInitialization(),
103
105
  createMagentoDatabase(),
106
+ createMagentoUser(),
104
107
  terminatingExistingConnection(),
105
108
  gettingDatabaseConnection()
106
109
  ], {
@@ -1,4 +1,4 @@
1
- const { execAsyncSpawn } = require('../../util/exec-async-command');
1
+ const { containerApi } = require('../docker/containers');
2
2
 
3
3
  /**
4
4
  * Will create database 'magento' in MariaDB if it does not exist for some reason
@@ -9,7 +9,10 @@ const createMagentoDatabase = () => ({
9
9
  task: async (ctx, task) => {
10
10
  const { mariadb } = ctx.config.docker.getContainers();
11
11
  task.title = `Creating Magento database in ${ mariadb._ }`;
12
- await execAsyncSpawn(`docker exec ${mariadb.name} mysql -umagento -pmagento -h 127.0.0.1 -e "CREATE DATABASE IF NOT EXISTS magento;"`);
12
+ await containerApi.exec(
13
+ `mysql -uroot -p${ mariadb.env.MARIADB_ROOT_PASSWORD } -h 127.0.0.1 -e "CREATE DATABASE IF NOT EXISTS magento;"`,
14
+ mariadb.name
15
+ );
13
16
  }
14
17
  });
15
18
 
@@ -0,0 +1,50 @@
1
+ const mysql2 = require('mysql2/promise');
2
+ const defaultMagentoUser = require('./default-magento-user');
3
+
4
+ /**
5
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
6
+ */
7
+ const createMagentoUser = () => ({
8
+ title: 'Creating Magento user',
9
+ task: async (ctx, task) => {
10
+ const { mariadb } = ctx.config.docker.getContainers();
11
+ const connection = await mysql2.createConnection({
12
+ host: '127.0.0.1',
13
+ port: ctx.ports.mariadb,
14
+ user: 'root',
15
+ password: mariadb.env.MARIADB_ROOT_PASSWORD
16
+ });
17
+
18
+ const result = await connection.query('select Host, User from mysql.user;');
19
+
20
+ if (result.length === 0) {
21
+ task.skip();
22
+ return;
23
+ }
24
+
25
+ const [users] = result;
26
+
27
+ if (users.some((user) => user.User === defaultMagentoUser.user && user.Host === '%')) {
28
+ task.skip();
29
+ return;
30
+ }
31
+
32
+ if (users.some((user) => user.User === defaultMagentoUser.user)) {
33
+ const magentoUser = users.find((user) => user.User === defaultMagentoUser.user);
34
+
35
+ await connection.query(`DROP USER '${ magentoUser.User }'@'${ magentoUser.Host }'`);
36
+ }
37
+
38
+ await connection.query(
39
+ `CREATE USER '${ defaultMagentoUser.user }'@'${ defaultMagentoUser.host }' IDENTIFIED BY '${ defaultMagentoUser.password }';`
40
+ );
41
+ await connection.query(`GRANT ALL PRIVILEGES ON *.* TO '${ defaultMagentoUser.user }'@'${ defaultMagentoUser.host }' WITH GRANT OPTION;`);
42
+ await connection.query('FLUSH PRIVILEGES;');
43
+
44
+ await connection.destroy();
45
+ }
46
+ });
47
+
48
+ module.exports = {
49
+ createMagentoUser
50
+ };
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ defaultMagentoDatabase: 'magento'
3
+ };
@@ -0,0 +1,7 @@
1
+ const defaultMagentoUser = {
2
+ user: 'magento',
3
+ password: 'magento',
4
+ host: '%'
5
+ };
6
+
7
+ module.exports = defaultMagentoUser;
@@ -5,6 +5,7 @@ const UnknownError = require('../../errors/unknown-error');
5
5
  const { execAsyncSpawn, execCommandTask } = require('../../util/exec-async-command');
6
6
  const pathExists = require('../../util/path-exists');
7
7
  const connectToDatabase = require('./connect-to-database');
8
+ const defaultMagentoUser = require('./default-magento-user');
8
9
 
9
10
  /**
10
11
  * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -88,8 +89,8 @@ const executeImportDumpSQL = () => ({
88
89
  message: `root (${logger.style.command('Probably safest option')})`
89
90
  },
90
91
  {
91
- name: `--user=${mariadb.env.MARIADB_USER} --password=${mariadb.env.MARIADB_PASSWORD}`,
92
- message: `${mariadb.env.MARIADB_USER}`
92
+ name: `--user=${defaultMagentoUser.user} --password=${defaultMagentoUser.password}`,
93
+ message: `${defaultMagentoUser.user}`
93
94
  }
94
95
  ]
95
96
  });
@@ -1,7 +1,6 @@
1
1
  import { ExecAsyncSpawnOptions } from '../../util/exec-async-command';
2
2
 
3
3
  export interface DockerVersionOptions<T extends boolean = false> {
4
- format?: string
5
4
  format?: string
6
5
  formatToJSON?: T
7
6
  }
@@ -69,3 +68,28 @@ export function version(
69
68
  options: DockerVersionOptions<true>,
70
69
  execOptions?: ExecAsyncSpawnOptions<false>
71
70
  ): Promise<DockerVersionResult>
71
+
72
+ export interface DockerContextOptions<T extends boolean = false> {
73
+ format?: string
74
+ formatToJSON?: T
75
+ }
76
+
77
+ export interface DockerContextResult {
78
+ Current: boolean
79
+ Description: string
80
+ DockerEndpoint: string
81
+ KubernetesEndpoint: string
82
+ ContextType: string
83
+ Name: string
84
+ StackOrchestrator: string
85
+ }
86
+
87
+ export function context(
88
+ options: DockerContextOptions,
89
+ execOptions?: ExecAsyncSpawnOptions<false>
90
+ ): Promise<string>
91
+
92
+ export function context(
93
+ options: DockerContextOptions<true>,
94
+ execOptions?: ExecAsyncSpawnOptions<false>
95
+ ): Promise<DockerContextResult[]>
@@ -25,6 +25,36 @@ const version = async (options, execOptions = {}) => {
25
25
  return execAsyncSpawn(`docker version ${args}`, execOptions);
26
26
  };
27
27
 
28
+ /**
29
+ * @param {import('./api').DockerContextOptions} options
30
+ * @param {import('../../util/exec-async-command').ExecAsyncSpawnOptions} execOptions
31
+ */
32
+ const context = async (options, execOptions = {}) => {
33
+ const {
34
+ format,
35
+ formatToJSON
36
+ } = options;
37
+
38
+ const formatArg = !formatToJSON && format
39
+ ? `--format=${format}`
40
+ : formatToJSON && '--format=\'{{json .}}\'';
41
+ const args = [
42
+ formatArg
43
+ ].filter(Boolean).join(' ');
44
+
45
+ if (formatToJSON) {
46
+ const result = await execAsyncSpawn(`docker context ls ${args}`, execOptions);
47
+ if (result.startsWith('[')) {
48
+ return JSON.parse(result);
49
+ }
50
+
51
+ return JSON.parse(`[${result.split('\n').join(', ')}]`);
52
+ }
53
+
54
+ return execAsyncSpawn(`docker context ls ${args}`, execOptions);
55
+ };
56
+
28
57
  module.exports = {
29
- version
58
+ version,
59
+ context
30
60
  };