@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,130 +1,152 @@
1
1
  /* eslint-disable max-len */
2
- const sleep = require('../../../util/sleep');
3
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
4
- const KnownError = require('../../../errors/known-error');
5
- const containerApi = require('./container-api');
6
- const { imageApi } = require('../image');
7
- const { execAsyncSpawn } = require('../../../util/exec-async-command');
2
+ const sleep = require('../../../util/sleep')
3
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
4
+ const KnownError = require('../../../errors/known-error')
5
+ const containerApi = require('./container-api')
6
+ const { imageApi } = require('../image')
7
+ const { execAsyncSpawn } = require('../../../util/exec-async-command')
8
8
 
9
+ /**
10
+ * @param {string[]} containers
11
+ */
9
12
  const stopAndRemoveContainers = async (containers) => {
10
- await containerApi.stop(containers);
11
- await containerApi.rm(containers);
12
- };
13
+ await containerApi.stop(containers)
14
+ await containerApi.rm(containers)
15
+ }
13
16
 
14
- const pull = async (image) => execAsyncSpawn(`docker pull ${image}`);
17
+ /**
18
+ * @param {string} image
19
+ */
20
+ const pull = async (image) => execAsyncSpawn(`docker pull ${image}`)
15
21
 
22
+ /**
23
+ * @param {string[]} acc
24
+ * @param {{ remoteImages?: string[], image: string }} val
25
+ */
16
26
  const remoteImageReducer = (acc, val) => {
17
- if (Array.isArray(val.remoteImages) && val.remoteImages.every((image) => typeof image === 'string')) {
18
- return acc.concat(val.remoteImages);
27
+ if (
28
+ Array.isArray(val.remoteImages) &&
29
+ val.remoteImages.every((image) => typeof image === 'string')
30
+ ) {
31
+ return acc.concat(val.remoteImages)
19
32
  }
20
33
 
21
- return acc.concat([val.image]);
22
- };
34
+ return acc.concat([val.image])
35
+ }
23
36
 
24
37
  /**
25
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
38
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
26
39
  */
27
40
  const pullImages = () => ({
28
41
  title: 'Pulling container images',
29
42
  task: async ({ config: { docker }, pullImages }, task) => {
30
- const containers = Object.values(docker.getContainers());
43
+ const containers = Object.values(docker.getContainers())
31
44
 
32
45
  if (pullImages) {
33
46
  return task.newListr(
34
47
  containers
35
48
  .reduce(remoteImageReducer, [])
36
49
  .map((image) => {
37
- const [repo, tag = 'latest'] = image.split(':');
50
+ const [repo, tag = 'latest'] = image.split(':')
38
51
 
39
- return { repo, tag };
52
+ return { repo, tag }
40
53
  })
41
54
  .reduce(
42
- (acc, val) => acc.concat(
43
- acc.some(
44
- (c) => c.repo === val.repo
45
- && c.tag === val.tag
46
- )
47
- ? []
48
- : val
49
- ),
55
+ (acc, val) =>
56
+ acc.concat(
57
+ acc.some(
58
+ (c) =>
59
+ c.repo === val.repo && c.tag === val.tag
60
+ )
61
+ ? []
62
+ : val
63
+ ),
50
64
  []
51
65
  )
52
66
  .map(({ repo, tag }) => ({
53
- title: `Pulling ${ logger.style.file(`${repo}:${tag}`) } image`,
67
+ title: `Pulling ${logger.style.file(
68
+ `${repo}:${tag}`
69
+ )} image`,
54
70
  task: () => pull(`${repo}:${tag}`)
55
- })), {
71
+ })),
72
+ {
56
73
  concurrent: true,
57
74
  exitOnError: true
58
75
  }
59
- );
76
+ )
60
77
  }
61
78
 
62
79
  const imagesFilter = containers
63
80
  .reduce(remoteImageReducer, [])
64
- .map((image) => `reference='${image}'`);
81
+ .map((image) => `reference='${image}'`)
65
82
 
66
83
  const existingImages = await imageApi.ls({
67
84
  formatToJSON: true,
68
85
  filter: imagesFilter
69
- });
86
+ })
70
87
 
71
88
  const missingContainerImages = containers
