@scandipwa/magento-scripts 2.0.3 → 2.0.5

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 (347) hide show
  1. package/.eslintrc +6 -1
  2. package/exec.js +75 -39
  3. package/index.js +87 -46
  4. package/lib/commands/cleanup.js +18 -21
  5. package/lib/commands/cli.js +138 -73
  6. package/lib/commands/execute.js +5 -5
  7. package/lib/commands/import-db.js +21 -24
  8. package/lib/commands/link.js +17 -20
  9. package/lib/commands/logs.js +91 -91
  10. package/lib/commands/start.js +229 -191
  11. package/lib/commands/status.js +64 -50
  12. package/lib/commands/stop.js +14 -11
  13. package/lib/config/check-configuration-file.js +33 -28
  14. package/lib/config/cma-config.js +4 -4
  15. package/lib/config/config.js +40 -18
  16. package/lib/config/dependencies-for-platforms.js +33 -3
  17. package/lib/config/docker.js +259 -160
  18. package/lib/config/get-magento-version-config.js +45 -38
  19. package/lib/config/get-port-config.js +30 -44
  20. package/lib/config/get-project-configuration.js +8 -8
  21. package/lib/config/index.js +51 -42
  22. package/lib/config/magento/required-php-extensions/index.js +33 -19
  23. package/lib/config/magento/required-php-extensions/magento-2.3.js +2 -2
  24. package/lib/config/magento/required-php-extensions/magento-2.4.js +2 -2
  25. package/lib/config/magento-config.js +4 -4
  26. package/lib/config/php-config.js +8 -6
  27. package/lib/config/port-config.js +62 -43
  28. package/lib/config/save-config.js +6 -6
  29. package/lib/config/scandipwa-versions.js +2 -2
  30. package/lib/config/services/composer/versions/composer-1.js +2 -2
  31. package/lib/config/services/composer/versions/composer-2.js +2 -2
  32. package/lib/config/services/composer/versions/index.js +1 -1
  33. package/lib/config/services/elasticsearch/base-repo.js +1 -1
  34. package/lib/config/services/elasticsearch/default-es-env.js +4 -1
  35. package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +17 -14
  36. package/lib/config/services/elasticsearch/versions/elasticsearch-7.10.js +4 -4
  37. package/lib/config/services/elasticsearch/versions/elasticsearch-7.12.js +4 -4
  38. package/lib/config/services/elasticsearch/versions/elasticsearch-7.16.js +4 -4
  39. package/lib/config/services/elasticsearch/versions/elasticsearch-7.17.js +4 -4
  40. package/lib/config/services/elasticsearch/versions/elasticsearch-7.6.js +4 -4
  41. package/lib/config/services/elasticsearch/versions/elasticsearch-7.7.js +4 -4
  42. package/lib/config/services/elasticsearch/versions/elasticsearch-7.9.js +4 -4
  43. package/lib/config/services/elasticsearch/versions/index.js +9 -9
  44. package/lib/config/services/maildev/index.js +5 -2
  45. package/lib/config/services/mariadb/versions/index.js +1 -1
  46. package/lib/config/services/mariadb/versions/mariadb-10.2.js +5 -4
  47. package/lib/config/services/mariadb/versions/mariadb-10.3.js +5 -4
  48. package/lib/config/services/mariadb/versions/mariadb-10.4.js +5 -4
  49. package/lib/config/services/nginx/versions/index.js +1 -1
  50. package/lib/config/services/nginx/versions/nginx-1.18.js +5 -4
  51. package/lib/config/services/php/base-repo.js +1 -1
  52. package/lib/config/services/php/extensions/apcu.js +3 -3
  53. package/lib/config/services/php/extensions/bcmath.js +2 -2
  54. package/lib/config/services/php/extensions/curl.js +3 -6
  55. package/lib/config/services/php/extensions/gd.js +4 -3
  56. package/lib/config/services/php/extensions/index.js +9 -8
  57. package/lib/config/services/php/extensions/intl.js +3 -5
  58. package/lib/config/services/php/extensions/opcache.js +3 -5
  59. package/lib/config/services/php/extensions/pdo_mysql.js +2 -2
  60. package/lib/config/services/php/extensions/soap.js +3 -5
  61. package/lib/config/services/php/extensions/sodium.js +3 -5
  62. package/lib/config/services/php/extensions/xdebug.js +5 -3
  63. package/lib/config/services/php/extensions/xsl.js +3 -5
  64. package/lib/config/services/php/extensions/zip.js +3 -5
  65. package/lib/config/services/php/versions/index.js +1 -1
  66. package/lib/config/services/php/versions/php-7.2.js +13 -9
  67. package/lib/config/services/php/versions/php-7.3.js +13 -9
  68. package/lib/config/services/php/versions/php-7.4.js +13 -9
  69. package/lib/config/services/php/versions/php-8.1.js +13 -9
  70. package/lib/config/services/redis/index.js +1 -1
  71. package/lib/config/services/redis/redis-5.0.js +2 -2
  72. package/lib/config/services/redis/redis-6.0.js +2 -2
  73. package/lib/config/services/redis/redis-6.2.js +2 -2
  74. package/lib/config/services/ssl-terminator/index.js +6 -5
  75. package/lib/config/services/varnish/index.js +1 -1
  76. package/lib/config/services/varnish/varnish-6-0.js +7 -5
  77. package/lib/config/services/varnish/varnish-6-6.js +7 -5
  78. package/lib/config/services/varnish/varnish-7-0.js +7 -5
  79. package/lib/config/system-config.js +55 -32
  80. package/lib/config/templates/mariadb.template.cnf +8 -0
  81. package/lib/config/versions/index.js +48 -27
  82. package/lib/config/versions/magento-2.2.10.js +22 -15
  83. package/lib/config/versions/magento-2.3.0.js +22 -15
  84. package/lib/config/versions/magento-2.3.1.js +22 -15
  85. package/lib/config/versions/magento-2.3.2-p1.js +22 -15
  86. package/lib/config/versions/magento-2.3.2-p2.js +22 -15
  87. package/lib/config/versions/magento-2.3.2.js +22 -15
  88. package/lib/config/versions/magento-2.3.3-p1.js +22 -15
  89. package/lib/config/versions/magento-2.3.3.js +22 -15
  90. package/lib/config/versions/magento-2.3.4-p1.js +22 -15
  91. package/lib/config/versions/magento-2.3.4-p2.js +22 -15
  92. package/lib/config/versions/magento-2.3.4.js +22 -15
  93. package/lib/config/versions/magento-2.3.5-p1.js +22 -15
  94. package/lib/config/versions/magento-2.3.5-p2.js +22 -15
  95. package/lib/config/versions/magento-2.3.5.js +27 -15
  96. package/lib/config/versions/magento-2.3.6-p1.js +22 -15
  97. package/lib/config/versions/magento-2.3.6.js +22 -15
  98. package/lib/config/versions/magento-2.3.7-p1.js +22 -15
  99. package/lib/config/versions/magento-2.3.7-p2.js +22 -15
  100. package/lib/config/versions/magento-2.3.7-p3.js +22 -15
  101. package/lib/config/versions/magento-2.3.7-p4.js +22 -15
  102. package/lib/config/versions/magento-2.3.7.js +22 -15
  103. package/lib/config/versions/magento-2.4.0-p1.js +22 -15
  104. package/lib/config/versions/magento-2.4.0.js +22 -15
  105. package/lib/config/versions/magento-2.4.1-p1.js +23 -16
  106. package/lib/config/versions/magento-2.4.1.js +23 -16
  107. package/lib/config/versions/magento-2.4.2-p1.js +23 -16
  108. package/lib/config/versions/magento-2.4.2-p2.js +23 -16
  109. package/lib/config/versions/magento-2.4.2.js +23 -16
  110. package/lib/config/versions/magento-2.4.3-p1.js +23 -16
  111. package/lib/config/versions/magento-2.4.3-p2.js +23 -16
  112. package/lib/config/versions/magento-2.4.3-p3.js +23 -16
  113. package/lib/config/versions/magento-2.4.3.js +23 -16
  114. package/lib/config/versions/magento-2.4.4-p1.js +23 -16
  115. package/lib/config/versions/magento-2.4.4-p2.js +23 -16
  116. package/lib/config/versions/magento-2.4.4.js +23 -16
  117. package/lib/config/versions/magento-2.4.5-p1.js +23 -16
  118. package/lib/config/versions/magento-2.4.5.js +23 -17
  119. package/lib/config/xml-parser.js +21 -20
  120. package/lib/errors/known-error.js +8 -6
  121. package/lib/errors/unknown-error.js +8 -6
  122. package/lib/tasks/cache/create-cache-folder.js +10 -10
  123. package/lib/tasks/cache/index.js +1 -1
  124. package/lib/tasks/cache/remove-cache-folder.js +9 -9
  125. package/lib/tasks/cleanup.js +22 -24
  126. package/lib/tasks/cli/create-bashrc-config.js +19 -11
  127. package/lib/tasks/cli/index.js +10 -13
  128. package/lib/tasks/composer/index.js +20 -15
  129. package/lib/tasks/composer/local-auth-json.js +32 -18
  130. package/lib/tasks/database/connect-to-database.js +71 -51
  131. package/lib/tasks/database/create-magento-database.js +7 -7
  132. package/lib/tasks/database/create-magento-user.js +33 -20
  133. package/lib/tasks/database/default-magento-database.js +1 -1
  134. package/lib/tasks/database/default-magento-user.js +2 -2
  135. package/lib/tasks/database/dump-theme-config.js +16 -12
  136. package/lib/tasks/database/fix-db.js +62 -52
  137. package/lib/tasks/database/import-dump-to-database.js +122 -85
  138. package/lib/tasks/database/import-remote-db/index.js +16 -18
  139. package/lib/tasks/database/import-remote-db/ssh/database-dump-command.js +2 -2
  140. package/lib/tasks/database/import-remote-db/ssh/index.js +34 -35
  141. package/lib/tasks/database/import-remote-db/ssh/readymage.js +41 -38
  142. package/lib/tasks/database/import-remote-db/ssh/regular-server.js +44 -46
  143. package/lib/tasks/database/index.js +1 -1
  144. package/lib/tasks/database/magento-tables.js +3 -3
  145. package/lib/tasks/database/restore-theme-config.js +26 -19
  146. package/lib/tasks/docker/api.d.ts +1 -1
  147. package/lib/tasks/docker/api.js +31 -33
  148. package/lib/tasks/docker/containers/container-api.d.ts +49 -14
  149. package/lib/tasks/docker/containers/container-api.js +112 -83
  150. package/lib/tasks/docker/containers/index.js +3 -3
  151. package/lib/tasks/docker/containers/tasks.js +171 -99
  152. package/lib/tasks/docker/convert-composer-home-to-composer-cache-volume.js +34 -25
  153. package/lib/tasks/docker/convert-legacy-volumes.js +91 -55
  154. package/lib/tasks/docker/convert-mysql-to-mariadb.js +178 -147
  155. package/lib/tasks/docker/image/image-api.d.ts +2 -3
  156. package/lib/tasks/docker/image/image-api.js +41 -34
  157. package/lib/tasks/docker/image/index.js +2 -2
  158. package/lib/tasks/docker/index.js +26 -21
  159. package/lib/tasks/docker/network/index.js +3 -3
  160. package/lib/tasks/docker/network/network-api.d.ts +11 -8
  161. package/lib/tasks/docker/network/network-api.js +53 -61
  162. package/lib/tasks/docker/network/tasks.js +41 -31
  163. package/lib/tasks/docker/project-image-builder.js +175 -92
  164. package/lib/tasks/docker/system/index.js +2 -2
  165. package/lib/tasks/docker/system/system-api.d.ts +2 -2
  166. package/lib/tasks/docker/system/system-api.js +16 -19
  167. package/lib/tasks/docker/volume/index.js +3 -3
  168. package/lib/tasks/docker/volume/tasks.js +63 -46
  169. package/lib/tasks/docker/volume/volume-api.d.ts +8 -5
  170. package/lib/tasks/docker/volume/volume-api.js +59 -76
  171. package/lib/tasks/execute.js +91 -55
  172. package/lib/tasks/file-system/create-mariadb-config.js +26 -11
  173. package/lib/tasks/file-system/create-nginx-config.js +18 -19
  174. package/lib/tasks/file-system/create-php-config.js +12 -8
  175. package/lib/tasks/file-system/create-php-debug-config.js +23 -18
  176. package/lib/tasks/file-system/create-php-fpm-config.js +14 -9
  177. package/lib/tasks/file-system/create-phpstorm-config/database-config.js +144 -112
  178. package/lib/tasks/file-system/create-phpstorm-config/eslint-config.js +69 -45
  179. package/lib/tasks/file-system/create-phpstorm-config/exclude-folder-config.js +69 -70
  180. package/lib/tasks/file-system/create-phpstorm-config/index.js +28 -24
  181. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/coding-standard-config.js +9 -9
  182. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/config.js +23 -23
  183. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/custom-ruleset-path-config.js +22 -19
  184. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/default-properties-config.js +26 -16
  185. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/eslint-inspection-config.js +14 -15
  186. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/index.js +43 -34
  187. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/inspection-tools-config.js +14 -6
  188. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/magento-coding-standard-config.js +9 -9
  189. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/mess-detector-validation-inspection-config.js +53 -47
  190. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/paths.js +41 -12
  191. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-fixer-validation-inspection-config.js +33 -30
  192. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-validation-inspection-config.js +35 -38
  193. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/stylelint-inspection-config.js +14 -15
  194. package/lib/tasks/file-system/create-phpstorm-config/keys.js +10 -10
  195. package/lib/tasks/file-system/create-phpstorm-config/php-config/index.js +33 -25
  196. package/lib/tasks/file-system/create-phpstorm-config/php-config/mess-detector-config.js +28 -25
  197. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-code-sniffer-config.js +53 -32
  198. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-config.js +7 -7
  199. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-cs-fixer-config.js +37 -27
  200. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-interpreters-config.js +53 -31
  201. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-project-shared-configuration-config.js +42 -30
  202. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/index.js +33 -20
  203. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/php-docker-settings-config.js +3 -3
  204. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/setup-php-docker-container-settings-config.js +27 -16
  205. package/lib/tasks/file-system/create-phpstorm-config/setup-xml-structure.js +14 -13
  206. package/lib/tasks/file-system/create-phpstorm-config/stylelint-config.js +52 -34
  207. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/composer-settings-config.js +41 -33
  208. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/format-setting-config.js +39 -27
  209. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/index.js +34 -30
  210. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/mess-detector-project-configuration-config.js +32 -22
  211. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-code-sniffer-project-configuration-config.js +32 -22
  212. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-cs-fixer-project-configuration-config.js +32 -22
  213. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-debug-general-config.js +42 -31
  214. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-server-config.js +45 -33
  215. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-stan-project-configuration-config.js.js +32 -22
  216. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-workspace-project-configuration-config.js +22 -19
  217. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/properties-component-config.js +35 -21
  218. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/psalm-project-configuration-config.js.js +31 -22
  219. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/run-manager-config.js +38 -28
  220. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/workspace-config.js +5 -5
  221. package/lib/tasks/file-system/create-phpstorm-config/xml-utils.js +3 -2
  222. package/lib/tasks/file-system/create-ssl-terminator-config.js +46 -34
  223. package/lib/tasks/file-system/create-varnish-config.js +20 -23
  224. package/lib/tasks/file-system/create-vscode-config.js +66 -49
  225. package/lib/tasks/file-system/index.js +29 -25
  226. package/lib/tasks/import-dump.js +54 -45
  227. package/lib/tasks/link.js +24 -23
  228. package/lib/tasks/magento/enable-magento-composer-plugins.js +213 -149
  229. package/lib/tasks/magento/index.js +1 -1
  230. package/lib/tasks/magento/install-magento-project.js +158 -97
  231. package/lib/tasks/magento/remove-magento.js +30 -24
  232. package/lib/tasks/magento/setup-magento/adjust-full-page-cache.js +27 -15
  233. package/lib/tasks/magento/setup-magento/configure-elasticsearch.js +23 -10
  234. package/lib/tasks/magento/setup-magento/create-admin.js +21 -13
  235. package/lib/tasks/magento/setup-magento/delete-admin-users.js +5 -5
  236. package/lib/tasks/magento/setup-magento/delete-customers.js +16 -10
  237. package/lib/tasks/magento/setup-magento/delete-orders.js +16 -10
  238. package/lib/tasks/magento/setup-magento/disable-2fa.js +11 -8
  239. package/lib/tasks/magento/setup-magento/disable-maintenance-mode.js +7 -7
  240. package/lib/tasks/magento/setup-magento/disable-page-builder.js +5 -4
  241. package/lib/tasks/magento/setup-magento/flush-redis-config.js +14 -8
  242. package/lib/tasks/magento/setup-magento/increase-admin-session-lifetime.js +21 -17
  243. package/lib/tasks/magento/setup-magento/index-products.js +4 -6
  244. package/lib/tasks/magento/setup-magento/index.js +54 -47
  245. package/lib/tasks/magento/setup-magento/install-magento.js +112 -79
  246. package/lib/tasks/magento/setup-magento/migrate-database.js +115 -96
  247. package/lib/tasks/magento/setup-magento/set-base-url.js +35 -21
  248. package/lib/tasks/magento/setup-magento/set-deployment-mode.js +15 -13
  249. package/lib/tasks/magento/setup-magento/set-mail-config.js +20 -14
  250. package/lib/tasks/magento/setup-magento/set-url-rewrite.js +13 -9
  251. package/lib/tasks/magento/setup-magento/upgrade-magento.js +30 -22
  252. package/lib/tasks/magento/setup-magento/urn-highlighter.js +11 -11
  253. package/lib/tasks/magento/setup-magento/varnish-config.js +42 -32
  254. package/lib/tasks/magento/setup-magento/waiting-for-redis.js +6 -8
  255. package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +108 -65
  256. package/lib/tasks/magento/uninstall-magento.js +19 -16
  257. package/lib/tasks/php/php-container.d.ts +19 -0
  258. package/lib/tasks/php/php-container.js +50 -46
  259. package/lib/tasks/php/update-env-php.js +50 -30
  260. package/lib/tasks/project-config/index.js +12 -8
  261. package/lib/tasks/requirements/composer-credentials.js +215 -112
  262. package/lib/tasks/requirements/docker/context.js +49 -37
  263. package/lib/tasks/requirements/docker/index.js +123 -89
  264. package/lib/tasks/requirements/docker/install-on-mac.js +21 -14
  265. package/lib/tasks/requirements/docker/install.js +63 -52
  266. package/lib/tasks/requirements/docker/performance.js +39 -24
  267. package/lib/tasks/requirements/docker/permissions.js +27 -17
  268. package/lib/tasks/requirements/docker/running-status.js +79 -66
  269. package/lib/tasks/requirements/docker/version.js +15 -11
  270. package/lib/tasks/requirements/index.js +33 -29
  271. package/lib/tasks/requirements/node-version.js +8 -8
  272. package/lib/tasks/requirements/php-version.js +14 -11
  273. package/lib/tasks/requirements/platform.js +42 -26
  274. package/lib/tasks/requirements/rosetta.js +15 -12
  275. package/lib/tasks/start.js +172 -148
  276. package/lib/tasks/status/index.js +155 -88
  277. package/lib/tasks/stop.js +22 -18
  278. package/lib/tasks/theme/build-theme.js +50 -33
  279. package/lib/tasks/theme/install-theme.js +31 -18
  280. package/lib/tasks/theme/link-theme.js +27 -21
  281. package/lib/tasks/theme/retrieve-theme-data.js +24 -18
  282. package/lib/tasks/theme/setup-themes.js +87 -59
  283. package/lib/tasks/theme/symlink-theme.js +44 -22
  284. package/lib/util/CSA-theme.js +23 -21
  285. package/lib/util/analytics.js +130 -75
  286. package/lib/util/arch.js +22 -18
  287. package/lib/util/clean-object.js +15 -10
  288. package/lib/util/config-file-validator.js +74 -55
  289. package/lib/util/config-php-json.js +34 -16
  290. package/lib/util/connection-string.js +41 -27
  291. package/lib/util/console-block.js +112 -65
  292. package/lib/util/database.js +56 -33
  293. package/lib/util/deepmerge.d.ts +1 -1
  294. package/lib/util/deepmerge.js +19 -28
  295. package/lib/util/dockerfile-builder/build-instructions.js +159 -143
  296. package/lib/util/dockerfile-builder/index.js +47 -73
  297. package/lib/util/dockerfile-builder/types.d.ts +2 -1
  298. package/lib/util/download-file.js +28 -16
  299. package/lib/util/env-php-json.js +42 -16
  300. package/lib/util/exec-async-command.d.ts +9 -9
  301. package/lib/util/exec-async-command.js +82 -59
  302. package/lib/util/exec-async.d.ts +2 -0
  303. package/lib/util/exec-async.js +12 -5
  304. package/lib/util/execute-in-container.js +22 -27
  305. package/lib/util/execute-sudo-command.js +11 -15
  306. package/lib/util/get-brew-bin-path.js +27 -23
  307. package/lib/util/get-installed-magento-version.js +22 -16
  308. package/lib/util/get-jsonfile-data.js +14 -9
  309. package/lib/util/install-dependencies-task.js +53 -41
  310. package/lib/util/instance-metadata.js +44 -29
  311. package/lib/util/ip.js +16 -12
  312. package/lib/util/is-running-root.js +6 -3
  313. package/lib/util/is-wsl.js +10 -10
  314. package/lib/util/macos-version.js +12 -11
  315. package/lib/util/magento-task.js +14 -9
  316. package/lib/util/match-filesystem.js +22 -16
  317. package/lib/util/move-file.js +40 -25
  318. package/lib/util/nginx-logs-parser.js +50 -39
  319. package/lib/util/open-browser.js +10 -5
  320. package/lib/util/os-platform.js +40 -32
  321. package/lib/util/path-exists-sync.js +10 -6
  322. package/lib/util/path-exists.js +6 -6
  323. package/lib/util/php-task.js +11 -10
  324. package/lib/util/portscanner.js +97 -85
  325. package/lib/util/prefix.js +31 -22
  326. package/lib/util/resolve-configuration-with-overrides.js +30 -15
  327. package/lib/util/rmdir-safe.js +15 -11
  328. package/lib/util/run-composer.js +16 -16
  329. package/lib/util/run-container-image.js +9 -4
  330. package/lib/util/run-magento.js +16 -17
  331. package/lib/util/run-php.js +16 -21
  332. package/lib/util/safe-regex-extract.js +8 -12
  333. package/lib/util/set-config.js +24 -15
  334. package/lib/util/sleep.js +7 -2
  335. package/lib/util/systemctl.js +62 -44
  336. package/lib/util/wait-for-it.js +42 -33
  337. package/lib/util/wait-for-logs.js +42 -35
  338. package/lib/util/xdg-open-exists.js +19 -19
  339. package/package.json +7 -3
  340. package/tsconfig.json +24 -0
  341. package/typings/context.d.ts +76 -34
  342. package/typings/index.d.ts +54 -20
  343. package/typings/override.d.ts +14 -0
  344. package/typings/phpstorm.d.ts +19 -19
  345. package/.prettierrc +0 -3
  346. package/lib/util/get-php-for-phpbrew.js +0 -30
  347. package/lib/util/request.js +0 -0
