@scandipwa/magento-scripts 2.0.3-alpha.0 → 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.
- package/.eslintrc +6 -1
- package/exec.js +75 -39
- package/index.js +87 -46
- package/lib/commands/cleanup.js +18 -21
- package/lib/commands/cli.js +138 -73
- package/lib/commands/execute.js +5 -5
- package/lib/commands/import-db.js +21 -24
- package/lib/commands/link.js +17 -20
- package/lib/commands/logs.js +91 -91
- package/lib/commands/start.js +229 -191
- package/lib/commands/status.js +64 -50
- package/lib/commands/stop.js +14 -11
- package/lib/config/check-configuration-file.js +33 -28
- package/lib/config/cma-config.js +4 -4
- package/lib/config/config.js +40 -18
- package/lib/config/dependencies-for-platforms.js +33 -3
- package/lib/config/docker.js +258 -173
- package/lib/config/get-magento-version-config.js +45 -38
- package/lib/config/get-port-config.js +30 -44
- package/lib/config/get-project-configuration.js +8 -8
- package/lib/config/index.js +51 -42
- package/lib/config/magento/required-php-extensions/index.js +33 -19
- package/lib/config/magento/required-php-extensions/magento-2.3.js +2 -2
- package/lib/config/magento/required-php-extensions/magento-2.4.js +2 -2
- package/lib/config/magento-config.js +4 -4
- package/lib/config/php-config.js +8 -6
- package/lib/config/port-config.js +62 -43
- package/lib/config/save-config.js +6 -6
- package/lib/config/scandipwa-versions.js +2 -2
- package/lib/config/services/composer/versions/composer-1.js +2 -2
- package/lib/config/services/composer/versions/composer-2.js +2 -2
- package/lib/config/services/composer/versions/index.js +1 -1
- package/lib/config/services/elasticsearch/base-repo.js +1 -1
- package/lib/config/services/elasticsearch/default-es-env.js +4 -1
- package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +17 -14
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.10.js +4 -4
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.12.js +4 -4
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.16.js +4 -4
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.17.js +4 -4
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.6.js +4 -4
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.7.js +4 -4
- package/lib/config/services/elasticsearch/versions/elasticsearch-7.9.js +4 -4
- package/lib/config/services/elasticsearch/versions/index.js +9 -9
- package/lib/config/services/maildev/index.js +5 -2
- package/lib/config/services/mariadb/versions/index.js +1 -1
- package/lib/config/services/mariadb/versions/mariadb-10.2.js +3 -3
- package/lib/config/services/mariadb/versions/mariadb-10.3.js +3 -3
- package/lib/config/services/mariadb/versions/mariadb-10.4.js +3 -3
- package/lib/config/services/nginx/versions/index.js +1 -1
- package/lib/config/services/nginx/versions/nginx-1.18.js +5 -4
- package/lib/config/services/php/base-repo.js +1 -1
- package/lib/config/services/php/extensions/apcu.js +3 -3
- package/lib/config/services/php/extensions/bcmath.js +2 -2
- package/lib/config/services/php/extensions/curl.js +3 -6
- package/lib/config/services/php/extensions/gd.js +4 -3
- package/lib/config/services/php/extensions/index.js +9 -8
- package/lib/config/services/php/extensions/intl.js +3 -5
- package/lib/config/services/php/extensions/opcache.js +3 -5
- package/lib/config/services/php/extensions/pdo_mysql.js +2 -2
- package/lib/config/services/php/extensions/soap.js +3 -5
- package/lib/config/services/php/extensions/sodium.js +3 -5
- package/lib/config/services/php/extensions/xdebug.js +5 -3
- package/lib/config/services/php/extensions/xsl.js +3 -5
- package/lib/config/services/php/extensions/zip.js +3 -5
- package/lib/config/services/php/versions/index.js +1 -1
- package/lib/config/services/php/versions/php-7.2.js +13 -9
- package/lib/config/services/php/versions/php-7.3.js +13 -9
- package/lib/config/services/php/versions/php-7.4.js +13 -9
- package/lib/config/services/php/versions/php-8.1.js +13 -9
- package/lib/config/services/redis/index.js +1 -1
- package/lib/config/services/redis/redis-5.0.js +2 -2
- package/lib/config/services/redis/redis-6.0.js +2 -2
- package/lib/config/services/redis/redis-6.2.js +2 -2
- package/lib/config/services/ssl-terminator/index.js +6 -5
- package/lib/config/services/varnish/index.js +1 -1
- package/lib/config/services/varnish/varnish-6-0.js +7 -5
- package/lib/config/services/varnish/varnish-6-6.js +7 -5
- package/lib/config/services/varnish/varnish-7-0.js +7 -5
- package/lib/config/system-config.js +55 -32
- package/lib/config/templates/mariadb.template.cnf +2 -0
- package/lib/config/versions/index.js +49 -34
- package/lib/config/versions/magento-2.2.10.js +22 -15
- package/lib/config/versions/magento-2.3.0.js +22 -15
- package/lib/config/versions/magento-2.3.1.js +22 -15
- package/lib/config/versions/magento-2.3.2-p1.js +22 -15
- package/lib/config/versions/magento-2.3.2-p2.js +22 -15
- package/lib/config/versions/magento-2.3.2.js +22 -15
- package/lib/config/versions/magento-2.3.3-p1.js +22 -15
- package/lib/config/versions/magento-2.3.3.js +22 -15
- package/lib/config/versions/magento-2.3.4-p1.js +22 -15
- package/lib/config/versions/magento-2.3.4-p2.js +22 -15
- package/lib/config/versions/magento-2.3.4.js +22 -15
- package/lib/config/versions/magento-2.3.5-p1.js +22 -15
- package/lib/config/versions/magento-2.3.5-p2.js +22 -15
- package/lib/config/versions/magento-2.3.5.js +27 -15
- package/lib/config/versions/magento-2.3.6-p1.js +22 -15
- package/lib/config/versions/magento-2.3.6.js +22 -15
- package/lib/config/versions/magento-2.3.7-p1.js +22 -15
- package/lib/config/versions/magento-2.3.7-p2.js +22 -15
- package/lib/config/versions/magento-2.3.7-p3.js +22 -15
- package/lib/config/versions/magento-2.3.7-p4.js +22 -15
- package/lib/config/versions/magento-2.3.7.js +22 -15
- package/lib/config/versions/magento-2.4.0-p1.js +22 -15
- package/lib/config/versions/magento-2.4.0.js +22 -15
- package/lib/config/versions/magento-2.4.1-p1.js +23 -16
- package/lib/config/versions/magento-2.4.1.js +23 -16
- package/lib/config/versions/magento-2.4.2-p1.js +23 -16
- package/lib/config/versions/magento-2.4.2-p2.js +23 -16
- package/lib/config/versions/magento-2.4.2.js +23 -16
- package/lib/config/versions/magento-2.4.3-p1.js +23 -16
- package/lib/config/versions/magento-2.4.3-p2.js +23 -16
- package/lib/config/versions/magento-2.4.3-p3.js +23 -16
- package/lib/config/versions/magento-2.4.3.js +23 -16
- package/lib/config/versions/magento-2.4.4-p1.js +23 -16
- package/lib/config/versions/magento-2.4.4-p2.js +23 -16
- package/lib/config/versions/magento-2.4.4.js +23 -16
- package/lib/config/versions/magento-2.4.5-p1.js +23 -16
- package/lib/config/versions/magento-2.4.5.js +23 -17
- package/lib/config/xml-parser.js +21 -20
- package/lib/errors/known-error.js +8 -6
- package/lib/errors/unknown-error.js +8 -6
- package/lib/tasks/cache/create-cache-folder.js +10 -10
- package/lib/tasks/cache/index.js +1 -1
- package/lib/tasks/cache/remove-cache-folder.js +9 -9
- package/lib/tasks/cleanup.js +22 -24
- package/lib/tasks/cli/create-bashrc-config.js +19 -11
- package/lib/tasks/cli/index.js +10 -13
- package/lib/tasks/composer/index.js +20 -15
- package/lib/tasks/composer/local-auth-json.js +32 -18
- package/lib/tasks/database/connect-to-database.js +71 -51
- package/lib/tasks/database/create-magento-database.js +7 -7
- package/lib/tasks/database/create-magento-user.js +33 -20
- package/lib/tasks/database/default-magento-database.js +1 -1
- package/lib/tasks/database/default-magento-user.js +2 -2
- package/lib/tasks/database/dump-theme-config.js +16 -12
- package/lib/tasks/database/fix-db.js +62 -52
- package/lib/tasks/database/import-dump-to-database.js +122 -85
- package/lib/tasks/database/import-remote-db/index.js +16 -18
- package/lib/tasks/database/import-remote-db/ssh/database-dump-command.js +2 -2
- package/lib/tasks/database/import-remote-db/ssh/index.js +34 -35
- package/lib/tasks/database/import-remote-db/ssh/readymage.js +41 -38
- package/lib/tasks/database/import-remote-db/ssh/regular-server.js +44 -46
- package/lib/tasks/database/index.js +1 -1
- package/lib/tasks/database/magento-tables.js +3 -3
- package/lib/tasks/database/restore-theme-config.js +26 -19
- package/lib/tasks/docker/api.d.ts +1 -1
- package/lib/tasks/docker/api.js +31 -33
- package/lib/tasks/docker/containers/container-api.d.ts +49 -14
- package/lib/tasks/docker/containers/container-api.js +112 -83
- package/lib/tasks/docker/containers/index.js +3 -3
- package/lib/tasks/docker/containers/tasks.js +171 -99
- package/lib/tasks/docker/convert-composer-home-to-composer-cache-volume.js +34 -25
- package/lib/tasks/docker/convert-legacy-volumes.js +91 -55
- package/lib/tasks/docker/convert-mysql-to-mariadb.js +178 -147
- package/lib/tasks/docker/image/image-api.d.ts +2 -3
- package/lib/tasks/docker/image/image-api.js +41 -34
- package/lib/tasks/docker/image/index.js +2 -2
- package/lib/tasks/docker/index.js +26 -21
- package/lib/tasks/docker/network/index.js +3 -3
- package/lib/tasks/docker/network/network-api.d.ts +11 -8
- package/lib/tasks/docker/network/network-api.js +53 -61
- package/lib/tasks/docker/network/tasks.js +41 -31
- package/lib/tasks/docker/project-image-builder.js +174 -108
- package/lib/tasks/docker/system/index.js +2 -2
- package/lib/tasks/docker/system/system-api.d.ts +2 -2
- package/lib/tasks/docker/system/system-api.js +16 -19
- package/lib/tasks/docker/volume/index.js +3 -3
- package/lib/tasks/docker/volume/tasks.js +63 -46
- package/lib/tasks/docker/volume/volume-api.d.ts +8 -5
- package/lib/tasks/docker/volume/volume-api.js +59 -76
- package/lib/tasks/execute.js +91 -55
- package/lib/tasks/file-system/create-mariadb-config.js +18 -10
- package/lib/tasks/file-system/create-nginx-config.js +18 -19
- package/lib/tasks/file-system/create-php-config.js +12 -8
- package/lib/tasks/file-system/create-php-debug-config.js +23 -18
- package/lib/tasks/file-system/create-php-fpm-config.js +14 -9
- package/lib/tasks/file-system/create-phpstorm-config/database-config.js +144 -112
- package/lib/tasks/file-system/create-phpstorm-config/eslint-config.js +69 -45
- package/lib/tasks/file-system/create-phpstorm-config/exclude-folder-config.js +69 -70
- package/lib/tasks/file-system/create-phpstorm-config/index.js +28 -24
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/coding-standard-config.js +9 -9
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/config.js +23 -23
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/custom-ruleset-path-config.js +22 -19
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/default-properties-config.js +26 -16
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/eslint-inspection-config.js +14 -15
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/index.js +43 -34
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/inspection-tools-config.js +14 -6
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/magento-coding-standard-config.js +9 -9
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/mess-detector-validation-inspection-config.js +53 -47
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/paths.js +41 -12
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-fixer-validation-inspection-config.js +33 -30
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-validation-inspection-config.js +35 -38
- package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/stylelint-inspection-config.js +14 -15
- package/lib/tasks/file-system/create-phpstorm-config/keys.js +10 -10
- package/lib/tasks/file-system/create-phpstorm-config/php-config/index.js +33 -25
- package/lib/tasks/file-system/create-phpstorm-config/php-config/mess-detector-config.js +28 -25
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-code-sniffer-config.js +53 -32
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-config.js +7 -7
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-cs-fixer-config.js +37 -27
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-interpreters-config.js +53 -31
- package/lib/tasks/file-system/create-phpstorm-config/php-config/php-project-shared-configuration-config.js +42 -30
- package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/index.js +33 -20
- package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/php-docker-settings-config.js +3 -3
- package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/setup-php-docker-container-settings-config.js +27 -16
- package/lib/tasks/file-system/create-phpstorm-config/setup-xml-structure.js +14 -13
- package/lib/tasks/file-system/create-phpstorm-config/stylelint-config.js +52 -34
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/composer-settings-config.js +41 -33
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/format-setting-config.js +39 -27
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/index.js +34 -30
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/mess-detector-project-configuration-config.js +32 -22
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-code-sniffer-project-configuration-config.js +32 -22
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-cs-fixer-project-configuration-config.js +32 -22
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-debug-general-config.js +42 -31
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-server-config.js +45 -33
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-stan-project-configuration-config.js.js +32 -22
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-workspace-project-configuration-config.js +22 -19
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/properties-component-config.js +35 -21
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/psalm-project-configuration-config.js.js +31 -22
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/run-manager-config.js +38 -28
- package/lib/tasks/file-system/create-phpstorm-config/workspace-config/workspace-config.js +5 -5
- package/lib/tasks/file-system/create-phpstorm-config/xml-utils.js +3 -2
- package/lib/tasks/file-system/create-ssl-terminator-config.js +46 -34
- package/lib/tasks/file-system/create-varnish-config.js +20 -23
- package/lib/tasks/file-system/create-vscode-config.js +66 -49
- package/lib/tasks/file-system/index.js +29 -25
- package/lib/tasks/import-dump.js +54 -45
- package/lib/tasks/link.js +24 -23
- package/lib/tasks/magento/enable-magento-composer-plugins.js +213 -149
- package/lib/tasks/magento/index.js +1 -1
- package/lib/tasks/magento/install-magento-project.js +158 -97
- package/lib/tasks/magento/remove-magento.js +30 -24
- package/lib/tasks/magento/setup-magento/adjust-full-page-cache.js +27 -15
- package/lib/tasks/magento/setup-magento/configure-elasticsearch.js +23 -10
- package/lib/tasks/magento/setup-magento/create-admin.js +21 -13
- package/lib/tasks/magento/setup-magento/delete-admin-users.js +5 -5
- package/lib/tasks/magento/setup-magento/delete-customers.js +16 -10
- package/lib/tasks/magento/setup-magento/delete-orders.js +16 -10
- package/lib/tasks/magento/setup-magento/disable-2fa.js +11 -8
- package/lib/tasks/magento/setup-magento/disable-maintenance-mode.js +7 -7
- package/lib/tasks/magento/setup-magento/disable-page-builder.js +5 -4
- package/lib/tasks/magento/setup-magento/flush-redis-config.js +14 -8
- package/lib/tasks/magento/setup-magento/increase-admin-session-lifetime.js +21 -17
- package/lib/tasks/magento/setup-magento/index-products.js +4 -6
- package/lib/tasks/magento/setup-magento/index.js +54 -47
- package/lib/tasks/magento/setup-magento/install-magento.js +112 -79
- package/lib/tasks/magento/setup-magento/migrate-database.js +115 -96
- package/lib/tasks/magento/setup-magento/set-base-url.js +35 -21
- package/lib/tasks/magento/setup-magento/set-deployment-mode.js +15 -13
- package/lib/tasks/magento/setup-magento/set-mail-config.js +20 -14
- package/lib/tasks/magento/setup-magento/set-url-rewrite.js +13 -9
- package/lib/tasks/magento/setup-magento/upgrade-magento.js +30 -22
- package/lib/tasks/magento/setup-magento/urn-highlighter.js +11 -11
- package/lib/tasks/magento/setup-magento/varnish-config.js +42 -32
- package/lib/tasks/magento/setup-magento/waiting-for-redis.js +6 -8
- package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +108 -65
- package/lib/tasks/magento/uninstall-magento.js +19 -16
- package/lib/tasks/php/php-container.d.ts +19 -0
- package/lib/tasks/php/php-container.js +50 -46
- package/lib/tasks/php/update-env-php.js +50 -46
- package/lib/tasks/project-config/index.js +12 -8
- package/lib/tasks/requirements/composer-credentials.js +215 -112
- package/lib/tasks/requirements/docker/context.js +49 -37
- package/lib/tasks/requirements/docker/index.js +123 -89
- package/lib/tasks/requirements/docker/install-on-mac.js +21 -14
- package/lib/tasks/requirements/docker/install.js +63 -52
- package/lib/tasks/requirements/docker/performance.js +40 -24
- package/lib/tasks/requirements/docker/permissions.js +27 -17
- package/lib/tasks/requirements/docker/running-status.js +79 -66
- package/lib/tasks/requirements/docker/version.js +14 -11
- package/lib/tasks/requirements/index.js +33 -29
- package/lib/tasks/requirements/node-version.js +8 -8
- package/lib/tasks/requirements/php-version.js +14 -11
- package/lib/tasks/requirements/platform.js +42 -26
- package/lib/tasks/requirements/rosetta.js +15 -12
- package/lib/tasks/start.js +172 -148
- package/lib/tasks/status/index.js +155 -88
- package/lib/tasks/stop.js +22 -18
- package/lib/tasks/theme/build-theme.js +50 -33
- package/lib/tasks/theme/install-theme.js +31 -18
- package/lib/tasks/theme/link-theme.js +27 -21
- package/lib/tasks/theme/retrieve-theme-data.js +24 -18
- package/lib/tasks/theme/setup-themes.js +87 -59
- package/lib/tasks/theme/symlink-theme.js +44 -22
- package/lib/util/CSA-theme.js +23 -21
- package/lib/util/analytics.js +130 -75
- package/lib/util/arch.js +22 -18
- package/lib/util/clean-object.js +15 -10
- package/lib/util/config-file-validator.js +64 -71
- package/lib/util/config-php-json.js +34 -16
- package/lib/util/connection-string.js +41 -27
- package/lib/util/console-block.js +112 -65
- package/lib/util/database.js +56 -33
- package/lib/util/deepmerge.d.ts +1 -1
- package/lib/util/deepmerge.js +19 -28
- package/lib/util/dockerfile-builder/build-instructions.js +159 -143
- package/lib/util/dockerfile-builder/index.js +47 -73
- package/lib/util/dockerfile-builder/types.d.ts +2 -1
- package/lib/util/download-file.js +28 -16
- package/lib/util/env-php-json.js +42 -16
- package/lib/util/exec-async-command.d.ts +9 -9
- package/lib/util/exec-async-command.js +82 -59
- package/lib/util/exec-async.d.ts +2 -0
- package/lib/util/exec-async.js +12 -5
- package/lib/util/execute-in-container.js +22 -27
- package/lib/util/execute-sudo-command.js +11 -15
- package/lib/util/get-brew-bin-path.js +27 -23
- package/lib/util/get-installed-magento-version.js +22 -16
- package/lib/util/get-jsonfile-data.js +14 -9
- package/lib/util/install-dependencies-task.js +53 -41
- package/lib/util/instance-metadata.js +44 -29
- package/lib/util/ip.js +16 -12
- package/lib/util/is-running-root.js +6 -3
- package/lib/util/is-wsl.js +10 -10
- package/lib/util/macos-version.js +12 -11
- package/lib/util/magento-task.js +14 -9
- package/lib/util/match-filesystem.js +22 -16
- package/lib/util/move-file.js +40 -25
- package/lib/util/nginx-logs-parser.js +50 -39
- package/lib/util/open-browser.js +8 -5
- package/lib/util/os-platform.js +40 -32
- package/lib/util/path-exists-sync.js +10 -6
- package/lib/util/path-exists.js +6 -6
- package/lib/util/php-task.js +11 -10
- package/lib/util/portscanner.js +97 -85
- package/lib/util/prefix.js +31 -22
- package/lib/util/resolve-configuration-with-overrides.js +30 -15
- package/lib/util/rmdir-safe.js +15 -11
- package/lib/util/run-composer.js +16 -16
- package/lib/util/run-container-image.js +9 -4
- package/lib/util/run-magento.js +16 -17
- package/lib/util/run-php.js +16 -21
- package/lib/util/safe-regex-extract.js +8 -12
- package/lib/util/set-config.js +24 -15
- package/lib/util/sleep.js +7 -2
- package/lib/util/systemctl.js +62 -44
- package/lib/util/wait-for-it.js +42 -33
- package/lib/util/wait-for-logs.js +42 -35
- package/lib/util/xdg-open-exists.js +19 -19
- package/package.json +7 -3
- package/tsconfig.json +24 -0
- package/typings/context.d.ts +76 -34
- package/typings/index.d.ts +41 -38
- package/typings/override.d.ts +14 -0
- package/typings/phpstorm.d.ts +19 -19
- package/.prettierrc +0 -3
- package/lib/util/get-php-for-phpbrew.js +0 -30
- package/lib/util/request.js +0 -0
package/lib/util/portscanner.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
1
2
|
/**
|
|
2
3
|
* This is modified version of node-portscanner (https://github.com/baalexander/node-portscanner/blob/master/lib/portscanner.js)
|
|
3
4
|
* with added option to ignore ports and reduced dependencies count
|
|
4
5
|
*/
|
|
5
|
-
const net = require('net')
|
|
6
|
+
const net = require('net')
|
|
6
7
|
|
|
7
|
-
const { Socket } = net
|
|
8
|
+
const { Socket } = net
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Checks the status of an individual port.
|
|
@@ -14,141 +15,152 @@ const { Socket } = net;
|
|
|
14
15
|
* @param {Number} [options.timeout] - Connection timeout in ms.
|
|
15
16
|
* @returns {Promise<string>}
|
|
16
17
|
*/
|
|
17
|
-
const checkPortStatus = (port, options = {}) =>
|
|
18
|
-
|
|
19
|
-
host = '127.0.0.1',
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
18
|
+
const checkPortStatus = (port, options = {}) =>
|
|
19
|
+
new Promise((resolve, reject) => {
|
|
20
|
+
const { host = '127.0.0.1', timeout = 400 } = options
|
|
21
|
+
|
|
22
|
+
let connectionRefused = false
|
|
23
|
+
|
|
24
|
+
const socket = new Socket()
|
|
25
|
+
/**
|
|
26
|
+
* @type {string}
|
|
27
|
+
*/
|
|
28
|
+
let status
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @type {Error | null}
|
|
32
|
+
*/
|
|
33
|
+
let error
|
|
34
|
+
|
|
35
|
+
// Socket connection established, port is open
|
|
36
|
+
socket.on('connect', () => {
|
|
37
|
+
status = 'open'
|
|
38
|
+
socket.destroy()
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
// If no response, assume port is not listening
|
|
42
|
+
socket.setTimeout(timeout)
|
|
43
|
+
socket.on('timeout', () => {
|
|
44
|
+
status = 'closed'
|
|
45
|
+
error = new Error(
|
|
46
|
+
`Timeout (${timeout}ms) occurred waiting for ${host}:${port} to be available`
|
|
47
|
+
)
|
|
48
|
+
socket.destroy()
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
// Assuming the port is not open if an error. May need to refine based on
|
|
52
|
+
// exception
|
|
53
|
+
socket.on('error', (exception) => {
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
if (exception.code !== 'ECONNREFUSED') {
|
|
56
|
+
error = exception
|
|
57
|
+
} else {
|
|
58
|
+
connectionRefused = true
|
|
59
|
+
}
|
|
60
|
+
status = 'closed'
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
// Return after the socket has closed
|
|
64
|
+
socket.on('close', (hadError) => {
|
|
65
|
+
if (hadError && !connectionRefused) {
|
|
66
|
+
error = new Error('Socket closed with an error!')
|
|
67
|
+
} else {
|
|
68
|
+
error = null
|
|
69
|
+
}
|
|
70
|
+
if (error) {
|
|
71
|
+
return reject(error)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return resolve(status)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
socket.connect(port, host)
|
|
78
|
+
})
|
|
70
79
|
|
|
71
80
|
/**
|
|
72
81
|
* Internal helper function used by {@link findAPortInUse} and {@link findAPortNotInUse}
|
|
73
82
|
* to find a port from a range or a list with a specific status.
|
|
74
83
|
* @param {String} status - Status to check.
|
|
75
|
-
* @param {Object}
|
|
84
|
+
* @param {Object} options
|
|
76
85
|
* @param {Number} options.startPort Port to begin status check on (inclusive).
|
|
77
86
|
* @param {Number} options.endPort Last port to check status on (inclusive).
|
|
78
|
-
* @param {String} options.host Host of where to scan.
|
|
79
|
-
* @param {Number[]} options.portList Array of ports to check status on.
|
|
80
|
-
* @param {Number[]} options.portIgnoreList Array of ports to check status on.
|
|
81
|
-
* @returns {Promise<number>}
|
|
87
|
+
* @param {String} [options.host] Host of where to scan.
|
|
88
|
+
* @param {Number[]} [options.portList] Array of ports to check status on.
|
|
89
|
+
* @param {Number[]} [options.portIgnoreList] Array of ports to check status on.
|
|
90
|
+
* @returns {Promise<number | false>}
|
|
82
91
|
*/
|
|
83
|
-
async function findAPortWithStatus(status, options
|
|
92
|
+
async function findAPortWithStatus(status, options) {
|
|
84
93
|
const {
|
|
85
94
|
portList,
|
|
86
95
|
startPort,
|
|
87
96
|
endPort = 65535,
|
|
88
97
|
host,
|
|
89
98
|
portIgnoreList = []
|
|
90
|
-
} = options
|
|
99
|
+
} = options
|
|
91
100
|
|
|
92
|
-
let foundPort = false
|
|
93
|
-
let numberOfPortsChecked = 0
|
|
94
|
-
let port = portList ? portList[0] : startPort
|
|
101
|
+
let foundPort = false
|
|
102
|
+
let numberOfPortsChecked = 0
|
|
103
|
+
let port = portList ? portList[0] : startPort
|
|
95
104
|
|
|
96
105
|
// Returns true if a port with matching status has been found or if checked
|
|
97
106
|
// the entire range of ports
|
|
98
|
-
const hasFoundPort = () =>
|
|
107
|
+
const hasFoundPort = () =>
|
|
108
|
+
foundPort ||
|
|
109
|
+
numberOfPortsChecked ===
|
|
110
|
+
(portList ? portList.length : endPort - startPort + 1)
|
|
99
111
|
|
|
100
112
|
// Checks the status of the port
|
|
101
113
|
const checkNextPort = async () => {
|
|
102
114
|
if (portIgnoreList.includes(port)) {
|
|
103
|
-
numberOfPortsChecked
|
|
104
|
-
port = portList ? portList[numberOfPortsChecked] : port + 1
|
|
105
|
-
return
|
|
115
|
+
numberOfPortsChecked++
|
|
116
|
+
port = portList ? portList[numberOfPortsChecked] : port + 1
|
|
117
|
+
return
|
|
106
118
|
}
|
|
107
|
-
const statusOfPort = await checkPortStatus(port, { host })
|
|
119
|
+
const statusOfPort = await checkPortStatus(port, { host })
|
|
108
120
|
if (statusOfPort === status) {
|
|
109
|
-
foundPort = true
|
|
110
|
-
return
|
|
121
|
+
foundPort = true
|
|
122
|
+
return
|
|
111
123
|
}
|
|
112
|
-
numberOfPortsChecked
|
|
113
|
-
port = portList ? portList[numberOfPortsChecked] : port + 1
|
|
114
|
-
}
|
|
124
|
+
numberOfPortsChecked++
|
|
125
|
+
port = portList ? portList[numberOfPortsChecked] : port + 1
|
|
126
|
+
}
|
|
115
127
|
|
|
116
128
|
while (!hasFoundPort()) {
|
|
117
|
-
await checkNextPort()
|
|
129
|
+
await checkNextPort()
|
|
118
130
|
}
|
|
119
131
|
|
|
120
132
|
if (foundPort) {
|
|
121
|
-
return port
|
|
133
|
+
return port
|
|
122
134
|
}
|
|
123
135
|
|
|
124
|
-
return false
|
|
136
|
+
return false
|
|
125
137
|
}
|
|
126
138
|
|
|
127
139
|
/**
|
|
128
140
|
* Finds the first port with a status of 'open', implying the port is in use and
|
|
129
141
|
* there is likely a service listening on it.
|
|
130
|
-
* @param {Object}
|
|
142
|
+
* @param {Object} options
|
|
131
143
|
* @param {Number} options.startPort Port to begin status check on (inclusive).
|
|
132
144
|
* @param {Number} options.endPort Last port to check status on (inclusive).
|
|
133
145
|
* @param {String} options.host Host of where to scan.
|
|
134
146
|
* @param {Number[]} options.portList Array of ports to check status on.
|
|
135
147
|
* @param {Number[]} options.portIgnoreList Array of ports to check status on.
|
|
136
148
|
*/
|
|
137
|
-
const findAPortInUse = (options) => findAPortWithStatus('open', options)
|
|
149
|
+
const findAPortInUse = (options) => findAPortWithStatus('open', options)
|
|
138
150
|
|
|
139
151
|
/**
|
|
140
152
|
* Finds the first port with a status of 'closed', implying the port is not in
|
|
141
|
-
* @param {Object}
|
|
153
|
+
* @param {Object} options
|
|
142
154
|
* @param {Number} options.startPort Port to begin status check on (inclusive).
|
|
143
155
|
* @param {Number} options.endPort Last port to check status on (inclusive).
|
|
144
|
-
* @param {String} options.host Host of where to scan.
|
|
145
|
-
* @param {Number[]} options.portList Array of ports to check status on.
|
|
156
|
+
* @param {String} [options.host] Host of where to scan.
|
|
157
|
+
* @param {Number[]} [options.portList] Array of ports to check status on.
|
|
146
158
|
* @param {Number[]} options.portIgnoreList Array of ports to check status on.
|
|
147
159
|
*/
|
|
148
|
-
const findAPortNotInUse = (options) => findAPortWithStatus('closed', options)
|
|
160
|
+
const findAPortNotInUse = (options) => findAPortWithStatus('closed', options)
|
|
149
161
|
|
|
150
162
|
module.exports = {
|
|
151
163
|
findAPortInUse,
|
|
152
164
|
findAPortNotInUse,
|
|
153
165
|
checkPortStatus
|
|
154
|
-
}
|
|
166
|
+
}
|
package/lib/util/prefix.js
CHANGED
|
@@ -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(
|
|
13
|
-
|
|
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 =
|
|
46
|
-
|
|
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
|
-
|
|
8
|
-
|
|
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
|
-
|
|
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(
|
|
25
|
+
throw new UnknownError(
|
|
26
|
+
`Configuration file validation error!\n\n${e.message}`
|
|
27
|
+
)
|
|
16
28
|
}
|
|
17
29
|
|
|
18
|
-
const overridenConfiguration = deepmerge(
|
|
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
|
package/lib/util/rmdir-safe.js
CHANGED
|
@@ -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
|
package/lib/util/run-composer.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/lib/util/run-magento.js
CHANGED
|
@@ -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 {
|
|
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(
|
|
18
|
-
|
|
19
|
-
|
|
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
|
package/lib/util/run-php.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|