@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
@@ -1,16 +1,18 @@
1
- const path = require('path');
2
- const fs = require('fs');
3
- const { projectsConfig, projectKey } = require('../config/config');
1
+ const path = require('path')
2
+ const fs = require('fs')
3
+ const { projectsConfig, projectKey } = require('../config/config')
4
4
 
5
- const { name: legacyFolderName, base: folderName } = path.parse(process.cwd());
5
+ const { name: legacyFolderName, base: folderName } = path.parse(process.cwd())
6
6
 
7
7
  const getPrefix = (fName = folderName) => {
8
- const projectInGlobalConfig = projectsConfig.get(projectKey);
8
+ const projectInGlobalConfig = projectsConfig.get(projectKey)
9
9
 
10
10
  if (!projectInGlobalConfig || !projectInGlobalConfig.createdAt) {
11
- const projectStat = fs.statSync(process.cwd());
12
- const projectCreatedAt = Math.floor(projectStat.birthtime.getTime() / 1000).toString();
13
- process.isFirstStart = 1;
11
+ const projectStat = fs.statSync(process.cwd())
12
+ const projectCreatedAt = Math.floor(
13
+ projectStat.birthtime.getTime() / 1000
14
+ ).toString()
15
+ process.isFirstStart = 1
14
16
 
15
17
  // if createdAt property does not set in config, means that project is threaded as legacy
16
18
  // so it uses docker volumes and containers names without prefixes, so it doesn't have creation date
@@ -18,38 +20,45 @@ const getPrefix = (fName = folderName) => {
18
20
  projectsConfig.set(projectKey, {
19
21
  prefix: '',
20
22
  createdAt: projectCreatedAt
21
- });
23
+ })
22
24
  }
23
25
 
24
26
  if (projectInGlobalConfig && projectInGlobalConfig.prefix) {
25
- return `${fName}-${projectInGlobalConfig.prefix}`;
27
+ return `${fName}-${projectInGlobalConfig.prefix}`
26
28
  }
27
29
 
28
- return fName;
29
- };
30
+ return fName
31
+ }
30
32
 
31
33
  const getProjectCreatedAt = () => {
32
- const projectInGlobalConfig = projectsConfig.get(projectKey);
34
+ const projectInGlobalConfig = projectsConfig.get(projectKey)
33
35
 
34
36
  if (projectInGlobalConfig && projectInGlobalConfig.createdAt) {
35
- return new Date(parseInt(projectInGlobalConfig.createdAt, 10) * 1000);
37
+ return new Date(parseInt(projectInGlobalConfig.createdAt, 10) * 1000)
36
38
  }
37
39
 
38
- return null;
39
- };
40
+ return null
41
+ }
40
42
 
43
+ /**
44
+ * @param {boolean} usePrefix
45
+ */
41
46
  const setPrefix = (usePrefix) => {
42
- const projectInGlobalConfig = projectsConfig.get(projectKey);
47
+ const projectInGlobalConfig = projectsConfig.get(projectKey)
43
48
  if (projectInGlobalConfig) {
44
49
  if (usePrefix && !projectInGlobalConfig.prefix) {
45
- const createdAt = projectInGlobalConfig.createdAt || Math.floor(fs.statSync(process.cwd()).birthtime.getTime() / 1000).toString();
46
- projectsConfig.set(`${projectKey}.prefix`, createdAt);
50
+ const createdAt =
51
+ projectInGlobalConfig.createdAt ||
52
+ Math.floor(
53
+ fs.statSync(process.cwd()).birthtime.getTime() / 1000
54
+ ).toString()
55
+ projectsConfig.set(`${projectKey}.prefix`, createdAt)
47
56
  }
48
57
  if (!usePrefix && projectInGlobalConfig.prefix) {
49
- projectsConfig.set(`${projectKey}.prefix`, '');
58
+ projectsConfig.set(`${projectKey}.prefix`, '')
50
59
  }
51
60
  }
52
- };
61
+ }
53
62
 