@@ -1,51 +1,58 @@
1
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
2
- const os = require('os');
3
- const { cmaGlobalConfig } = require('../../../config/cma-config');
4
- const { getCachedPorts } = require('../../../config/get-port-config');
5
- const { getSystemConfigTask } = require('../../../config/system-config');
6
- const UnknownError = require('../../../errors/unknown-error');
7
- const { execCommandTask } = require('../../../util/exec-async-command');
8
- const createCacheFolder = require('../../cache/create-cache-folder');
9
- const { dockerApi } = require('../../docker');
10
- const { stopContainers } = require('../../docker/containers');
11
- const { getDockerEngineAndDesktopServiceStatus } = require('./running-status');
12
- const getMagentoVersionConfig = require('../../../config/get-magento-version-config');
13
- const checkConfigurationFile = require('../../../config/check-configuration-file');
14
- const getProjectConfiguration = require('../../../config/get-project-configuration');
15
- const getDockerVersion = require('./version');
1
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
2
+ const os = require('os')
3
+ const { cmaGlobalConfig } = require('../../../config/cma-config')
4
+ const { getCachedPorts } = require('../../../config/get-port-config')
5
+ const { getSystemConfigTask } = require('../../../config/system-config')
6
+ const UnknownError = require('../../../errors/unknown-error')
7
+ const { execCommandTask } = require('../../../util/exec-async-command')
8
+ const createCacheFolder = require('../../cache/create-cache-folder')
9
+ const { dockerApi } = require('../../docker')
10
+ const { stopContainers } = require('../../docker/containers')
11
+ const { getDockerEngineAndDesktopServiceStatus } = require('./running-status')
12
+ const getMagentoVersionConfig = require('../../../config/get-magento-version-config')
13
+ const checkConfigurationFile = require('../../../config/check-configuration-file')
14
+ const getProjectConfiguration = require('../../../config/get-project-configuration')
15
+ const getDockerVersion = require('./version')
16
16
 
