@scandipwa/magento-scripts 2.0.0-alpha.17 → 2.0.0-alpha.19

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 (48) hide show
  1. package/lib/commands/start.js +7 -0
  2. package/lib/config/docker.js +31 -1
  3. package/lib/config/port-config.js +3 -1
  4. package/lib/config/services/maildev/index.js +7 -0
  5. package/lib/config/versions/magento-2.2.10.js +3 -1
  6. package/lib/config/versions/magento-2.3.0.js +3 -1
  7. package/lib/config/versions/magento-2.3.1.js +3 -1
  8. package/lib/config/versions/magento-2.3.2-p1.js +3 -1
  9. package/lib/config/versions/magento-2.3.2-p2.js +3 -1
  10. package/lib/config/versions/magento-2.3.2.js +3 -1
  11. package/lib/config/versions/magento-2.3.3-p1.js +3 -1
  12. package/lib/config/versions/magento-2.3.3.js +3 -1
  13. package/lib/config/versions/magento-2.3.4-p1.js +3 -1
  14. package/lib/config/versions/magento-2.3.4-p2.js +3 -1
  15. package/lib/config/versions/magento-2.3.4.js +3 -1
  16. package/lib/config/versions/magento-2.3.5-p1.js +3 -1
  17. package/lib/config/versions/magento-2.3.5-p2.js +3 -1
  18. package/lib/config/versions/magento-2.3.5.js +3 -1
  19. package/lib/config/versions/magento-2.3.6-p1.js +3 -1
  20. package/lib/config/versions/magento-2.3.6.js +3 -1
  21. package/lib/config/versions/magento-2.3.7-p1.js +3 -1
  22. package/lib/config/versions/magento-2.3.7-p2.js +3 -1
  23. package/lib/config/versions/magento-2.3.7-p3.js +3 -1
  24. package/lib/config/versions/magento-2.3.7-p4.js +3 -1
  25. package/lib/config/versions/magento-2.3.7.js +3 -1
  26. package/lib/config/versions/magento-2.4.0-p1.js +3 -1
  27. package/lib/config/versions/magento-2.4.0.js +3 -1
  28. package/lib/config/versions/magento-2.4.1-p1.js +3 -1
  29. package/lib/config/versions/magento-2.4.1.js +3 -1
  30. package/lib/config/versions/magento-2.4.2-p1.js +3 -1
  31. package/lib/config/versions/magento-2.4.2-p2.js +3 -1
  32. package/lib/config/versions/magento-2.4.2.js +3 -1
  33. package/lib/config/versions/magento-2.4.3-p1.js +3 -1
  34. package/lib/config/versions/magento-2.4.3-p2.js +3 -1
  35. package/lib/config/versions/magento-2.4.3-p3.js +3 -1
  36. package/lib/config/versions/magento-2.4.3.js +3 -1
  37. package/lib/config/versions/magento-2.4.4-p1.js +3 -1
  38. package/lib/config/versions/magento-2.4.4.js +3 -1
  39. package/lib/config/versions/magento-2.4.5.js +3 -1
  40. package/lib/tasks/docker/convert-composer-home-to-composer-cache-volume.js +9 -0
  41. package/lib/tasks/docker/system/index.js +5 -0
  42. package/lib/tasks/docker/system/system-api.d.ts +71 -0
  43. package/lib/tasks/docker/system/system-api.js +29 -0
  44. package/lib/tasks/magento/setup-magento/index.js +2 -0
  45. package/lib/tasks/magento/setup-magento/set-mail-config.js +26 -0
  46. package/lib/util/instance-metadata.js +14 -2
  47. package/package.json +2 -2
  48. package/typings/context.d.ts +2 -0
@@ -150,6 +150,13 @@ module.exports = (yargs) => {
150
150
  block.addLine(` ${title}: ${text}`);
151
151
  });
152
152
 
153
+ block.addEmptyLine();
154
+
155
+ block.addLine(logger.style.misc('MailDev'));
156
+ instanceMetadata.maildev.forEach(({ title, text }) => {
157
+ block.addLine(` ${title}: ${text}`);
158
+ });
159
+
153
160
  const themes = await getCSAThemes();
154
161
  if (themes.length > 0) {
155
162
  const theme = themes[0];
@@ -23,7 +23,8 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
23
23
  redis,
24
24
  elasticsearch,
25
25
  mariadb,
26
- varnish
26
+ varnish,
27
+ maildev
27
28
  } = configuration;