54
63
  module.exports = {
55
64
  setPrefix,
@@ -57,4 +66,4 @@ module.exports = {
57
66
  getProjectCreatedAt,
58
67
  legacyFolderName,
59
68
  folderName
60
- };
69
+ }
@@ -1,32 +1,47 @@
1
- const path = require('path');
2
- const UnknownError = require('../errors/unknown-error');
3
- const { configFileSchema } = require('./config-file-validator');
4
- const { deepmerge } = require('./deepmerge');
5
- const pathExists = require('./path-exists');
1
+ const path = require('path')
2
+ const UnknownError = require('../errors/unknown-error')
3
+ const { configFileSchema } = require('./config-file-validator')
4
+ const { deepmerge } = require('./deepmerge')
5
+ const pathExists = require('./path-exists')
6
6
 
7
- const resolveConfigurationWithOverrides = async (configuration, baseConfig, projectPath = process.cwd()) => {
8
- const configJSFilePath = path.join(projectPath, 'cma.js');
7
+ /**
8
+ * @param {import('../../typings/index').CMAConfiguration} configuration
9
+ * @param {string} [projectPath]
10
+ */
11
+ const resolveConfigurationWithOverrides = async (
12
+ configuration,
13
+ projectPath = process.cwd()
14
+ ) => {
15
+ const configJSFilePath = path.join(projectPath, 'cma.js')
9
16
  if (await pathExists(configJSFilePath)) {
10
- const userConfiguration = require(configJSFilePath);
17
+ /**
18
+ * @type {import('../../typings/index').CMAConfiguration}
19
+ */
20
+ const userConfiguration = require(configJSFilePath)
11
21
 
12
22
  try {
13
- await configFileSchema.validateAsync(userConfiguration);
23
+ await configFileSchema.validateAsync(userConfiguration)
14
24
  } catch (e) {
15
- throw new UnknownError(`Configuration file validation error!\n\n${e.message}`);
25
+ throw new UnknownError(
26
+ `Configuration file validation error!\n\n${e.message}`
27
+ )
16
28
  }
17
29
 
18
- const overridenConfiguration = deepmerge(configuration, userConfiguration);
30
+ const overridenConfiguration = deepmerge(
31
+ configuration,
32
+ userConfiguration
33
+ )
19
34
 
20
35
  return {
21
36
  userConfiguration,
22
37
  overridenConfiguration
23
- };
38
+ }
24
39
  }
25
40
 
26
41
  return {
27
42
  userConfiguration: configuration,
28
43
  overridenConfiguration: configuration
29
- };
30
- };
44
+ }
45
+ }
31
46
 
32
- module.exports = resolveConfigurationWithOverrides;
47
+ module.exports = resolveConfigurationWithOverrides
@@ -1,28 +1,32 @@
1
- const fs = require('fs');
2
- const path = require('path');
1
+ const fs = require('fs')
2
+ const path = require('path')
3
3
 
4
- const pathExists = require('./path-exists');
4
+ const pathExists = require('./path-exists')
5
5
 
6
+ /**
7
+ * @param {string} dirPath
8
+ * @returns {Promise<boolean>}
9
+ */
6
10
  const rmdirSafe = async (dirPath) => {
7
- const dirExists = await pathExists(dirPath);
11
+ const dirExists = await pathExists(dirPath)
8
12
 
9
13
  if (!dirExists) {
10
- return true;
14
+ return true
11
15
  }
12
16
  const files = await fs.promises.readdir(dirPath, {
13
17
  encoding: 'utf-8',
14
18
  withFileTypes: true
15
- });
19
+ })
16
20
 
17
21
  for (const file of files) {
18
- const filePath = path.join(dirPath, file.name);
22
+ const filePath = path.join(dirPath, file.name)
19
23
  await fs.promises.rm(filePath, {
20
24
  recursive: true,
21
25
  force: true
22
- });
26
+ })
23
27
  }
24
28
 
25
- return true;
26
- };
29
+ return true
30
+ }
27
31
 
28
- module.exports = rmdirSafe;
32
+ module.exports = rmdirSafe
@@ -1,28 +1,28 @@
1
- const UnknownError = require('../errors/unknown-error');
2
- const { runPHPContainerCommand } = require('../tasks/php/php-container');
1
+ const UnknownError = require('../errors/unknown-error')
2
+ const { runPHPContainerCommand } = require('../tasks/php/php-container')
3
3
  /**
4
4
  * Execute composer command
5
5
  * @param {import('../../typings/context').ListrContext} ctx
6
6
  * @param {String} command composer command
7
- * @param {Object} options
8
- * @param {Boolean} options.throwNonZeroCode Throw if command return non 0 code.
9
- * @param {String} options.magentoVersion Magento version for config
7
+ * @param {Parameters<import('../tasks/php/php-container')['runPHPContainerCommand']>[2] & { throwNonZeroCode?: boolean }} [options]
10
8
  */