17
- const USE_DEFAULT_DOCKER_DESKTOP_CONTEXT_ANSWER = 'useDefaultDockerDesktopContext';
17
+ const USE_DEFAULT_DOCKER_DESKTOP_CONTEXT_ANSWER =
18
+ 'useDefaultDockerDesktopContext'
18
19
 
19
20
  /**
20
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
21
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
21
22
  */
22
23
  const checkDockerDesktopContext = () => ({
23
24
  task: async (ctx, task) => {
24
25
  if (os.platform() !== 'linux' || !ctx.isDockerDesktop) {
25
- task.skip();
26
- return;
26
+ task.skip()
27
+ return
27
28
  }
28
29
 
29
- task.title = 'Checking contexts for Docker Desktop';
30
+ task.title = 'Checking contexts for Docker Desktop'
30
31
 
31
- const contexts = await dockerApi.context({ formatToJSON: true });
32
- const currentlyUsedContext = contexts.find((c) => c.Current);
32
+ const contexts = await dockerApi.context({ formatToJSON: true })
33
+ const currentlyUsedContext = contexts.find((c) => c.Current)
33
34
 
34
35
  if (!currentlyUsedContext) {
35
- throw new UnknownError('We haven\'t found contexts in Docker...');
36
+ throw new UnknownError("We haven't found contexts in Docker...")
36
37
  }
37
38
 
38
- const { engine } = await getDockerEngineAndDesktopServiceStatus();
39
+ const { engine } = await getDockerEngineAndDesktopServiceStatus()
39
40
 
40
41
  if (currentlyUsedContext.Name !== 'default' && engine.exists) {
41
- if (cmaGlobalConfig.get(USE_DEFAULT_DOCKER_DESKTOP_CONTEXT_ANSWER) === false) {
42
- task.skip();
43
- return;
42
+ if (
43
+ cmaGlobalConfig.get(
44
+ USE_DEFAULT_DOCKER_DESKTOP_CONTEXT_ANSWER
45
+ ) === false
46
+ ) {
47
+ task.skip()
48
+ return
44
49
  }
45
50
 
46
51
  const confirmContextChange = await task.prompt({
47
52
  type: 'Select',
48
- message: `Do you want to change current Docker Desktop context (${logger.style.code(currentlyUsedContext.Name)}) to ${logger.style.code('default')}?`,
53
+ message: `Do you want to change current Docker Desktop context (${logger.style.code(
54
+ currentlyUsedContext.Name
55
+ )}) to ${logger.style.code('default')}?`,
49
56
  choices: [
50
57
  {
51
58
  name: 'yes',
@@ -53,19 +60,24 @@ const checkDockerDesktopContext = () => ({
53
60
  },
54
61
  {
55
62
  name: 'no',
56
- message: 'No, I don\'t know what this means, but you can ask again on next start.'
63
+ message:
64
+ "No, I don't know what this means, but you can ask again on next start."
57
65
  },
58
66
  {
59
67
  name: 'skip',
60
- // eslint-disable-next-line max-len
61
- message: 'I do know what this means and I DON\'T want to change context for Docker. Also, save this answer to never ask again.'
68
+
69
+ message:
70
+ "I do know what this means and I DON'T want to change context for Docker. Also, save this answer to never ask again."
62
71
  }
63
72
  ]
64
- });
73
+ })
65
74
 
66
75
  if (confirmContextChange === 'skip') {
67
- cmaGlobalConfig.set(USE_DEFAULT_DOCKER_DESKTOP_CONTEXT_ANSWER, false);
68
- task.skip();
76
+ cmaGlobalConfig.set(
77
+ USE_DEFAULT_DOCKER_DESKTOP_CONTEXT_ANSWER,
78
+ false
79
+ )
80
+ task.skip()
69
81
  }
70
82
 
71
83
  if (confirmContextChange === 'yes') {
@@ -79,10 +91,10 @@ const checkDockerDesktopContext = () => ({
79
91
  stopContainers(),
80
92
  execCommandTask('docker context use default'),
81
93
  getDockerVersion()
82
- ]);
94
+ ])
83
95
  }
84
96
  }
85
97
  }
86
- });
98
+ })
87
99
 