28
29
 
29
30
  const php = getPhpConfig(overridenConfiguration, baseConfig);
@@ -55,6 +56,9 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
55
56
  opts: {
56
57
  mode: 'z'
57
58
  }
59
+ },
60
+ maildev: {
61
+ name: `${ prefix }_maildev-data`
58
62
  }
59
63
  };
60
64
 
@@ -271,6 +275,32 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
271
275
  network: network.name,
272
276
  image: `${ elasticsearch.version ? `elasticsearch:${ elasticsearch.version }` : elasticsearch.image }`,
273
277
  name: `${ prefix }_elasticsearch`
278
+ },
279
+ maildev: {
280
+ _: 'MailDev',
281
+ ports: isDockerDesktop ? [
282
+ `127.0.0.1:${ ports.maildevWeb }:1080`,
283
+ `127.0.0.1:${ ports.maildevSMTP }:1025`
284
+ ] : [],
285
+ forwardedPorts: isDockerDesktop ? [
286
+ `127.0.0.1:${ ports.maildevWeb }:1080`,
287
+ `127.0.0.1:${ ports.maildevSMTP }:1025`
288
+ ] : [
289
+ `127.0.0.1:${ ports.maildevWeb }`,
290
+ `127.0.0.1:${ ports.maildevSMTP }`
291
+ ],
292
+ mountVolumes: [
293
+ `${ volumes.maildev.name }:/tmp/maildev`
294
+ ],
295
+ env: {
296
+ MAILDEV_SMTP_PORT: isDockerDesktop ? '1025' : ports.maildevSMTP,
297
+ MAILDEV_WEB_PORT: isDockerDesktop ? '1080' : ports.maildevWeb,
298
+ MAILDEV_MAIL_DIRECTORY: '/tmp/maildev'
299
+ },
300
+ name: `${ prefix }_maildev`,
301
+ network: isDockerDesktop ? network.name : 'host',
302
+ image: maildev.image,
303
+ user: !isDockerDesktop ? 'root:root' : ''
274
304
  }
275
305
  };
276
306
 
@@ -60,7 +60,9 @@ const defaultPorts = {
60
60
  fpm: 9000,
61
61
  mariadb: 3306,
62
62
  redis: 6379,
63
- elasticsearch: 9200
63
+ elasticsearch: 9200,
64
+ maildevSMTP: 1025,
65
+ maildevWeb: 1080
64
66
  };
65
67
 