11
9
  const runComposerCommand = async (ctx, command, options = {}) => {
12
- const {
13
- throwNonZeroCode = true
14
- } = options;
15
- const { code, result } = await runPHPContainerCommand(ctx, `composer ${command}`, {
16
- ...options,
17
- withCode: true
18
- });
10
+ const { throwNonZeroCode = true } = options
11
+ const { code, result } = await runPHPContainerCommand(
12
+ ctx,
13
+ `composer ${command}`,
14
+ {
15
+ ...options,
16
+ withCode: true
17
+ }
18
+ )
19
19
 
20
20
  if (throwNonZeroCode && code !== 0) {
21
21
  throw new UnknownError(`Code: ${code}
22
- Response: ${result}`);
22
+ Response: ${result}`)
23
23
  }
24
24
 
25
- return { code, result };
26
- };
25
+ return { code, result }
26
+ }
27
27
 
28
- module.exports = runComposerCommand;
28
+ module.exports = runComposerCommand
@@ -1,6 +1,11 @@
1
- const { execAsyncSpawn } = require('./exec-async-command');
1
+ const { execAsyncSpawn } = require('./exec-async-command')
2
2
 
3
- const runContainerImage = async (imageWithTag, command) => execAsyncSpawn(`docker run --rm ${imageWithTag} ${command}`);
3
+ /**
4
+ * @param {string} imageWithTag
5
+ * @param {string} command
6
+ */
7
+ const runContainerImage = async (imageWithTag, command) =>
8
+ execAsyncSpawn(`docker run --rm ${imageWithTag} ${command}`)
4
9
 
5
10
  /**
6
11
  * @param {string} imageWithTag
@@ -9,9 +14,9 @@ const runContainerImage = async (imageWithTag, command) => execAsyncSpawn(`docke
9
14
  */
10
15
  const runContainerImageTask = (imageWithTag, command) => ({
11
16
  task: () => runContainerImage(imageWithTag, command)
12
- });
17
+ })
13
18
 
14
19
  module.exports = {
15
20
  runContainerImage,
16
21
  runContainerImageTask
17
- };
22
+ }
@@ -1,30 +1,29 @@
1
- const UnknownError = require('../errors/unknown-error');
2
- const { runPHPContainerCommand } = require('../tasks/php/php-container');
1
+ const UnknownError = require('../errors/unknown-error')
2
+ const { runPHPContainerCommand } = require('../tasks/php/php-container')
3
3
  /**
4
4
  * Execute magento command
5
5
  *
6
6
  * @param {import('../../typings/context').ListrContext} ctx
7
7
  * @param {String} command magento command
8
- * @param {Object} options
9
- * @param {Boolean} options.logOutput Log output to console using logger
10
- * @param {Boolean} options.withCode
11
- * @param {String} options.cwd
12
- * @param {() => {}} options.callback
13
- * @param {Boolean} options.throwNonZeroCode Throw if command return non 0 code.
8
+ * @param {Parameters<typeof import('../tasks/php/php-container')['runPHPContainerCommand']>[2] & { throwNonZeroCode?: boolean }} options
14
9
  */