88
- module.exports = checkDockerDesktopContext;
100
+ module.exports = checkDockerDesktopContext
@@ -1,51 +1,70 @@
1
- const os = require('os');
2
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
3
- const { cmaGlobalConfig } = require('../../../config/cma-config');
4
- const KnownError = require('../../../errors/known-error');
5
- const { execAsyncSpawn } = require('../../../util/exec-async-command');
6
- const openBrowser = require('../../../util/open-browser');
7
- const checkDockerDesktopContext = require('./context');
8
- const { installDockerEngine } = require('./install');
9
- const installDockerOnMac = require('./install-on-mac');
10
- const { checkDockerPerformance } = require('./performance');
11
- const { checkDockerSocketPermissions } = require('./permissions');
12
- const { checkDockerStatus, getDockerEngineAndDesktopServiceStatus } = require('./running-status');
13
- const getDockerVersion = require('./version');
14
- const getIsWsl = require('../../../util/is-wsl');
15
-
16
- const USE_DOCKER_ENGINE_WITH_DOCKER_DESKTOP_ANSWER = 'useDockerEngineWithDockerDesktop';
1
+ const os = require('os')
2
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
3
+ const { cmaGlobalConfig } = require('../../../config/cma-config')
4
+ const KnownError = require('../../../errors/known-error')
5
+ const { execAsyncSpawn } = require('../../../util/exec-async-command')
6
+ const openBrowser = require('../../../util/open-browser')
7
+ const checkDockerDesktopContext = require('./context')
8
+ const { installDockerEngine } = require('./install')
9
+ const installDockerOnMac = require('./install-on-mac')
10
+ const { checkDockerPerformance } = require('./performance')
11
+ const { checkDockerSocketPermissions } = require('./permissions')
12
+ const {
13
+ checkDockerStatus,
14
+ getDockerEngineAndDesktopServiceStatus
15
+ } = require('./running-status')
16
+ const getDockerVersion = require('./version')
17
+ const getIsWsl = require('../../../util/is-wsl')
17
18
 