66
68
  /**
@@ -0,0 +1,7 @@
1
+ const maildev = () => ({
2
+ image: 'maildev/maildev'
3
+ });
4
+
5
+ module.exports = {
6
+ maildev
7
+ };
@@ -4,6 +4,7 @@ const { repo } = require('../php/base-repo');
4
4
  const { php72 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
6
  const { elasticsearch68 } = require('../services/elasticsearch/versions');
7
+ const { maildev } = require('../services/maildev');
7
8
  const { nginx118 } = require('../services/nginx/versions');
8
9
  const { sslTerminator } = require('../services/ssl-terminator');
9
10
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -4,6 +4,7 @@ const { repo } = require('../php/base-repo');
4
4
  const { php72 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
6
  const { elasticsearch68 } = require('../services/elasticsearch/versions');
7
+ const { maildev } = require('../services/maildev');
7
8
  const { nginx118 } = require('../services/nginx/versions');
8
9
  const { sslTerminator } = require('../services/ssl-terminator');
9
10
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.1',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.2-p1',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.2-p2',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.2',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.3-p1',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.3',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.4-p1',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.4-p2',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -7,6 +7,7 @@ const { sslTerminator } = require('../services/ssl-terminator');
7
7
  const { varnish66 } = require('../varnish/varnish-6-6');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.3.4',
@@ -29,7 +30,8 @@ module.exports = ({ templateDir } = {}) => ({
29
30
  elasticsearch: elasticsearch68(),
30
31
  composer: composer1(),
31
32
  varnish: varnish66({ templateDir }),
32
- sslTerminator: sslTerminator({ templateDir })
33
+ sslTerminator: sslTerminator({ templateDir }),
34
+ maildev: maildev()
33
35
  },
34
36
  magento: defaultMagentoConfig,
35
37
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php73 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php73 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php73 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php73 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php73 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer2 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer2(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer2 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer2(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer2 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer2(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer2 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer2(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento23PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer2 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish66 } = require('../varnish/varnish-6-6');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer2(),
32
33
  varnish: varnish66({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento24PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish60 } = require('../varnish/varnish-6-0');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish60({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -3,6 +3,7 @@ const { magento24PHPExtensionList } = require('../magento/required-php-extension
3
3
  const { repo } = require('../php/base-repo');
4
4
  const { php74 } = require('../php/versions');
5
5
  const { composer1 } = require('../services/composer/versions');
6
+ const { maildev } = require('../services/maildev');
6
7
  const { nginx118 } = require('../services/nginx/versions');
7
8
  const { sslTerminator } = require('../services/ssl-terminator');
8
9
  const { varnish60 } = require('../varnish/varnish-6-0');
@@ -30,7 +31,8 @@ module.exports = ({ templateDir } = {}) => ({
30
31
  },
31
32
  composer: composer1(),
32
33
  varnish: varnish60({ templateDir }),
33
- sslTerminator: sslTerminator({ templateDir })
34
+ sslTerminator: sslTerminator({ templateDir }),
35
+ maildev: maildev()
34
36
  },
35
37
  magento: defaultMagentoConfig,
36
38
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.1-p1',
@@ -31,7 +32,8 @@ module.exports = ({ templateDir } = {}) => ({
31
32
  },
32
33
  composer: composer1(),
33
34
  varnish: varnish66({ templateDir }),
34
- sslTerminator: sslTerminator({ templateDir })
35
+ sslTerminator: sslTerminator({ templateDir }),
36
+ maildev: maildev()
35
37
  },
36
38
  magento: defaultMagentoConfig,
37
39
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer1 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.1',
@@ -31,7 +32,8 @@ module.exports = ({ templateDir } = {}) => ({
31
32
  },
32
33
  composer: composer1(),
33
34
  varnish: varnish66({ templateDir }),
34
- sslTerminator: sslTerminator({ templateDir })
35
+ sslTerminator: sslTerminator({ templateDir }),
36
+ maildev: maildev()
35
37
  },
36
38
  magento: defaultMagentoConfig,
37
39
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.2-p1',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish66({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.2-p2',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish66({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.2',
@@ -31,7 +32,8 @@ module.exports = ({ templateDir } = {}) => ({
31
32
  },
32
33
  composer: composer2(),
33
34
  varnish: varnish66({ templateDir }),
34
- sslTerminator: sslTerminator({ templateDir })
35
+ sslTerminator: sslTerminator({ templateDir }),
36
+ maildev: maildev()
35
37
  },
36
38
  magento: defaultMagentoConfig,
37
39
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.3-p1',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish66({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.3-p2',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish66({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.3-p3',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish66({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish66 } = require('../varnish/varnish-6-6');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.3',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish66({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish70 } = require('../varnish/varnish-7-0');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.4-p1',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish70({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish70 } = require('../varnish/varnish-7-0');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.4',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish70({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -7,6 +7,7 @@ const { varnish70 } = require('../varnish/varnish-7-0');
7
7
  const { repo } = require('../php/base-repo');
8
8
  const { nginx118 } = require('../services/nginx/versions');
9
9
  const { composer2 } = require('../services/composer/versions');
10
+ const { maildev } = require('../services/maildev');
10
11
 
11
12
  module.exports = ({ templateDir } = {}) => ({
12
13
  magentoVersion: '2.4.5',
@@ -32,7 +33,8 @@ module.exports = ({ templateDir } = {}) => ({
32
33
  },
33
34
  composer: composer2(),
34
35
  varnish: varnish70({ templateDir }),
35
- sslTerminator: sslTerminator({ templateDir })
36
+ sslTerminator: sslTerminator({ templateDir }),
37
+ maildev: maildev()
36
38
  },
37
39
  magento: defaultMagentoConfig,
38
40
  host: 'localhost',
@@ -34,6 +34,15 @@ const convertComposerHomeToComposerCacheVolume = () => ({
34
34
  command: 'ash -c "cd /from/cache; cp -av . /to"'
35
35
  });
36
36
 
37
+ const runningContainers = await volumeApi.inspect({ volume: composeHomeDataVolumeName, formatToJSON: true });
38
+
39
+ if (runningContainers.Containers && Object.entries(runningContainers.Containers).length > 0) {
40
+ await Promise.all(Object.values(runningContainers.Containers).map(async (c) => {
41
+ await containerApi.stop([c.Name]);
42
+ await containerApi.rm([c.Name]);
43
+ }));
44
+ }
45
+
37
46
  await volumeApi.rm({ volumes: [composeHomeDataVolumeName] });
38
47
  }
39
48
  });
@@ -0,0 +1,5 @@
1
+ const systemApi = require('./system-api');
2
+
3
+ module.exports = {
4
+ systemApi
5
+ };
@@ -0,0 +1,71 @@
1
+ import { ExecAsyncSpawnOptions } from '../../../util/exec-async-command';
2
+
3
+ export interface SystemDFOptions<T extends boolean = false> {
4
+ format?: string
5
+ formatToJSON?: T
6
+ verbose?: boolean
7
+ }
8
+
9
+ export interface SystemDFResult {
10
+ Images: {
11
+ Containers: string
12
+ CreatedAt: string
13
+ CreatedSince: string
14
+ Digest: string
15
+ ID: string
16
+ Repository: string
17
+ SharedSize: string
18
+ Size: string
19
+ Tag: string
20
+ UniqueSize: string
21
+ VirtualSize: string
22
+ }[]
23
+ Containers: {
24
+ Command: string
25
+ CreatedAt: string
26
+ ID: string
27
+ Image: string
28
+ Labels: string
29
+ LocalVolumes: string
30
+ Mounts: string
31
+ Names: string
32
+ Networks: string
33
+ Ports: StreamPipeOptions
34
+ RunningFor: string
35
+ Size: string
36
+ State: string
37
+ Status: string
38
+ }[]
39
+ Volumes: {
40
+ Driver: string
41
+ Labels: string
42
+ Links: string
43
+ Mountpoint: string
44
+ Name: string
45
+ Scope: string
46
+ Size: string
47
+ }[]
48
+ BuildCache: {
49
+ CacheType: string
50
+ CreatedAt: string
51
+ CreatedSince: string
52
+ Description: string
53
+ ID: string
54
+ InUse: string
55
+ LastUsedAt: string
56
+ LastUsedSince: string
57
+ Parent: string
58
+ Shared: string
59
+ Size: string
60
+ UsageCount: string
61
+ }[]
62
+ }
63
+
64
+ export function df(
65
+ options?: SystemDFOptions,
66
+ execOptions?: ExecAsyncSpawnOptions<false>
67
+ ): Promise<string>
68
+ export function df(
69
+ options?: SystemDFOptions<true>,
70
+ execOptions?: ExecAsyncSpawnOptions<false>
71
+ ): Promise<SystemDFResult>
@@ -0,0 +1,29 @@
1
+ const { execAsyncSpawn } = require('../../../util/exec-async-command');
2
+
3
+ /**
4
+ * @param {import('./system-api').SystemDFOptions} options
5
+ * @param {import('../../../util/exec-async-command').ExecAsyncSpawnOptions} execOptions
6
+ */
7
+ const df = async (options, execOptions = {}) => {
8
+ const {
9
+ format,
10
+ formatToJSON,
11
+ verbose
12
+ } = options;
13
+
14
+ const formatArg = !formatToJSON && format
15
+ ? `--format=${format}`
16
+ : formatToJSON && '--format=\'{{json .}}\'';
17
+ const verboseArg = verbose && '--verbose';
18
+
19
+ const args = [
20
+ formatArg,
21
+ verboseArg
22
+ ].filter(Boolean).join(' ');
23
+
24
+ return execAsyncSpawn(`docker system df ${args}`, execOptions);
25
+ };
26
+
27
+ module.exports = {
28
+ df
29
+ };
@@ -12,6 +12,7 @@ const magentoTask = require('../../../util/magento-task');
12
12
  const urnHighlighter = require('./urn-highlighter');