15
10
  const runMagentoCommand = async (ctx, command, options = {}) => {
16
- const { throwNonZeroCode = true } = options;
17
- const { code, result } = await runPHPContainerCommand(ctx, `bin/magento ${command}`, {
18
- ...options,
19
- withCode: true
20
- });
11
+ const { throwNonZeroCode = true } = options
12
+ const { code, result } = await runPHPContainerCommand(
13
+ ctx,
14
+ `bin/magento ${command}`,
15
+ {
16
+ ...options,
17
+ withCode: true
18
+ }
19
+ )
21
20
 
22
21
  if (throwNonZeroCode && code !== 0) {
23
22
  throw new UnknownError(`Code: ${code}
24
- Response: ${result}`);
23
+ Response: ${result}`)
25
24
  }
26
25
 
27
- return { code, result };
28
- };
26
+ return { code, result }
27
+ }
29
28
 
30
- module.exports = runMagentoCommand;
29
+ module.exports = runMagentoCommand
@@ -1,33 +1,28 @@
1
- const UnknownError = require('../errors/unknown-error');
2
- const { runPHPContainerCommand } = require('../tasks/php/php-container');
1
+ const UnknownError = require('../errors/unknown-error')
2
+ const { runPHPContainerCommand } = require('../tasks/php/php-container')
3
3
  /**
4
4
  * Execute PHP code
5
5
  * @param {import('../../typings/context').ListrContext} ctx
6
6
  * @param {String} command php command
7
- * @param {Object} options
8
- * @param {Boolean} options.logOutput Log output to console using logger
9
- * @param {Boolean} options.withCode
10
- * @param {String} options.cwd
11
- * @param {() => {}} options.callback
12
- * @param {Boolean} options.throwNonZeroCode Throw if command return non 0 code.
13
- * @param {Record<string, string>} options.env Environment variables
14
- * @param {Boolean} options.useRosettaOnMac Use Rosetta 2 on MacOS
7
+ * @param {Parameters<typeof import('../tasks/php/php-container')['runPHPContainerCommand']>[2] & { throwNonZeroCode?: boolean }} [options]
15
8
  */
16
9
  const runPhpCode = async (ctx, command, options = {}) => {
17
- const {
18
- throwNonZeroCode = true
19
- } = options;
20
- const { code, result } = await runPHPContainerCommand(ctx, `php ${command}`, {
21
- ...options,
22
- withCode: true
23
- });
10
+ const { throwNonZeroCode = true } = options
11
+ const { code, result } = await runPHPContainerCommand(
12
+ ctx,
13
+ `php ${command}`,
14
+ {
15
+ ...options,
16
+ withCode: true
17
+ }
18
+ )
24
19
 
25
20
  if (throwNonZeroCode && code !== 0) {
26
21
  throw new UnknownError(`Code: ${code}
27
- Response: ${result}`);
22
+ Response: ${result}`)
28
23
  }
29
24
 
30
- return { code, result };
31
- };
25
+ return { code, result }
26
+ }
32
27
 
33
- module.exports = runPhpCode;
28
+ module.exports = runPhpCode
@@ -3,24 +3,20 @@
3
3
  * @param {object} param0
4
4
  * @param {string} param0.string
5
5
  * @param {RegExp} param0.regex
6
- * @param {(result: RegExpMatchArray) => string} param0.onNoMatch
6
+ * @param {(result: RegExpMatchArray | null) => string} param0.onNoMatch
7
7
  */
8
- const safeRegexExtract = ({
9
- string,
10
- regex,
11
- onNoMatch
12
- }) => {
13
- const result = string.match(regex);
8
+ const safeRegexExtract = ({ string, regex, onNoMatch }) => {
9
+ const result = string.match(regex)
14
10
 
15
11
  if (result && result.length > 1) {
16
- return result[1];
12
+ return result[1]
17
13
  }
18
14
 
19
15
  if (onNoMatch) {
20
- return onNoMatch(result);
16
+ return onNoMatch(result)
21
17
  }
22
18
 
23
- return result;
24
- };
19
+ return result
20
+ }
25
21
 
26
- module.exports = safeRegexExtract;
22
+ module.exports = safeRegexExtract
@@ -1,35 +1,44 @@
1
- const eta = require('eta');
2
- const fs = require('fs');
3
- const path = require('path');
4
- const pathExists = require('./path-exists');
1
+ const eta = require('eta')
2
+ const fs = require('fs')
3
+ const path = require('path')
4
+ const pathExists = require('./path-exists')
5
5
 
6
+ /**
7
+ * @param {{ configPathname: string, template: string, overwrite?: boolean, templateArgs?: Record<string, unknown> }} param0
8
+ */
6
9
  const setConfigFile = async ({
7
10
  configPathname,
8
11
  template,
9
12
  overwrite,
10
13
  templateArgs = {}
11
14
  }) => {
12
- const pathOk = await pathExists(configPathname);
15
+ const pathOk = await pathExists(configPathname)
13
16
 
14
17
  if (pathOk && !overwrite) {
15
- return true;
18
+ return true
16
19
  }
17
20
 
18
- const configTemplate = await fs.promises.readFile(template, 'utf-8');
21
+ const configTemplate = await fs.promises.readFile(template, 'utf-8')
19
22
  const compliedConfig = await eta.render(configTemplate, {
20
23
  date: new Date().toUTCString(),
21
24
  ...templateArgs
22
- });
25
+ })
23
26
 
