@scandipwa/magento-scripts 2.0.3 → 2.0.4

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 -157
  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 +3 -3
  47. package/lib/config/services/mariadb/versions/mariadb-10.3.js +3 -3
  48. package/lib/config/services/mariadb/versions/mariadb-10.4.js +3 -3
  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 +2 -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 +18 -10
  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 +40 -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 +14 -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 +63 -54
  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 +8 -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 +44 -19
  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
@@ -6,192 +6,208 @@ const buildInstructions = (instructions) => {
6
6
  /**
7
7
  * @type {string[]}
8
8
  */
9
- const dockerFileInstructions = [];
9
+ const dockerFileInstructions = []
10
10
 
11
11
  for (const instruction of instructions) {
12
12
  switch (instruction.type) {
13
- case 'COPY':
14
- case 'ADD': {
15
- let addInstruction = instruction.type;
13
+ case 'COPY':
14
+ case 'ADD': {
15
+ let addInstruction = instruction.type
16
16
 
17
- if (instruction.type === 'COPY' && instruction.from) {
18
- addInstruction += ` --from=${instruction.from}`;
19
- }
20
-
21
- if (instruction.chown) {
22
- addInstruction += ` --chown=${instruction.chown}`;
23
- }
24
-
25
- addInstruction += ` ${instruction.src.join(' ')}`;
26
- addInstruction += ` ${instruction.dest}`;
27
-
28
- dockerFileInstructions.push(addInstruction);
29
- break;
30
- }
31
- case 'ARG': {
32
- let argInstruction = instruction.type;
17
+ if (instruction.type === 'COPY' && instruction.from) {
18
+ addInstruction += ` --from=${instruction.from}`
19
+ }
33
20
 
34
- argInstruction += ` ${instruction.name}`;
21
+ if (instruction.chown) {
22
+ addInstruction += ` --chown=${instruction.chown}`
23
+ }
35
24
 
36
- if (instruction.defaultValue) {
37
- argInstruction += `=${instruction.defaultValue}`;
38
- }
25
+ addInstruction += ` ${instruction.src.join(' ')}`
26
+ addInstruction += ` ${instruction.dest}`
39
27
 
40
- dockerFileInstructions.push(argInstruction);
41
- break;
42
- }
43
- case 'RUN':
44
- case 'ENTRYPOINT':
45
- case 'CMD': {
46
- let cmdInstruction = instruction.type;
47
-
48
- if (typeof instruction.command === 'string') {
49
- cmdInstruction += ` ${instruction.command}`;
50
- } else if (Array.isArray(instruction.command) && instruction.command.every((c) => typeof c === 'string')) {
51
- cmdInstruction += ` ["${instruction.command.join('", "')}"]`;
52
- } else {
53
- throw new Error(`Unknown command type, it must be string or array of strings! ${instruction.command}`);
28
+ dockerFileInstructions.push(addInstruction)
29
+ break
54
30
  }
31
+ case 'ARG': {
32
+ let argInstruction = instruction.type
55
33
 
56
- dockerFileInstructions.push(cmdInstruction);
57
- break;
58
- }
34
+ argInstruction += ` ${instruction.name}`
59
35
 
60
- case 'COMMENT': {
61
- const commentInstruction = `# ${instruction.comment}`;
36
+ if (instruction.defaultValue) {
37
+ argInstruction += `=${instruction.defaultValue}`
38
+ }
62
39
 
63
- dockerFileInstructions.push(commentInstruction);
64
- break;
65
- }
66
- case 'ENV': {
67
- let envInstruction = instruction.type;
68
-
69
- envInstruction += ` ${instruction.name}="${instruction.value}"`;
40
+ dockerFileInstructions.push(argInstruction)
41
+ break
42
+ }
43
+ case 'RUN':
44
+ case 'ENTRYPOINT':
45
+ case 'CMD': {
46
+ let cmdInstruction = instruction.type
47
+
48
+ if (typeof instruction.command === 'string') {
49
+ cmdInstruction += ` ${instruction.command}`
50
+ } else if (
51
+ Array.isArray(instruction.command) &&
52
+ instruction.command.every((c) => typeof c === 'string')
53
+ ) {
54
+ cmdInstruction += ` ["${instruction.command.join('", "')}"]`
55
+ } else {
56
+ throw new Error(
57
+ `Unknown command type, it must be string or array of strings! ${instruction.command}`
58
+ )
59
+ }
60
+
61
+ dockerFileInstructions.push(cmdInstruction)
62
+ break
63
+ }
70
64
 
71
- dockerFileInstructions.push(envInstruction);
72
- break;
73
- }
74
- case 'EXPOSE': {
75
- let exposeInstruction = instruction.type;
65
+ case 'COMMENT': {
66
+ const commentInstruction = `# ${instruction.comment}`
76
67
 
77
- if (instruction.protocol) {
78
- exposeInstruction += ` ${instruction.port}/${instruction.protocol}`;
79
- } else {
80
- exposeInstruction += ` ${instruction.port}`;
68
+ dockerFileInstructions.push(commentInstruction)
69
+ break
81
70
  }
71
+ case 'ENV': {
72
+ let envInstruction = instruction.type
82
73
 
83
- dockerFileInstructions.push(exposeInstruction);
84
- break;
85
- }
86
- case 'FROM': {
87
- let fromInstruction = instruction.type;
74
+ envInstruction += ` ${instruction.name}="${instruction.value}"`
88
75
 
89
- if (instruction.platform) {
90
- fromInstruction += ` --platform=${instruction.platform}`;
76
+ dockerFileInstructions.push(envInstruction)
77
+ break
91
78
  }
79
+ case 'EXPOSE': {
80
+ let exposeInstruction = instruction.type
92
81
 
93
- fromInstruction += ` ${instruction.image}:${instruction.tag || 'latest'}`;
82
+ if (instruction.protocol) {
83
+ exposeInstruction += ` ${instruction.port}/${instruction.protocol}`
84
+ } else {
85
+ exposeInstruction += ` ${instruction.port}`
86
+ }
94
87
 
95
- if (instruction.name) {
96
- fromInstruction += ` AS ${instruction.name}`;
88
+ dockerFileInstructions.push(exposeInstruction)
89
+ break
97
90
  }
91
+ case 'FROM': {
92
+ let fromInstruction = instruction.type
98
93
 
99
- dockerFileInstructions.push(fromInstruction);
100
- break;
101
- }
102
- case 'HEALTHCHECK': {
103
- let healthCheckInstruction = instruction.type;
94
+ if (instruction.platform) {
95
+ fromInstruction += ` --platform=${instruction.platform}`
96
+ }
104
97
 
105
- if (instruction.interval) {
106
- healthCheckInstruction += ` --interval=${instruction.interval}`;
107
- }
98
+ fromInstruction += ` ${instruction.image}:${
99
+ instruction.tag || 'latest'
100
+ }`
108
101
 
109
- if (instruction.retries) {
110
- healthCheckInstruction += ` --retries=${instruction.retries}`;
111
- }
102
+ if (instruction.name) {
103
+ fromInstruction += ` AS ${instruction.name}`
104
+ }
112
105
 
113
- if (instruction.startPeriod) {
114
- healthCheckInstruction += ` --start-period=${instruction.startPeriod}`;
106
+ dockerFileInstructions.push(fromInstruction)
107
+ break
115
108
  }
109
+ case 'HEALTHCHECK': {
110
+ let healthCheckInstruction = instruction.type
116
111
 
117
- if (instruction.timeout) {
118
- healthCheckInstruction += ` --timeout=${instruction.timeout}`;
119
- }
112
+ if (instruction.interval) {
113
+ healthCheckInstruction += ` --interval=${instruction.interval}`
114
+ }
120
115
 
121
- healthCheckInstruction += ` ${instruction.command}`;
116
+ if (instruction.retries) {
117
+ healthCheckInstruction += ` --retries=${instruction.retries}`
118
+ }
122
119
 
123
- dockerFileInstructions.push(healthCheckInstruction);
124
- break;
125
- }
126
- case 'LABEL': {
127
- Object.entries(instruction.labels).forEach(([name, value]) => {
128
- let labelInstruction = instruction.type;
129
- labelInstruction += ` "${name}"="${value}"`;
130
- dockerFileInstructions.push(labelInstruction);
131
- });
132
- break;
133
- }
134
- case 'ONBUILD': {
135
- let onBuildInstruction = instruction.type;
120
+ if (instruction.startPeriod) {
121
+ healthCheckInstruction += ` --start-period=${instruction.startPeriod}`
122
+ }
136
123
 
137
- onBuildInstruction += ` ${instruction.instruction}`;
124
+ if (instruction.timeout) {
125
+ healthCheckInstruction += ` --timeout=${instruction.timeout}`
126
+ }
138
127
 
139
- dockerFileInstructions.push(onBuildInstruction);
140
- break;
141
- }
142
- case 'SHELL': {
143
- let shellInstruction = instruction.type;
128
+ healthCheckInstruction += ` ${instruction.command}`
144
129
 
145
- shellInstruction += ` ["${instruction.exec.join('", "')}"]`;
130
+ dockerFileInstructions.push(healthCheckInstruction)
131
+ break
132
+ }
133
+ case 'LABEL': {
134
+ Object.entries(instruction.labels).forEach(([name, value]) => {
135
+ let labelInstruction = instruction.type
136
+ labelInstruction += ` "${name}"="${value}"`
137
+ dockerFileInstructions.push(labelInstruction)
138
+ })
139
+ break
140
+ }
141
+ case 'ONBUILD': {
142
+ let onBuildInstruction = instruction.type
146
143
 
147
- dockerFileInstructions.push(shellInstruction);
148
- break;
149
- }
150
- case 'STOPSIGNAL': {
151
- let stopSignalInstruction = instruction.type;
144
+ onBuildInstruction += ` ${instruction.instruction}`
152
145
 
153
- stopSignalInstruction += ` ${instruction.signal}`;
146
+ dockerFileInstructions.push(onBuildInstruction)
147
+ break
148
+ }
149
+ case 'SHELL': {
150
+ let shellInstruction = instruction.type
154
151
 
155
- dockerFileInstructions.push(stopSignalInstruction);
156
- break;
157
- }
158
- case 'USER': {
159
- let userInstruction = instruction.type;
152
+ shellInstruction += ` ["${instruction.exec.join('", "')}"]`
160
153
 
161
- userInstruction += ` ${instruction.user}`;
154
+ dockerFileInstructions.push(shellInstruction)
155
+ break
156
+ }
157
+ case 'STOPSIGNAL': {
158
+ let stopSignalInstruction = instruction.type
162
159
 
163
- dockerFileInstructions.push(userInstruction);
164
- break;
165
- }
166
- case 'VOLUME': {
167
- let volumeInstruction = instruction.type;
160
+ stopSignalInstruction += ` ${instruction.signal}`
168
161
 
169
- if (typeof instruction.volume === 'string') {
170
- volumeInstruction += ` ${instruction.volume}`;
171
- } else if (Array.isArray(instruction.volume) && instruction.volume.every((c) => typeof c === 'string')) {
172
- volumeInstruction += ` ["${instruction.volume.join('", "')}"]`;
173
- } else {
174
- throw new Error(`Unknown volume type, it must be string or array of strings! ${instruction.volume}`);
162
+ dockerFileInstructions.push(stopSignalInstruction)
163
+ break
175
164
  }
165
+ case 'USER': {
166
+ let userInstruction = instruction.type
176
167
 
177
- dockerFileInstructions.push(volumeInstruction);
178
- break;
179
- }
180
- case 'WORKDIR': {
181
- const workDirInstruction = `${instruction.type} ${instruction.workdir}`;
168
+ userInstruction += ` ${instruction.user}`
182
169
 
183
- dockerFileInstructions.push(workDirInstruction);
184
- break;
185
- }
186
- default: {
187
- throw new Error(`I don't know instruction with type ${instruction.type}`);
188
- }
170
+ dockerFileInstructions.push(userInstruction)
171
+ break
172
+ }
173
+ case 'VOLUME': {
174
+ let volumeInstruction = instruction.type
175
+
176
+ if (typeof instruction.volume === 'string') {
177
+ volumeInstruction += ` ${instruction.volume}`
178
+ } else if (
179
+ Array.isArray(instruction.volume) &&
180
+ instruction.volume.every((c) => typeof c === 'string')
181
+ ) {
182
+ volumeInstruction += ` ["${instruction.volume.join(
183
+ '", "'
184
+ )}"]`
185
+ } else {
186
+ throw new Error(
187
+ `Unknown volume type, it must be string or array of strings! ${instruction.volume}`
188
+ )
189
+ }
190
+
191
+ dockerFileInstructions.push(volumeInstruction)
192
+ break
193
+ }
194
+ case 'WORKDIR': {
195
+ const workDirInstruction = `${instruction.type} ${instruction.workdir}`
196
+
197
+ dockerFileInstructions.push(workDirInstruction)
198
+ break
199
+ }
200
+ default: {
201
+ throw new Error(
202
+ `I don't know instruction with type ${instruction.type}`
203
+ )
204
+ }
189
205
  }
190
206
  }
191
207
 
192
- return dockerFileInstructions.join('\n');
193
- };
208
+ return dockerFileInstructions.join('\n')
209
+ }
194
210
 
195
211
  module.exports = {
196
212
  buildInstructions
197
- };
213
+ }
@@ -1,30 +1,25 @@
1
- const { buildInstructions } = require('./build-instructions');
1
+ const { buildInstructions } = require('./build-instructions')
2
2
 
3
3
  class DockerFileBuilder {
4
4
  /**
5
5
  * @type {import('./types').DockerfileInstruction[]}
6
6
  */
7
- instructions = [];
7
+ instructions = []
8
8
 
9
9
  /**
10
10
  * @param {Omit<import('./types').FromInstruction, 'type'>} param0
11
11
  * @returns {this}
12
12
  */
13
- from({
14
- image,
15
- tag = 'latest',
16
- platform,
17
- name
18
- }) {
13
+ from({ image, tag = 'latest', platform, name }) {
19
14
  this.instructions.push({
20
15
  type: 'FROM',
21
16
  image,
22
17
  tag,
23
18
  platform,
24
19
  name
25
- });
20
+ })
26
21
 
27
- return this;
22
+ return this
28
23
  }
29
24
 
30
25
  /**
@@ -34,9 +29,9 @@ class DockerFileBuilder {
34
29
  this.instructions.push({
35
30
  type: 'RUN',
36
31
  command
37
- });
32
+ })
38
33
 
39
- return this;
34
+ return this
40
35
  }
41
36
 
42
37
  /**
@@ -46,9 +41,9 @@ class DockerFileBuilder {
46
41
  this.instructions.push({
47
42
  type: 'CMD',
48
43
  command
49
- });
44
+ })
50
45
 
51
- return this;
46
+ return this
52
47
  }
53
48
 
54
49
  /**
@@ -58,25 +53,22 @@ class DockerFileBuilder {
58
53
  this.instructions.push({
59
54
  type: 'LABEL',
60
55
  labels
61
- });
56
+ })
62
57
 
63
- return this;
58
+ return this
64
59
  }
65
60
 
66
61
  /**
67
62
  * @param {Omit<import('./types').ExposeInstruction, 'type'>} param0
68
63
  */
69
- expose({
70
- port,
71
- protocol
72
- }) {
64
+ expose({ port, protocol }) {
73
65
  this.instructions.push({
74
66
  type: 'EXPOSE',
75
67
  port,
76
68
  protocol
77
- });
69
+ })
78
70
 
79
- return this;
71
+ return this
80
72
  }
81
73
 
82
74
  /**
@@ -88,48 +80,39 @@ class DockerFileBuilder {
88
80
  type: 'ENV',
89
81
  name,
90
82
  value
91
- });
92
- });
83
+ })
84
+ })
93
85
 
94
- return this;
86
+ return this
95
87
  }
96
88
 
97
89
  /**
98
90
  * @param {Omit<import('./types').AddInstruction, 'type'>} param0
99
91
  */
100
- add({
101
- src,
102
- dest,
103
- chown
104
- }) {
92
+ add({ src, dest, chown }) {
105
93
  this.instructions.push({
106
94
  type: 'ADD',
107
95
  src,
108
96
  dest,
109
97
  chown
110
- });
98
+ })
111
99
 
112
- return this;
100
+ return this
113
101
  }
114
102
 
115
103
  /**
116
104
  * @param {Omit<import('./types').CopyInstruction, 'type'>} param0
117
105
  */
118
- copy({
119
- src,
120
- dest,
121
- chown,
122
- from
123
- }) {
106
+ copy({ src, dest, chown, from }) {
124
107
  this.instructions.push({
125
108
  type: 'COPY',
126
109
  src,
127
110
  dest,
128
111
  chown,
129
112
  from
130
- });
113
+ })
131
114
 
132
- return this;
115
+ return this
133
116
  }
134
117
 
135
118
  /**
@@ -139,9 +122,9 @@ class DockerFileBuilder {
139
122
  this.instructions.push({
140
123
  type: 'ENTRYPOINT',
141
124
  command
142
- });
125
+ })
143
126
 
144
- return this;
127
+ return this
145
128
  }
146
129
 
147
130
  /**
@@ -151,9 +134,9 @@ class DockerFileBuilder {
151
134
  this.instructions.push({
152
135
  type: 'VOLUME',
153
136
  volume
154
- });
137
+ })
155
138
 
156
- return this;
139
+ return this
157
140
  }
158
141
 
159
142
  /**
@@ -163,9 +146,9 @@ class DockerFileBuilder {
163
146
  this.instructions.push({
164
147
  type: 'USER',
165
148
  user
166
- });
149
+ })
167
150
 
168
- return this;
151
+ return this
169
152
  }
170
153
 
171
154
  /**
@@ -175,25 +158,22 @@ class DockerFileBuilder {
175
158
  this.instructions.push({
176
159
  type: 'WORKDIR',
177
160
  workdir
178
- });
161
+ })
179
162
 
180
- return this;
163
+ return this
181
164
  }
182
165
 
183
166
  /**
184
167
  * @param {Omit<import('./types').ArgInstruction, 'type'>} param0
185
168
  */
186
- arg({
187
- name,
188
- defaultValue
189
- }) {
169
+ arg({ name, defaultValue }) {
190
170
  this.instructions.push({
191
171
  type: 'ARG',
192
172
  name,
193
173
  defaultValue
194
- });
174
+ })
195
175
 
196
- return this;
176
+ return this
197
177
  }