13
13
  const adjustFullPageCache = require('./adjust-full-page-cache');
14
14
  const updateEnvPHP = require('../../php/update-env-php');
15
+ const setMailConfig = require('./set-mail-config');
15
16
 
16
17
  /**
17
18
  * @param {Object} [options]
@@ -40,6 +41,7 @@ const setupMagento = (options = {}) => ({
40
41
  task: (ctx, task) => task.newListr([
41
42
  setBaseUrl(),
42
43
  setUrlRewrite(),
44
+ setMailConfig(),
43
45
  increaseAdminSessionLifetime()
44
46
  ], {
45
47
  concurrent: true
@@ -0,0 +1,26 @@
1
+ const { updateTableValues } = require('../../../util/database');
2
+
3
+ /**
4
+ * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
5
+ */
6
+ const setMailConfig = () => ({
7
+ title: 'Setting up mail configuration',
8
+ task: async ({ databaseConnection, ports, isDockerDesktop }, task) => {
9
+ await updateTableValues('core_config_data', [
10
+ {
11
+ path: 'system/smtp/port',
12
+ value: `${ ports.maildevSMTP }`
13
+ },
14
+ {
15
+ path: 'system/smtp/disable',
16
+ value: '0'
17
+ },
18
+ {
19
+ path: 'system/smtp/host',
20
+ value: isDockerDesktop ? 'host.docker.internal' : 'localhost'
21
+ }
22
+ ], { databaseConnection, task });
23
+ }
24
+ });
25
+
26
+ module.exports = setMailConfig;
@@ -4,6 +4,7 @@ const WEB_LOCAL_LOCATION_TITLE = `Location on ${ logger.style.misc('localhost')
4
4
  const WEB_LOCATION_TITLE = 'Location on the Web';
5
5
  const WEB_ADMIN_LOCATION_TITLE = 'Panel location';
6
6
  const WEB_ADMIN_CREDENTIALS_TITLE = 'Panel credentials';
7
+ const WEB_MAILDEV_LOCATION_TITLE = 'Panel location';
7
8
 
8
9
  const mapDataStyle = ({ title, text }) => ({
9
10
  title,
@@ -13,7 +14,7 @@ const mapDataStyle = ({ title, text }) => ({
13
14
 
14
15
  /**
15
16
  * @param {import("../../typings/context").ListrContext} ctx
16
- * @return {{ frontend: { title: string, text: string }[], admin: { title: string, url: string }[]}}
17
+ * @return {{ frontend: { title: string, text: string }[], admin: { title: string, url: string }[], maildev: { title: string, text: string }[] }}
17
18
  */
18
19
  const getInstanceMetadata = (ctx) => {
19
20
  const {
@@ -34,6 +35,11 @@ const getInstanceMetadata = (ctx) => {
34
35
  */
35
36
  const admin = [];
36
37
 
38
+ /**
39
+ * @type {{ title: string, text: string }[]}
40
+ */
41
+ const maildev = [];
42
+
37
43
  const isNgrok = host.endsWith('ngrok.io');
38
44
 
39
45
  if (isNgrok) {
@@ -64,9 +70,15 @@ const getInstanceMetadata = (ctx) => {
64
70
  text: `${logger.style.misc(magentoConfiguration.user)} - ${logger.style.misc(magentoConfiguration.password)}`
65
71
  });
66
72
 
73
+ maildev.push({
74
+ title: WEB_MAILDEV_LOCATION_TITLE,
75
+ text: `http://${host}:${ports.maildevWeb}/`
76
+ });
77
+
67
78
  return {
68
79
  admin,
69
- frontend: frontend.map(mapDataStyle)
80
+ frontend: frontend.map(mapDataStyle),
81
+ maildev: maildev.map(mapDataStyle)
70
82
  };
71
83
  };
72
84
 
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Scripts and configuration used by CMA.",
4
4
  "homepage": "https://docs.create-magento-app.com/",
5
5
  "repository": "github:scandipwa/create-magento-app",
6
- "version": "2.0.0-alpha.17",
6
+ "version": "2.0.0-alpha.19",
7
7
  "main": "./index.js",
8
8
  "types": "./typings/index.d.ts",
9
9
  "license": "OSL-3.0",
@@ -54,5 +54,5 @@
54
54
  "mysql",
55
55
  "scandipwa"
56
56
  ],
57
- "gitHead": "8c4f3c41e8c96d259e22748b47d1b3a524af12f8"
57
+ "gitHead": "2d7e861d1eaf008fab03679406ff5ee2abedba35"
58
58
  }
@@ -19,6 +19,8 @@ export interface ListrContext {
19
19
  elasticsearch: number
20
20
  varnish: number
21
21
  sslTerminator: number
22
+ maildevSMTP: number
23
+ maildevWeb: number
22
24
  }
23
25
  arch: 'arm64' | 'x64'
24
26
  isArm: boolean