24
- const { dir } = path.parse(configPathname);
27
+ if (!compliedConfig) {
28
+ return false
29
+ }
30
+
31
+ const { dir } = path.parse(configPathname)
25
32
 
26
- const dirExists = await pathExists(dir);
33
+ const dirExists = await pathExists(dir)
27
34
  if (!dirExists) {
28
- await fs.promises.mkdir(dir, { recursive: true });
35
+ await fs.promises.mkdir(dir, { recursive: true })
29
36
  }
30
- await fs.promises.writeFile(configPathname, compliedConfig, { encoding: 'utf-8' });
37
+ await fs.promises.writeFile(configPathname, compliedConfig, {
38
+ encoding: 'utf-8'
39
+ })
31
40
 
32
- return true;
33
- };
41
+ return true
42
+ }
34
43
 
35
- module.exports = setConfigFile;
44
+ module.exports = setConfigFile
package/lib/util/sleep.js CHANGED
@@ -1,3 +1,8 @@
1
- const sleep = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));
1
+ /**
2
+ * @param {number} timeout
3
+ * @returns {Promise<void>}
4
+ */
5
+ const sleep = (timeout) =>
6
+ new Promise((resolve) => setTimeout(resolve, timeout))
2
7
 
3
- module.exports = sleep;
8
+ module.exports = sleep
@@ -1,95 +1,113 @@
1
- const { execAsyncSpawn } = require('./exec-async-command');
1
+ const { execAsyncSpawn } = require('./exec-async-command')
2
2
 
3
3
  /**
4
- * @param {String} cmd
5
- * @param {String} serviceName
6
- * @param {{ now: boolean, user: boolean }} options
4
+ * @param {string} cmd
5
+ * @param {string} [serviceName]
6
+ * @param {{ now?: boolean, user?: boolean }} options
7
7
  */
8
- const run = (cmd, serviceName, options = {}) => execAsyncSpawn(
9
- `systemctl ${ options.user ? '--user ' : '' }${ cmd }${ serviceName ? ` ${ serviceName }` : '' }${ options.now ? ' --now' : ''}`,
10
- {
11
- withCode: true
12
- }
13
- );
8
+ const run = (cmd, serviceName, options = {}) =>
9
+ execAsyncSpawn(
10
+ `systemctl ${options.user ? '--user ' : ''}${cmd}${
11
+ serviceName ? ` ${serviceName}` : ''
12
+ }${options.now ? ' --now' : ''}`,
13
+ {
14
+ withCode: true
15
+ }
16
+ )
14
17
 
15
- const daemonReload = () => run('daemon-reload');
18
+ const daemonReload = () => run('daemon-reload')
16
19
 
17
20
  /**
18
21
  * @param {String} serviceName
19
- * @param {{ now: boolean, user: boolean }} defaultOptions
22
+ * @param {{ now?: boolean, user?: boolean }} [defaultOptions]
20
23
  */