19
+ const USE_DOCKER_ENGINE_WITH_DOCKER_DESKTOP_ANSWER =
20
+ 'useDockerEngineWithDockerDesktop'
21
+
22
+ /**
23
+ * @param {import('listr2').ListrTaskWrapper<import('../../../../typings/context').ListrContext, any>} task
24
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
25
+ */
18
26
  const setVersionInContextTask = (task) => ({
19
27
  task: (ctx) => {
20
- if (os.platform() === 'darwin' && ctx.dockerServerData && ctx.dockerServerData.Platform && ctx.dockerServerData.Platform.Name) {
21
- task.title = `Using ${ctx.dockerServerData.Platform.Name} for Mac`;
28
+ if (
29
+ os.platform() === 'darwin' &&
30
+ ctx.dockerServerData &&
31
+ ctx.dockerServerData.Platform &&
32
+ ctx.dockerServerData.Platform.Name
33
+ ) {
34
+ task.title = `Using ${ctx.dockerServerData.Platform.Name} for Mac`
22
35
  } else {
23
- task.title = `Using Docker version ${ctx.dockerVersion}`;
36
+ task.title = `Using Docker version ${ctx.dockerVersion}`
24
37
  }
25
38
  }
26
- });
39
+ })
27
40
 
41
+ /**
42
+ * @param {import('listr2').ListrTaskWrapper<import('../../../../typings/context').ListrContext, any>} task
43
+ * @param {{ skipPrompt?: boolean }} param1
44
+ */
28
45
  const dockerInstallPromptLinux = async (task, { skipPrompt = false } = {}) => {
29
- const automaticallyInstallDocker = skipPrompt ? 'yes' : await task.prompt({
30
- type: 'Select',
31
- message: `You don't have Docker installed!
46
+ const automaticallyInstallDocker = skipPrompt
47
+ ? 'yes'
48
+ : await task.prompt({
49
+ type: 'Select',
50
+ message: `You don't have Docker installed!
32
51
  Do you want to install it automatically?
33
52
  `,
34
- choices: [
35
- {
36
- name: 'yes',
37
- message: 'Yes, I to install Docker automatically'
38
- },
39
- {
40
- name: 'no',
41
- message: 'No, I want to install Docker myself'
42
- },
43
- {
44
- name: 'skip',
45
- message: 'Skip installing Docker'
46
- }
47
- ]
48
- });
53
+ choices: [
54
+ {
55
+ name: 'yes',
56
+ message: 'Yes, I to install Docker automatically'
57
+ },
58
+ {
59
+ name: 'no',
60
+ message: 'No, I want to install Docker myself'
61
+ },
62
+ {
63
+ name: 'skip',
64
+ message: 'Skip installing Docker'
65
+ }
66
+ ]
67
+ })
49
68
 
50
69
  if (automaticallyInstallDocker === 'yes') {
51
70
  return task.newListr([
@@ -54,7 +73,7 @@ Do you want to install it automatically?
54
73
  getDockerVersion(),
55
74
  {
56
75
  task: async (ctx) => {
57
- task.title = `Using docker version ${ctx.dockerVersion}`;
76
+ task.title = `Using docker version ${ctx.dockerVersion}`
58
77
 
59
78
  const confirmLogOut = await task.prompt({
60
79
  type: 'Select',
@@ -62,49 +81,56 @@ Do you want to install it automatically?
62
81
  choices: [
63
82
  {
64
83
  name: 'log-out',
65
- message: `${logger.style.command('[Recommended]')} Now I will log out and log back it (or restart my system) to re-evaluate group membership`
84
+ message: `${logger.style.command(
85
+ '[Recommended]'
86
+ )} Now I will log out and log back it (or restart my system) to re-evaluate group membership`
66
87
  },
67
88
  {
68
89
  name: 'skip',
69
- message: 'Skip log out and proceed with installation'
90
+ message:
91
+ 'Skip log out and proceed with installation'
70
92
  }
71
93
  ]
72
- });
94
+ })
73
95
 
74
96
  if (confirmLogOut === 'skip') {
75
- return;
97
+ return
76
98
  }
77
99
 
78
100
  throw new KnownError(
79
101
  `Docker is installed successfully!
80
102
  Please log out and log back in (or restart your system) so your group membership is re-evaluated!
81
- Learn more here: ${ logger.style.link('https://docs.docker.com/engine/install/linux-postinstall/') }`
82
- );
103
+ Learn more here: ${logger.style.link(
104
+ 'https://docs.docker.com/engine/install/linux-postinstall/'
105
+ )}`
106
+ )
83
107
  }
84
108
  },