72
89
  .reduce(remoteImageReducer, [])
73
90
  .map((image) => {
74
- const [repo, tag = 'latest'] = image.split(':');
91
+ const [repo, tag = 'latest'] = image.split(':')
75
92
 
76
- return { repo, tag };
93
+ return { repo, tag }
77
94
  })
78
95
  .filter(
79
- ({ repo, tag }) => !existingImages.some(
80
- (image) => image.Repository === repo
81
- && image.Tag === tag
82
- )
96
+ ({ repo, tag }) =>
97
+ !existingImages.some(
98
+ (image) =>
99
+ image.Repository === repo && image.Tag === tag
100
+ )
83
101
  )
84
102
  .reduce(
85
- (acc, val) => acc.concat(
86
- acc.some(
87
- (c) => c.repo === val.repo
88
- && c.tag === val.tag
89
- )
90
- ? []
91
- : val
92
- ),
103
+ (acc, val) =>
104
+ acc.concat(
105
+ acc.some(
106
+ (c) => c.repo === val.repo && c.tag === val.tag
107
+ )
108
+ ? []
109
+ : val
110
+ ),
93
111
  []
94
- );
112
+ )
95
113
 
96
114
  if (missingContainerImages.length === 0) {
97
- task.skip();
98
- return;
115
+ task.skip()
116
+ return
99
117
  }
100
118
 
101
119
  return task.newListr(
102
120
  missingContainerImages.map(({ repo, tag }) => ({
103
- title: `Pulling ${ logger.style.file(`${repo}:${tag}`) } image`,
121
+ title: `Pulling ${logger.style.file(`${repo}:${tag}`)} image`,
104
122
  task: () => pull(`${repo}:${tag}`)
105
- })), {
123
+ })),
124
+ {
106
125
  concurrent: true,
107
126
  exitOnError: true
108
127
  }
109
- );
128
+ )
110
129
  }
111
- });
130
+ })
112
131
 
113
132
  /**
114
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
133
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
115
134
  */
116
135
  const startContainers = () => ({
117
136
  title: 'Starting containers',
118
137
  task: async ({ ports, config: { docker }, debug }, task) => {
119
- const containerList = await containerApi.ls({ formatToJSON: true, all: true });
138
+ const containerList = await containerApi.ls({
139
+ formatToJSON: true,
140
+ all: true
141
+ })
120
142
 
121
- const missingContainers = Object.values(docker.getContainers(ports)).filter(
122
- ({ name }) => !containerList.some((c) => c.Names === name)
123
- );
143
+ const missingContainers = Object.values(
144
+ docker.getContainers(ports)
145
+ ).filter(({ name }) => !containerList.some((c) => c.Names === name))
124
146
 
125
147
  if (missingContainers.length === 0) {
126
- task.skip();
127
- return;
148
+ task.skip()
149
+ return
128
150
  }
129
151
 
130
152
  if (debug) {
@@ -132,109 +154,159 @@ const startContainers = () => ({
132
154
  missingContainers
133
155
  .map((container) => {
134
156
  if (container.debugImage) {
135
- container.image = container.debugImage;
157
+ container.image = container.debugImage
136
158
  }
137
159
 
138
- return container;
139
- }).map((container) => containerApi.run(container).then((out) => {
140
- task.output = `From ${container._}: ${out}`;
141
- }))
142
- );
160
+ return container
161
+ })
162
+ .map((container) =>
163
+ containerApi.run(container).then((out) => {
164
+ task.output = `From ${container._}: ${out}`
165
+ })
166
+ )
167
+ )
143
168
 
144
- return;
169
+ return
145
170
  }
146
171
 
147
172
  // TODO: we might stop containers here ?
148
- await Promise.all(missingContainers.map((container) => containerApi.run(container).then((out) => {
149
- task.output = `From ${container._}: ${out}`;
150
- })));
173
+ await Promise.all(
174
+ missingContainers.map((container) =>
175
+ containerApi.run(container).then((out) => {
176
+ task.output = `From ${container._}: ${out}`
177
+ })
178
+ )
179
+ )
151
180
  },
152
181
  options: {
153
182
  bottomBar: 10
154
183
  }
155
- });
184
+ })
156
185
 