198
178
 
199
179
  /**
@@ -203,9 +183,9 @@ class DockerFileBuilder {
203
183
  this.instructions.push({
204
184
  type: 'ONBUILD',
205
185
  instruction
206
- });
186
+ })
207
187
 
208
- return this;
188
+ return this
209
189
  }
210
190
 
211
191
  /**
@@ -215,21 +195,15 @@ class DockerFileBuilder {
215
195
  this.instructions.push({
216
196
  type: 'STOPSIGNAL',
217
197
  signal
218
- });
198
+ })
219
199
 
220
- return this;
200
+ return this
221
201
  }
222
202
 
223
203
  /**
224
204
  * @param {Omit<import('./types').HealthCheckInstruction, 'type'>} param0
225
205
  */
226
- healthCheck({
227
- command,
228
- interval,
229
- timeout,
230
- startPeriod,
231
- retries
232
- }) {
206
+ healthCheck({ command, interval, timeout, startPeriod, retries }) {
233
207
  this.instructions.push({
234
208
  type: 'HEALTHCHECK',
235
209
  command,
@@ -237,9 +211,9 @@ class DockerFileBuilder {
237
211
  retries,
238
212
  startPeriod,
239
213
  timeout
240
- });
214
+ })
241
215
 
242
- return this;
216
+ return this
243
217
  }
244
218
 
245
219
  /**
@@ -249,9 +223,9 @@ class DockerFileBuilder {
249
223
  this.instructions.push({
250
224
  type: 'SHELL',
251
225
  exec
252
- });
226
+ })
253
227
 
254
- return this;
228
+ return this
255
229
  }
256
230
 
257
231
  /**
@@ -261,16 +235,16 @@ class DockerFileBuilder {
261
235
  this.instructions.push({
262
236
  type: 'COMMENT',
263
237
  comment
264
- });
238
+ })
265
239
 
266
- return this;
240
+ return this
267
241
  }
268
242
 
269
243
  build() {
270
- return buildInstructions(this.instructions);
244
+ return buildInstructions(this.instructions)
271
245
  }
272
246
  }
273
247
 
274
248
  module.exports = {
275
249
  DockerFileBuilder
276
- };
250
+ }
@@ -103,7 +103,8 @@ export interface CommentInstruction {
103
103
  comment: string
104
104
  }
105
105
 
106
- export type DockerfileInstruction = FromInstruction
106
+ export type DockerfileInstruction =
107
+ | FromInstruction
107
108
  | RunInstruction
108
109
  | CmdInstruction
109
110
  | LabelInstruction