85
109
  checkDockerStatus(),
86
110
  checkDockerDesktopContext()
87
- ]);
111
+ ])
88
112
  }
89
113
 
90
114
  if (automaticallyInstallDocker === 'skip') {
91
- return;
115
+ return
92
116
  }
93
117
 
94
- throw new KnownError('Docker is not installed!');
95
- };
118
+ throw new KnownError('Docker is not installed!')
119
+ }
96
120
 
97
121
  // maybe in the future docker will be possible to install on wsl from terminal...
98
122
  const dockerInstallPromptWindows = () => {
99
123
  throw new KnownError(
100
124
  `You don't have Docker installed!
101
125
  Follow this instructions to install Docker on Windows:
102
- ${ logger.style.link('https://docs.create-magento-app.com/getting-started/prerequisites/windows-requirements#2-install-docker-desktop-for-windows') }`
103
- );
104
- };
126
+ ${logger.style.link(
127
+ 'https://docs.create-magento-app.com/getting-started/prerequisites/windows-requirements#2-install-docker-desktop-for-windows'
128
+ )}`
129
+ )
130
+ }
105
131
 
106
132
  /**
107
- * @param {import('listr2').ListrTaskWrapper} task
133
+ * @param {import('listr2').ListrTaskWrapper<import('../../../../typings/context').ListrContext, any>} task
108
134
  */
109
135
  const dockerInstallPromptMacOS = async (task) => {
110
136
  const confirmationToInstallDocker = await task.prompt({
@@ -122,7 +148,7 @@ Would you like to install it automatically using brew cask or you prefer to inst
122
148
  message: 'Install Docker manually'
123
149
  }
124
150
  ]
125
- });
151
+ })
126
152
 
127
153
  if (confirmationToInstallDocker === 'automatic') {
128
154
  return task.newListr([
@@ -131,53 +157,59 @@ Would you like to install it automatically using brew cask or you prefer to inst
131
157
  checkDockerStatus(),
132
158
  getDockerVersion(),
133
159
  setVersionInContextTask(task)
134
- ]);
160
+ ])
135
161
  }
136
162
 
137
- const dockerInstallLink = 'https://docs.create-magento-app.com/getting-started/prerequisites/installation-on-macos#3.-install-docker-for-mac';
138
- await openBrowser(dockerInstallLink);
163
+ const dockerInstallLink =
164
+ 'https://docs.create-magento-app.com/getting-started/prerequisites/installation-on-macos#3.-install-docker-for-mac'
165
+ await openBrowser(dockerInstallLink)
139
166
 
140
167
  throw new KnownError(
141
168
  `Follow this instructions to install Docker on Mac:
142
- ${ logger.style.link(dockerInstallLink) }`
143
- );
144
- };
169
+ ${logger.style.link(dockerInstallLink)}`
170
+ )
171
+ }
145
172
 
146
173
  /**
147
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
174
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
148
175
  */
149
176
  const checkDocker = () => ({
150
177
  title: 'Checking Docker',
151
178
  task: async (ctx, task) => {
152
179
  const { code } = await execAsyncSpawn('docker -v', {
153
180
  withCode: true
154
- });
181
+ })
155
182
 
156
183
  if (code !== 0) {
157
184
  if (os.platform() === 'linux') {
158
- const isWsl = await getIsWsl();
185
+ const isWsl = await getIsWsl()
159
186
  if (!isWsl) {
160
- const { engine } = await getDockerEngineAndDesktopServiceStatus();
187
+ const { engine } =
188
+ await getDockerEngineAndDesktopServiceStatus()
161
189
  if (!engine.exists) {
162
- const result = await dockerInstallPromptLinux(task);
190
+ const result = await dockerInstallPromptLinux(task)
163
191
  if (result) {
164
- return result;
192
+ return result
165
193
  }
166
194
  }
167
195
  } else if (isWsl) {
168
- dockerInstallPromptWindows();
196
+ dockerInstallPromptWindows()
169
197
  }
170
198
  } else {
171
- const result = await dockerInstallPromptMacOS(task);
199
+ const result = await dockerInstallPromptMacOS(task)
172
200
  if (result) {
173
- return result;
201
+ return result
174
202
  }
175
203
  }
176
204
  } else if (os.platform() === 'linux') {
177
- const { engine, desktop } = await getDockerEngineAndDesktopServiceStatus();
178
- if (!engine.exists
179
- && desktop.exists
180
- && cmaGlobalConfig.get(USE_DOCKER_ENGINE_WITH_DOCKER_DESKTOP_ANSWER) !== false
205
+ const { engine, desktop } =
206
+ await getDockerEngineAndDesktopServiceStatus()
207
+ if (
208
+ !engine.exists &&
209
+ desktop.exists &&
210
+ cmaGlobalConfig.get(
211
+ USE_DOCKER_ENGINE_WITH_DOCKER_DESKTOP_ANSWER
212
+ ) !== false
181
213
  ) {
182
214
  const confirmInstallingDockerEngine = await task.prompt({
183
215
  type: 'Select',
@@ -187,7 +219,8 @@ Do you want to install it and use it's context together with Docker Desktop?
187
219
  choices: [
188
220
  {
189
221
  name: 'yes',
190
- message: 'Sure, if it means I will have less issues with my setup!'
222
+ message:
223
+ 'Sure, if it means I will have less issues with my setup!'
191
224
  },
192
225
  {
193
226
  name: 'no',
@@ -195,20 +228,23 @@ Do you want to install it and use it's context together with Docker Desktop?
195
228
  },
196
229
  {
197
230
  name: 'skip',
198
- message: 'No. And don\'t ask me again.'
231
+ message: "No. And don't ask me again."
199
232
  }
200
233
  ]
201
- });
234
+ })
202
235
 
203
236
  if (confirmInstallingDockerEngine === 'skip') {
204
- cmaGlobalConfig.set(USE_DOCKER_ENGINE_WITH_DOCKER_DESKTOP_ANSWER, false);
237
+ cmaGlobalConfig.set(
238
+ USE_DOCKER_ENGINE_WITH_DOCKER_DESKTOP_ANSWER,
239
+ false
240
+ )
205
241
  } else if (confirmInstallingDockerEngine === 'yes') {
206
242
  const result = await dockerInstallPromptLinux(task, {
207
243
  skipPrompt: true
208
- });
244
+ })
209
245
 
210
246
  if (result) {
211
- return result;
247
+ return result
212
248
  }
213
249
  }