157
186
  /**
158
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
187
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
159
188
  */
160
189
  const stopContainers = () => ({
161
190
  title: 'Stopping Docker containers',
162
- task: async ({ config: { baseConfig: { prefix } } }, task) => {
163
- const containerList = await containerApi.ls({ formatToJSON: true, all: true });
191
+ task: async (
192
+ {
193
+ config: {
194
+ baseConfig: { prefix }
195
+ }
196
+ },
197
+ task
198
+ ) => {
199
+ const containerList = await containerApi.ls({
200
+ formatToJSON: true,
201
+ all: true
202
+ })
164
203
 
165
- const runningContainers = containerList.filter((containerName) => containerName.Names.startsWith(prefix));
204
+ const runningContainers = containerList.filter((containerName) =>
205
+ containerName.Names.startsWith(prefix)
206
+ )
166
207
 
167
208
  if (runningContainers.length === 0) {
168
- task.skip();
169
- return;
209
+ task.skip()
210
+ return
170
211
  }
171
212
 
172
- await stopAndRemoveContainers(runningContainers.map(({ Names }) => Names));
213
+ await stopAndRemoveContainers(
214
+ runningContainers.map(({ Names }) => Names)
215
+ )
173
216
  }
174
- });
217
+ })
175
218
 
219
+ /**
220
+ * @param {string} containerName
221
+ */
176
222
  const getContainerStatus = async (containerName) => {
177
223
  try {
178
- return JSON.parse(await execAsyncSpawn(`docker inspect --format='{{json .}}' ${containerName}`));
224
+ return JSON.parse(
225
+ await execAsyncSpawn(
226
+ `docker inspect --format='{{json .}}' ${containerName}`
227
+ )
228
+ )
179
229
  } catch {
180
- return null;
230
+ return null
181
231
  }
182
- };
232
+ }
183
233
 
184
234
  /**
185
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
235
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
186
236
  */
187
237
  const checkContainersAreRunning = () => ({
188
238
  title: 'Checking container statuses',
189
239
  task: async (ctx, task) => {
190
- const { config: { docker }, ports } = ctx;
191
- const containers = Object.values(docker.getContainers(ports));
192
- let tries = 0;
240
+ const {
241
+ config: { docker },
242
+ ports
243
+ } = ctx
244
+ const containers = Object.values(docker.getContainers(ports))
245
+ let tries = 0
193
246
  while (tries < 3) {
194
247
  const containersWithStatus = await Promise.all(
195
248
  containers.map(async (container) => ({
196
249
  ...container,
197
250
  status: await getContainerStatus(container.name)
198
251
  }))
199
- );
252
+ )
200
253
 
201
- if (containersWithStatus.some((c) => c.status.State.Status !== 'running')) {
254
+ if (
255
+ containersWithStatus.some(
256
+ (c) => c.status.State.Status !== 'running'
257
+ )
258
+ ) {
202
259
  if (tries === 2) {
203
- throw new KnownError(`${containersWithStatus.filter((c) => c.status.State.Status !== 'running').map((c) => c._).join(', ')} containers are not running! Please check container logs for more details!`);
260
+ throw new KnownError(
261
+ `${containersWithStatus
262
+ .filter((c) => c.status.State.Status !== 'running')
263
+ .map((c) => c._)
264
+ .join(
265
+ ', '
266
+ )} containers are not running! Please check container logs for more details!`
267
+ )
204
268
  } else {
205
- task.output = `${containersWithStatus.filter((c) => c.status.State.Status !== 'running').map((c) => c._).join(', ')} are not running, waiting if something will change...`;
206
- await sleep(2000);
207
- tries++;
269
+ task.output = `${containersWithStatus
270
+ .filter((c) => c.status.State.Status !== 'running')
271
+ .map((c) => c._)
272
+ .join(
273
+ ', '
274
+ )} are not running, waiting if something will change...`
275
+ await sleep(2000)
276
+ tries++
208
277
  }
209
278
  } else {
210
- break;
279
+ break
211
280
  }
212
281
  }
213
282
  },
214
283
  options: {
215
284
  bottomBar: 10
216
285
  }
217
- });
286
+ })
218
287
 