21
24
  const systemctlControl = (serviceName, defaultOptions = {}) => ({
22
25
  /**
23
- * @param {{ now: boolean, user: boolean }} options
26
+ * @param {{ now?: boolean, user?: boolean }} [options]
24
27
  */
25
- disable: (options = {}) => run('disable', serviceName, { ...defaultOptions, ...options }),
28
+ disable: (options = {}) =>
29
+ run('disable', serviceName, { ...defaultOptions, ...options }),
26
30
  /**
27
- * @param {{ now: boolean, user: boolean }} options
31
+ * @param {{ now?: boolean, user?: boolean }} [options]
28
32
  */
29
- enable: (options = {}) => run('enable', serviceName, { ...defaultOptions, ...options }),
33
+ enable: (options = {}) =>
34
+ run('enable', serviceName, { ...defaultOptions, ...options }),
30
35
  /**
31
- * @param {{ now: boolean, user: boolean }} options
36
+ * @param {{ now?: boolean, user?: boolean }} [options]
32
37
  */
33
- enableAndStart: (options = {}) => run('enable', serviceName, { now: true, ...defaultOptions, ...options }),
38
+ enableAndStart: (options = {}) =>
39
+ run('enable', serviceName, {
40
+ now: true,
41
+ ...defaultOptions,
42
+ ...options
43
+ }),
34
44
  /**
35
- * @param {{ now: boolean, user: boolean }} options
45
+ * @param {{ now?: boolean, user?: boolean }} [options]
36
46
  */
37
- restart: (options = {}) => run('restart', serviceName, { ...defaultOptions, ...options }),
47
+ restart: (options = {}) =>
48
+ run('restart', serviceName, { ...defaultOptions, ...options }),
38
49
  /**
39
- * @param {{ now: boolean, user: boolean }} options
50
+ * @param {{ now?: boolean, user?: boolean }} [options]
40
51
  */
41
- start: (options = {}) => run('start', serviceName, { ...defaultOptions, ...options }),
52
+ start: (options = {}) =>
53
+ run('start', serviceName, { ...defaultOptions, ...options }),
42
54
  /**
43
- * @param {{ now: boolean, user: boolean }} options
55
+ * @param {{ now?: boolean, user?: boolean }} [options]
44
56
  */
45
- stop: (options = {}) => run('stop', serviceName, { ...defaultOptions, ...options }),
57
+ stop: (options = {}) =>
58
+ run('stop', serviceName, { ...defaultOptions, ...options }),
46
59
  /**
47
- * @param {{ now: boolean, user: boolean }} options
60
+ * @param {{ now?: boolean, user?: boolean }} [options]
48
61
  */
49
62
  isEnabled: async (options = {}) => {
50
63
  try {
51
- const { result } = await run('is-enabled', serviceName, { ...defaultOptions, ...options });
52
- return result.includes('enabled');
64
+ const { result } = await run('is-enabled', serviceName, {
65
+ ...defaultOptions,
66
+ ...options
67
+ })
68
+ return result.includes('enabled')
53
69
  } catch (e) {
54
- return false;
70
+ return false
55
71
  }
56
72
  },
57
73
  /**
58
- * @param {{ now: boolean, user: boolean }} options
74
+ * @param {{ now?: boolean, user?: boolean }} [options]
59
75
  */
60
76
  isRunning: async (options = {}) => {
61
77
  try {
62
- const { result } = await run('status', serviceName, { ...defaultOptions, ...options });
78
+ const { result } = await run('status', serviceName, {
79
+ ...defaultOptions,
80
+ ...options
81
+ })
63
82
 
64
- return result.includes('active (running)');
83
+ return result.includes('active (running)')
65
84
  } catch (e) {
66
- return false;
85
+ return false
67
86
  }
68
87
  },
69
88
  /**
70
- * @param {{ user: boolean }} options
89
+ * @param {{ user?: boolean }} [options]
71
90
  */
72
91
  exists: async (options = {}) => {
73
- const optionsToUse = { ...defaultOptions, ...options };
92
+ const optionsToUse = { ...defaultOptions, ...options }
74
93
  try {
75
- // eslint-disable-next-line max-len, no-useless-escape
76
- const command = `if [[ $(systemctl ${ optionsToUse.user ? '--user ' : ''}list-units --all -t service --full --no-legend "${ serviceName }.service" | sed 's/^\\s*//g' | cut -f1 -d' ') == ${ serviceName }.service ]]; then
94
+ const command = `if [[ $(systemctl ${
95
+ optionsToUse.user ? '--user ' : ''
96
+ }list-units --all -t service --full --no-legend "${serviceName}.service" | sed 's/^\\s*//g' | cut -f1 -d' ') == ${serviceName}.service ]]; then
77
97
  echo "1"
78
98
  else
79
99
  echo "0"
80
- fi`;
81
- const result = await execAsyncSpawn(
82
- command
83
- );
100
+ fi`
101
+ const result = await execAsyncSpawn(command)
84
102
 
85
- return result === '1';
103
+ return result === '1'
86
104
  } catch (e) {
87
- return false;
105
+ return false
88
106
  }
89
107
  }
90
- });
108
+ })
91
109
 
92
110
  module.exports = {
93
111
  systemctlControl,
94
112
  daemonReload
95
- };
113
+ }