214
250
  }
@@ -220,18 +256,16 @@ Do you want to install it and use it's context together with Docker Desktop?
220
256
  getDockerVersion(),
221
257
  checkDockerDesktopContext(),
222
258
  setVersionInContextTask(task)
223
- ]);
259
+ ])
224
260
  }
225
- });
261
+ })
226
262
 
227
263
  /**
228
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
264
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
229
265
  */
230
266
  module.exports = () => ({
231
- task: (ctx, task) => task.newListr([
232
- checkDocker(),
233
- checkDockerPerformance()
234
- ], {
235
- concurrent: false
236
- })
237
- });
267
+ task: (ctx, task) =>
268
+ task.newListr([checkDocker(), checkDockerPerformance()], {
269
+ concurrent: false
270
+ })
271
+ })
@@ -1,29 +1,36 @@
1
- const { execAsyncSpawn } = require('../../../util/exec-async-command');
2
- const { getBrewCommand } = require('../../../util/get-brew-bin-path');
1
+ const { execAsyncSpawn } = require('../../../util/exec-async-command')
2
+ const { getBrewCommand } = require('../../../util/get-brew-bin-path')
3
3
 
4
4
  /**
5
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
5
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
6
6
  */
7
7
  const installDockerOnMac = () => ({
8
8
  title: 'Installing Docker on Mac OS',
9
9
  task: async (ctx, task) => {
10
- const interval = !ctx.verbose ? setInterval(() => {
11
- task.output = `Installing Docker on Mac... Yep, still in progress ${new Date().toUTCString()}`;
12
- }, 5000) : null;
10
+ const interval = !ctx.verbose
11
+ ? setInterval(() => {
12
+ task.output = `Installing Docker on Mac... Yep, still in progress ${new Date().toUTCString()}`
13
+ }, 5000)
14
+ : null
13
15
 
14
- await execAsyncSpawn(`${await getBrewCommand({ native: true })} install --cask docker`, {
15
- callback: !ctx.verbose ? undefined : (t) => {
16
- task.output = t;
16
+ await execAsyncSpawn(
17
+ `${await getBrewCommand({ native: true })} install --cask docker`,
18
+ {
19
+ callback: !ctx.verbose
20
+ ? undefined
21
+ : (t) => {
22
+ task.output = t
23
+ }
17
24
  }
18
- });
25
+ )
19
26
 
20
- if (!ctx.verbose) {
21
- clearInterval(interval);
27
+ if (!ctx.verbose && interval) {
28
+ clearInterval(interval)
22
29
  }
23
30
  },
24
31
  options: {
25
32
  bottomBar: 10
26
33
  }
27
- });
34
+ })
28
35
 
29
- module.exports = installDockerOnMac;
36
+ module.exports = installDockerOnMac