219
288
  /**
220
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
289
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
221
290
  */
222
291
  const statusContainers = () => ({
223
292
  task: async (ctx) => {
224
- const { config: { docker }, ports } = ctx;
225
- const containers = Object.values(docker.getContainers(ports));
293
+ const {
294
+ config: { docker },
295
+ ports
296
+ } = ctx
297
+ const containers = Object.values(docker.getContainers(ports))
226
298
 
227
299
  ctx.containers = await Promise.all(
228
300
  containers.map(async (container) => ({
229
301
  ...container,
230
302
  status: await getContainerStatus(container.name)
231
303
  }))
232
- );
304
+ )
233
305
  },
234
306
  options: {
235
307
  bottomBar: 10
236
308
  }
237
- });
309
+ })
238
310
 
239
311
  module.exports = {
240
312
  startContainers,
@@ -243,4 +315,4 @@ module.exports = {
243
315
  statusContainers,
244
316
  checkContainersAreRunning,
245
317
  getContainerStatus
246
- };
318
+ }
@@ -1,52 +1,61 @@
1
- const { containerApi } = require('./containers');
2
- const volumeApi = require('./volume/volume-api');
1
+ /* eslint-disable camelcase */
2
+ const { containerApi } = require('./containers')
3
+ const volumeApi = require('./volume/volume-api')
3
4
 
4
- const composeHomeDataVolumeName = 'composer_home-data';
5
+ const composeHomeDataVolumeName = 'composer_home-data'
5
6
 
6
7
  /**
7
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
8
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
8
9
  */
9
10
  const convertComposerHomeToComposerCacheVolume = () => ({
10
11
  skip: async () => {
11
12
  const volumeList = await volumeApi.ls({
12
13
  formatToJSON: true,
13
- filter: `name=${ composeHomeDataVolumeName }`
14
- });
14
+ filter: `name=${composeHomeDataVolumeName}`
15
+ })
15
16
 
16
- return volumeList.length === 0;
17
+ return volumeList.length === 0
17
18
  },
18
19
  task: async (ctx, task) => {
19
20
  if (ctx.platform === 'linux' && !ctx.isDockerDesktop) {
20
- await volumeApi.rm({ volumes: [composeHomeDataVolumeName] });
21
- return;
21
+ await volumeApi.rm({ volumes: [composeHomeDataVolumeName] })
22
+ return
22
23
  }
23
24
 
24
- const { composer_cache } = ctx.config.docker.volumes;
25
- task.title = `Migrating from ${ composer_cache.name } volume to ${ composeHomeDataVolumeName }...`;
25
+ const { composer_cache } = ctx.config.docker.volumes
26
+ task.title = `Migrating from ${composer_cache.name} volume to ${composeHomeDataVolumeName}...`
26
27
  await containerApi.run({
27
28
  rm: true,
28
29
  detach: false,
29
30
  mountVolumes: [
30
- `${ composeHomeDataVolumeName }:/from:ro`,
31
- `${ composer_cache.name }:/to`
31
+ `${composeHomeDataVolumeName}:/from:ro`,
32
+ `${composer_cache.name}:/to`
32
33
  ],
33
34
  image: 'alpine',
34
35
  command: 'ash -c "cd /from/cache; cp -av . /to"'
35
- });
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
- }));
36
+ })
37
+
38
+ const runningContainers = await volumeApi.inspect({
39
+ volume: composeHomeDataVolumeName,
40
+ formatToJSON: true
41
+ })
42
+
43
+ if (
44
+ runningContainers.Containers &&
45
+ Object.entries(runningContainers.Containers).length > 0
46
+ ) {
47
+ await Promise.all(
48
+ Object.values(runningContainers.Containers).map(async (c) => {
49
+ await containerApi.stop([c.Name])
50
+ await containerApi.rm([c.Name])
51
+ })
52
+ )
44
53
  }
45
54
 
46
- await volumeApi.rm({ volumes: [composeHomeDataVolumeName] });
55
+ await volumeApi.rm({ volumes: [composeHomeDataVolumeName] })
47
56
  }
48
- });
57
+ })
49
58
 
50
59
  module.exports = {
51
60
  convertComposerHomeToComposerCacheVolume
52
- };
61
+ }