@scandipwa/magento-scripts 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +259 -160
- 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 +5 -4
- package/lib/config/services/mariadb/versions/mariadb-10.3.js +5 -4
- package/lib/config/services/mariadb/versions/mariadb-10.4.js +5 -4
- 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 +8 -0
- package/lib/config/versions/index.js +48 -27
- 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 +175 -92
- 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 +26 -11
- 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 -30
- 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 +39 -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 +15 -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 +74 -55
- 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 +10 -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 +54 -20
- 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
|
@@ -1,45 +1,59 @@
|
|
|
1
1
|
/* eslint-disable max-len */
|
|
2
|
-
const logger = require('@scandipwa/scandipwa-dev-utils/logger')
|
|
3
|
-
const KnownError = require('../../errors/known-error')
|
|
4
|
-
const UnknownError = require('../../errors/unknown-error')
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
const logger = require('@scandipwa/scandipwa-dev-utils/logger')
|
|
3
|
+
const KnownError = require('../../errors/known-error')
|
|
4
|
+
const UnknownError = require('../../errors/unknown-error')
|
|
5
|
+
const {
|
|
6
|
+
execAsyncSpawn,
|
|
7
|
+
execCommandTask
|
|
8
|
+
} = require('../../util/exec-async-command')
|
|
9
|
+
const pathExists = require('../../util/path-exists')
|
|
10
|
+
const connectToDatabase = require('./connect-to-database')
|
|
11
|
+
const defaultMagentoUser = require('./default-magento-user')
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
|
-
* @
|
|
14
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
12
15
|
*/
|
|
13
16
|
const copyDatabaseDumpIntoContainer = () => ({
|
|
14
17
|
title: 'Copying database dump into container',
|
|
15
18
|
task: async (ctx, task) => {
|
|
16
|
-
const {
|
|
17
|
-
|
|
19
|
+
const {
|
|
20
|
+
config: { docker },
|
|
21
|
+
ports
|
|
22
|
+
} = ctx
|
|
23
|
+
const { mariadb } = docker.getContainers(ports)
|
|
18
24
|
|
|
19
25
|
return task.newListr(
|
|
20
|
-
execCommandTask(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
execCommandTask(
|
|
27
|
+
`docker cp ${ctx.importDb} ${mariadb.name}:/dump.sql`,
|
|
28
|
+
{
|
|
29
|
+
logOutput: true
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
)
|
|
24
33
|
}
|
|
25
|
-
})
|
|
34
|
+
})
|
|
26
35
|
|
|
27
36
|
/**
|
|
28
|
-
* @
|
|
37
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
29
38
|
*/
|
|
30
39
|
const runSetGlobalLogBinTrustFunctionCreatorsCommand = () => ({
|
|
31
40
|
task: async (ctx, task) => {
|
|
32
|
-
const {
|
|
33
|
-
|
|
41
|
+
const {
|
|
42
|
+
config: { docker },
|
|
43
|
+
ports
|
|
44
|
+
} = ctx
|
|
45
|
+
const { mariadb } = docker.getContainers(ports)
|
|
34
46
|
|
|
35
47
|
return task.newListr(
|
|
36
|
-
execCommandTask(
|
|
37
|
-
|
|
48
|
+
execCommandTask(
|
|
49
|
+
`docker exec ${mariadb.name} bash -c 'mysql -uroot -p${mariadb.env.MARIADB_ROOT_PASSWORD} -e "SET GLOBAL log_bin_trust_function_creators = 1;"'`
|
|
50
|
+
)
|
|
51
|
+
)
|
|
38
52
|
}
|
|
39
|
-
})
|
|
53
|
+
})
|
|
40
54
|
|
|
41
55
|
/**
|
|
42
|
-
* @
|
|
56
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
43
57
|
*/
|
|
44
58
|
const deleteDatabaseBeforeImportingDumpPrompt = () => ({
|
|
45
59
|
title: 'Deleting magento database before importing dump',
|
|
@@ -61,145 +75,168 @@ Note that you will lose your existing database!`,
|
|
|
61
75
|
message: 'Skip this step'
|
|
62
76
|
}
|
|
63
77
|
]
|
|
64
|
-
})
|
|
78
|
+
})
|
|
65
79
|
|
|
66
80
|
if (deleteDatabaseMagentoChoice === 'delete') {
|
|
67
|
-
await ctx.databaseConnection.query(
|
|
68
|
-
|
|
69
|
-
|
|
81
|
+
await ctx.databaseConnection.query(
|
|
82
|
+
'DROP DATABASE IF EXISTS magento;'
|
|
83
|
+
)
|
|
84
|
+
await ctx.databaseConnection.query('CREATE DATABASE magento;')
|
|
85
|
+
return
|
|
70
86
|
}
|
|
71
|
-
task.skip()
|
|
87
|
+
task.skip()
|
|
72
88
|
}
|
|
73
|
-
})
|
|
89
|
+
})
|
|
74
90
|
|
|
75
91
|
/**
|
|
76
|
-
* @
|
|
92
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
77
93
|
*/
|
|
78
94
|
const executeImportDumpSQL = () => ({
|
|
79
95
|
task: async (ctx, task) => {
|
|
80
|
-
const {
|
|
81
|
-
|
|
96
|
+
const {
|
|
97
|
+
config: { docker },
|
|
98
|
+
ports
|
|
99
|
+
} = ctx
|
|
100
|
+
const { mariadb } = docker.getContainers(ports)
|
|
82
101
|
|
|
83
102
|
const userCredentialsForMariaDBCLI = await task.prompt({
|
|
84
103
|
type: 'Select',
|
|
85
|
-
message: `Which user do you want to use to import db in ${
|
|
104
|
+
message: `Which user do you want to use to import db in ${mariadb._} client?`,
|
|
86
105
|
choices: [
|
|
87
106
|
{
|
|
88
107
|
name: `--user=root --password=${mariadb.env.MARIADB_ROOT_PASSWORD}`,
|
|
89
|
-
message: `root (${logger.style.command(
|
|
108
|
+
message: `root (${logger.style.command(
|
|
109
|
+
'Probably safest option'
|
|
110
|
+
)})`
|
|
90
111
|
},
|
|
91
112
|
{
|
|
92
113
|
name: `--user=${defaultMagentoUser.user} --password=${defaultMagentoUser.password}`,
|
|
93
114
|
message: `${defaultMagentoUser.user}`
|
|
94
115
|
}
|
|
95
116
|
]
|
|
96
|
-
})
|
|
117
|
+
})
|
|
97
118
|
|
|
98
|
-
const importCommand = `docker exec ${mariadb.name} bash -c "mysql ${userCredentialsForMariaDBCLI} magento < ./dump.sql"
|
|
119
|
+
const importCommand = `docker exec ${mariadb.name} bash -c "mysql ${userCredentialsForMariaDBCLI} magento < ./dump.sql"`
|
|
99
120
|
|
|
100
|
-
const startImportTime = Date.now()
|
|
121
|
+
const startImportTime = Date.now()
|
|
101
122
|
const tickInterval = setInterval(() => {
|
|
102
|
-
task.title = `Importing Database Dump To ${
|
|
103
|
-
|
|
123
|
+
task.title = `Importing Database Dump To ${mariadb._}, ${Math.floor(
|
|
124
|
+
(Date.now() - startImportTime) / 1000
|
|
125
|
+
)}s in progress...`
|
|
126
|
+
}, 1000)
|
|
104
127
|
|
|
105
128
|
try {
|
|
106
|
-
await execAsyncSpawn(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
callback: (t) => {
|
|
110
|
-
task.output = t;
|
|
111
|
-
}
|
|
129
|
+
await execAsyncSpawn(importCommand, {
|
|
130
|
+
callback: (t) => {
|
|
131
|
+
task.output = t
|
|
112
132
|
}
|
|
113
|
-
)
|
|
133
|
+
})
|
|
114
134
|
} catch (e) {
|
|
115
|
-
if (e.message.includes(
|
|
135
|
+
if (e.message.includes("Unknown collation: 'utf8mb4_0900_ai_ci'")) {
|
|
116
136
|
const confirmFixingCollation = await task.prompt({
|
|
117
137
|
type: 'Select',
|
|
118
|
-
message: `We got the following error while trying to import ${logger.style.file(
|
|
138
|
+
message: `We got the following error while trying to import ${logger.style.file(
|
|
139
|
+
'dump.sql'
|
|
140
|
+
)}!
|
|
119
141
|
|
|
120
142
|
${e.message}
|
|
121
143
|
|
|
122
144
|
To fix this error we suggest running the following commands:
|
|
123
|
-
${logger.style.command(
|
|
145
|
+
${logger.style.command(
|
|
146
|
+
"sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' dump.sql"
|
|
147
|
+
)}
|
|
124
148
|
`,
|
|
125
149
|
choices: [
|
|
126
150
|
{
|
|
127
151
|
name: 'yes',
|
|
128
|
-
message:
|
|
152
|
+
message:
|
|
153
|
+
'Yes, run the following commands, I reaaaalllyy want dump to work! (this will not edit original dump.sql)'
|
|
129
154
|
},
|
|
130
155
|
{
|
|
131
156
|
name: 'no',
|
|
132
157
|
message: 'Okay, I got it. Will try to fix myself'
|
|
133
158
|
}
|
|
134
159
|
]
|
|
135
|
-
})
|
|
160
|
+
})
|
|
136
161
|
|
|
137
162
|
if (confirmFixingCollation === 'yes') {
|
|
138
|
-
task.output = 'Running fix command...'
|
|
139
|
-
await execAsyncSpawn(
|
|
163
|
+
task.output = 'Running fix command...'
|
|
164
|
+
await execAsyncSpawn(
|
|
165
|
+
`docker exec ${mariadb.name} bash -c "sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' dump.sql"`
|
|
166
|
+
)
|
|
140
167
|
|
|
141
|
-
task.output = 'Trying to import dump again...'
|
|
168
|
+
task.output = 'Trying to import dump again...'
|
|
142
169
|
try {
|
|
143
|
-
await execAsyncSpawn(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
callback: (t) => {
|
|
147
|
-
task.output = t;
|
|
148
|
-
}
|
|
170
|
+
await execAsyncSpawn(importCommand, {
|
|
171
|
+
callback: (t) => {
|
|
172
|
+
task.output = t
|
|
149
173
|
}
|
|
150
|
-
)
|
|
174
|
+
})
|
|
151
175
|
|
|
152
|
-
return
|
|
176
|
+
return
|
|
153
177
|
} catch (e) {
|
|
154
|
-
throw new KnownError(`Fixing ${logger.style.file(
|
|
155
|
-
|
|
178
|
+
throw new KnownError(`Fixing ${logger.style.file(
|
|
179
|
+
'dump.sql'
|
|
180
|
+
)} collations did not helped, we got the following error:
|
|
181
|
+
${e.message}`)
|
|
156
182
|
}
|
|
157
183
|
} else {
|
|
158
184
|
throw new KnownError(`Database dump import unsuccessful!
|
|
159
185
|
|
|
160
186
|
${e.message}
|
|
161
187
|
|
|
162
|
-
You can try replacing all occurrences of ${logger.style.misc(
|
|
188
|
+
You can try replacing all occurrences of ${logger.style.misc(
|
|
189
|
+
'utf8mb4_0900_ai_ci'
|
|
190
|
+
)} with ${logger.style.misc(
|
|
191
|
+
'utf8mb4_general_ci'
|
|
192
|
+
)} in your ${logger.style.file(ctx.importDb)} file!`)
|
|
163
193
|
}
|
|
164
194
|
}
|
|
165
195
|
|
|
166
|
-
throw new UnknownError(
|
|
196
|
+
throw new UnknownError(
|
|
197
|
+
`Unexpected error during dump import.\n\n${e}`
|
|
198
|
+
)
|
|
167
199
|
} finally {
|
|
168
|
-
clearInterval(tickInterval)
|
|
200
|
+
clearInterval(tickInterval)
|
|
169
201
|
}
|
|
170
202
|
},
|
|
171
203
|
options: {
|
|
172
204
|
bottomBar: 10
|
|
173
205
|
}
|
|
174
|
-
})
|
|
206
|
+
})
|
|
175
207
|
|
|
176
208
|
/**
|
|
177
|
-
* @
|
|
209
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
178
210
|
*/
|
|
179
211
|
const importDumpToDatabase = () => ({
|
|
180
212
|
title: 'Importing Database Dump',
|
|
181
213
|
task: async (ctx, task) => {
|
|
182
|
-
if (!await pathExists(ctx.importDb)) {
|
|
183
|
-
throw new KnownError(
|
|
214
|
+
if (!(await pathExists(ctx.importDb))) {
|
|
215
|
+
throw new KnownError(
|
|
216
|
+
`Dump file at ${ctx.importDb} does not exist. Please provide correct relative path to the file`
|
|
217
|
+
)
|
|
184
218
|
}
|
|
185
219
|
|
|
186
|
-
return task.newListr(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
220
|
+
return task.newListr(
|
|
221
|
+
[
|
|
222
|
+
copyDatabaseDumpIntoContainer(),
|
|
223
|
+
deleteDatabaseBeforeImportingDumpPrompt(),
|
|
224
|
+
runSetGlobalLogBinTrustFunctionCreatorsCommand(),
|
|
225
|
+
executeImportDumpSQL(),
|
|
226
|
+
connectToDatabase(),
|
|
227
|
+
{
|
|
228
|
+
task: () => {
|
|
229
|
+
task.title = 'Database imported!'
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
],
|
|
192
233
|
{
|
|
193
|
-
|
|
194
|
-
|
|
234
|
+
rendererOptions: {
|
|
235
|
+
collapse: false
|
|
195
236
|
}
|
|
196
237
|
}
|
|
197
|
-
|
|
198
|
-
rendererOptions: {
|
|
199
|
-
collapse: false
|
|
200
|
-
}
|
|
201
|
-
});
|
|
238
|
+
)
|
|
202
239
|
}
|
|
203
|
-
})
|
|
240
|
+
})
|
|
204
241
|
|
|
205
|
-
module.exports = importDumpToDatabase
|
|
242
|
+
module.exports = importDumpToDatabase
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const UnknownError = require('../../../errors/unknown-error')
|
|
2
|
-
const sshDb = require('./ssh')
|
|
1
|
+
const UnknownError = require('../../../errors/unknown-error')
|
|
2
|
+
const sshDb = require('./ssh')
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* @
|
|
5
|
+
* @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
|
|
6
6
|
*/
|
|
7
7
|
const importRemoteDbSSH = () => ({
|
|
8
8
|
skip: (ctx) => typeof ctx.remoteDb === 'undefined',
|
|
9
9
|
task: async (ctx, task) => {
|
|
10
|
-
task.title = 'Importing database from remote server'
|
|
10
|
+
task.title = 'Importing database from remote server'
|
|
11
11
|
|
|
12
12
|
if (!ctx.remoteDb) {
|
|
13
13
|
ctx.remoteDb = await task.prompt({
|
|
@@ -15,26 +15,24 @@ const importRemoteDbSSH = () => ({
|
|
|
15
15
|
message: `Please enter a remote server connection string.
|
|
16
16
|
It can be a SSH (ssh://<url>) connection or mysql (mysql://<url>) connection.
|
|
17
17
|
`
|
|
18
|
-
})
|
|
18
|
+
})
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const url = new URL(ctx.remoteDb)
|
|
21
|
+
const url = new URL(ctx.remoteDb)
|
|
22
22
|
|
|
23
|
-
ctx.remoteDbUrl = url
|
|
23
|
+
ctx.remoteDbUrl = url
|
|
24
24
|
|
|
25
|
-
const { protocol } = url
|
|
25
|
+
const { protocol } = url
|
|
26
26
|
|
|
27
27
|
switch (protocol) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
throw new UnknownError(`Unsupported protocol ${protocol}`);
|
|
35
|
-
}
|
|
28
|
+
case 'ssh:': {
|
|
29
|
+
return task.newListr(sshDb())
|
|
30
|
+
}
|
|
31
|
+
default: {
|
|
32
|
+
throw new UnknownError(`Unsupported protocol ${protocol}`)
|
|
33
|
+
}
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
|
-
})
|
|
36
|
+
})
|
|
39
37
|
|
|
40
|
-
module.exports = importRemoteDbSSH
|
|
38
|
+
module.exports = importRemoteDbSSH
|
|
@@ -1,67 +1,70 @@
|
|
|
1
|
-
const os = require('os')
|
|
2
|
-
const { NodeSSH } = require('node-ssh')
|
|
3
|
-
const pathExists = require('../../../../util/path-exists')
|
|
4
|
-
const regularSSHServer = require('./regular-server')
|
|
5
|
-
const readymageSSH = require('./readymage')
|
|
6
|
-
const KnownError = require('../../../../errors/known-error')
|
|
1
|
+
const os = require('os')
|
|
2
|
+
const { NodeSSH } = require('node-ssh')
|
|
3
|
+
const pathExists = require('../../../../util/path-exists')
|
|
4
|
+
const regularSSHServer = require('./regular-server')
|
|
5
|
+
const readymageSSH = require('./readymage')
|
|
6
|
+
const KnownError = require('../../../../errors/known-error')
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* @
|
|
9
|
+
* @returns {import('listr2').ListrTask<import('../../../../../typings/context').ListrContext>}
|
|
10
10
|
*/
|
|
11
11
|
const sshDb = () => ({
|
|
12
12
|
task: async (ctx, task) => {
|
|
13
|
-
const { remoteDbUrl, withCustomersData, noCompress } = ctx
|
|
14
|
-
const { hostname, username, password } = remoteDbUrl
|
|
13
|
+
const { remoteDbUrl, withCustomersData, noCompress } = ctx
|
|
14
|
+
const { hostname, username, password } = remoteDbUrl
|
|
15
15
|
|
|
16
|
-
task.title = `Importing database from remote ssh server ${hostname}
|
|
16
|
+
task.title = `Importing database from remote ssh server ${hostname}`
|
|
17
17
|
|
|
18
|
-
const ssh = new NodeSSH()
|
|
19
|
-
ctx.ssh = ssh
|
|
18
|
+
const ssh = new NodeSSH()
|
|
19
|
+
ctx.ssh = ssh
|
|
20
20
|
|
|
21
21
|
if (!password) {
|
|
22
22
|
const privateKey = await task.prompt({
|
|
23
23
|
type: 'Input',
|
|
24
24
|
message: `Please enter your private key location to connect to ${hostname}\n`,
|
|
25
25
|
initial: `${os.homedir()}/.ssh/id_rsa`
|
|
26
|
-
})
|
|
26
|
+
})
|
|
27
27
|
|
|
28
28
|
if (!(await pathExists(privateKey))) {
|
|
29
|
-
throw new KnownError(`Private key not found: ${privateKey}`)
|
|
29
|
+
throw new KnownError(`Private key not found: ${privateKey}`)
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
ctx.privateKey = privateKey
|
|
32
|
+
ctx.privateKey = privateKey
|
|
33
33
|
|
|
34
34
|
const passphrase = await task.prompt({
|
|
35
35
|
type: 'Input',
|
|
36
|
-
message:
|
|
37
|
-
|
|
36
|
+
message:
|
|
37
|
+
'Please enter your private key passphrase (if you have it)'
|
|
38
|
+
})
|
|
38
39
|
|
|
39
|
-
ctx.passphrase = passphrase || undefined
|
|
40
|
+
ctx.passphrase = passphrase || undefined
|
|
40
41
|
|
|
41
42
|
await ssh.connect({
|
|
42
43
|
host: hostname,
|
|
43
44
|
username,
|
|
44
45
|
privateKey,
|
|
45
46
|
passphrase
|
|
46
|
-
})
|
|
47
|
+
})
|
|
47
48
|
} else {
|
|
48
49
|
await ssh.connect({
|
|
49
50
|
host: hostname,
|
|
50
51
|
username,
|
|
51
52
|
password
|
|
52
|
-
})
|
|
53
|
+
})
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
ctx.importDb = './dump.sql'
|
|
56
|
+
ctx.importDb = './dump.sql'
|
|
56
57
|
|
|
57
|
-
const { stdout: remoteFilesOutput } = await ssh.execCommand('ls')
|
|
58
|
+
const { stdout: remoteFilesOutput } = await ssh.execCommand('ls')
|
|
58
59
|
|
|
59
|
-
const dumpFileNames = !withCustomersData
|
|
60
|
+
const dumpFileNames = !withCustomersData
|
|
61
|
+
? ['dump-0.sql', 'dump-1.sql']
|
|
62
|
+
: ['dump.sql']
|
|
60
63
|
|
|
61
64
|
if (!noCompress) {
|
|
62
|
-
dumpFileNames.push('dump.sql.gz')
|
|
65
|
+
dumpFileNames.push('dump.sql.gz')
|
|
63
66
|
}
|
|
64
|
-
const remoteFiles = remoteFilesOutput.split('\n')
|
|
67
|
+
const remoteFiles = remoteFilesOutput.split('\n')
|
|
65
68
|
|
|
66
69
|
if (dumpFileNames.every((dumpFile) => remoteFiles.includes(dumpFile))) {
|
|
67
70
|
ctx.makeRemoteDumps = await task.prompt({
|
|
@@ -71,24 +74,20 @@ const sshDb = () => ({
|
|
|
71
74
|
message: `We found dump files on remote server.
|
|
72
75
|
Do you want to replace them with new dump files or use existing ones?
|
|
73
76
|
`
|
|
74
|
-
})
|
|
77
|
+
})
|
|
75
78
|
} else {
|
|
76
|
-
ctx.makeRemoteDumps = true
|
|
79
|
+
ctx.makeRemoteDumps = true
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
if (hostname.endsWith('readymage.com')) {
|
|
80
|
-
return task.newListr(
|
|
81
|
-
readymageSSH()
|
|
82
|
-
);
|
|
83
|
+
return task.newListr(readymageSSH())
|
|
83
84
|
}
|
|
84
85
|
|
|
85
|
-
return task.newListr(
|
|
86
|
-
regularSSHServer()
|
|
87
|
-
);
|
|
86
|
+
return task.newListr(regularSSHServer())
|
|
88
87
|
},
|
|
89
88
|
options: {
|
|
90
89
|
bottomBar: 10
|
|
91
90
|
}
|
|
92
|
-
})
|
|
91
|
+
})
|
|
93
92
|
|
|
94
|
-
module.exports = sshDb
|
|
93
|
+
module.exports = sshDb
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const mergeFiles = require('merge-files')
|
|
2
|
-
const { orderTables, customerTables } = require('../../magento-tables')
|
|
3
|
-
const { execAsyncSpawn } = require('../../../../util/exec-async-command')
|
|
4
|
-
const databaseDumpCommandWithOptions = require('./database-dump-command')
|
|
1
|
+
const mergeFiles = require('merge-files')
|
|
2
|
+
const { orderTables, customerTables } = require('../../magento-tables')
|
|
3
|
+
const { execAsyncSpawn } = require('../../../../util/exec-async-command')
|
|
4
|
+
const databaseDumpCommandWithOptions = require('./database-dump-command')
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @
|
|
7
|
+
* @returns {import('listr2').ListrTask<import('../../../../../typings/context').ListrContext & { ssh: import('node-ssh').NodeSSH }>}
|
|
8
8
|
*/
|
|
9
9
|
const readymageSSH = () => ({
|
|
10
10
|
task: async (ctx, task) => {
|
|
@@ -14,11 +14,12 @@ const readymageSSH = () => ({
|
|
|
14
14
|
makeRemoteDumps,
|
|
15
15
|
withCustomersData,
|
|
16
16
|
noCompress
|
|
17
|
-
} = ctx
|
|
18
|
-
const sshConnectString = remoteDbUrl.href.replace(/ssh:\/\//i, '')
|
|
17
|
+
} = ctx
|
|
18
|
+
const sshConnectString = remoteDbUrl.href.replace(/ssh:\/\//i, '')
|
|
19
19
|
if (makeRemoteDumps) {
|
|
20
20
|
if (!withCustomersData) {
|
|
21
|
-
task.output =
|
|
21
|
+
task.output =
|
|
22
|
+
'Making remote database dump files without customers data...'
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* create dump without customers and orders
|
|
@@ -26,10 +27,12 @@ const readymageSSH = () => ({
|
|
|
26
27
|
await ssh.execCommand(
|
|
27
28
|
[
|
|
28
29
|
...databaseDumpCommandWithOptions,
|
|
29
|
-
...[...orderTables, ...customerTables].map(
|
|
30
|
+
...[...orderTables, ...customerTables].map(
|
|
31
|
+
(table) => `--ignore-table=magento.${table}`
|
|
32
|
+
),
|
|
30
33
|
'--result-file=dump-0.sql'
|
|
31
34
|
].join(' ')
|
|
32
|
-
)
|
|
35
|
+
)
|
|
33
36
|
|
|
34
37
|
await ssh.execCommand(
|
|
35
38
|
[
|
|
@@ -38,71 +41,71 @@ const readymageSSH = () => ({
|
|
|
38
41
|
'--result-file=dump-1.sql',
|
|
39
42
|
...[...orderTables, ...customerTables]
|
|
40
43
|
].join(' ')
|
|
41
|
-
)
|
|
44
|
+
)
|
|
42
45
|
} else {
|
|
43
|
-
task.output =
|
|
44
|
-
|
|
46
|
+
task.output =
|
|
47
|
+
'Making remote database dump file with customers data...'
|
|
48
|
+
await ssh.execCommand(
|
|
49
|
+
[
|
|
50
|
+
...databaseDumpCommandWithOptions,
|
|
51
|
+
'--result-file=dump.sql'
|
|
52
|
+
].join(' ')
|
|
53
|
+
)
|
|
45
54
|
}
|
|
46
55
|
|
|
47
56
|
if (!noCompress) {
|
|
48
|
-
task.output = 'Compressing dump files...'
|
|
57
|
+
task.output = 'Compressing dump files...'
|
|
49
58
|
if (!withCustomersData) {
|
|
50
59
|
await ssh.execCommand(
|
|
51
60
|
'tar -czvf dump.sql.gz ./dump-0.sql ./dump-1.sql'
|
|
52
|
-
)
|
|
61
|
+
)
|
|
53
62
|
} else {
|
|
54
|
-
await ssh.execCommand(
|
|
55
|
-
'tar -czvf dump.sql.gz ./dump.sql'
|
|
56
|
-
);
|
|
63
|
+
await ssh.execCommand('tar -czvf dump.sql.gz ./dump.sql')
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
67
|
|
|
61
|
-
const { stdout: remotePwd } = await ssh.execCommand('pwd')
|
|
68
|
+
const { stdout: remotePwd } = await ssh.execCommand('pwd')
|
|
62
69
|
|
|
63
|
-
ssh.dispose()
|
|
70
|
+
ssh.dispose()
|
|
64
71
|
|
|
65
72
|
if (!withCustomersData) {
|
|
66
|
-
task.output = 'Downloading dump files...'
|
|
73
|
+
task.output = 'Downloading dump files...'
|
|
67
74
|
if (noCompress) {
|
|
68
75
|
await execAsyncSpawn(
|
|
69
76
|
`scp ${sshConnectString}:${remotePwd}/dump-0.sql .`
|
|
70
|
-
)
|
|
77
|
+
)
|
|
71
78
|
await execAsyncSpawn(
|
|
72
79
|
`scp ${sshConnectString}:${remotePwd}/dump-1.sql .`
|
|
73
|
-
)
|
|
80
|
+
)
|
|
74
81
|
} else {
|
|
75
82
|
await execAsyncSpawn(
|
|
76
83
|
`scp ${sshConnectString}:${remotePwd}/dump.sql.gz .`
|
|
77
|
-
)
|
|
84
|
+
)
|
|
78
85
|
|
|
79
|
-
task.output = 'Extracting dump files...'
|
|
86
|
+
task.output = 'Extracting dump files...'
|
|
80
87
|
|
|
81
|
-
await execAsyncSpawn(
|
|
82
|
-
'tar -xf ./dump.sql.gz'
|
|
83
|
-
);
|
|
88
|
+
await execAsyncSpawn('tar -xf ./dump.sql.gz')
|
|
84
89
|
}
|
|
85
90
|
|
|
86
|
-
await mergeFiles(['./dump-0.sql', './dump-1.sql'], './dump.sql')
|
|
91
|
+
await mergeFiles(['./dump-0.sql', './dump-1.sql'], './dump.sql')
|
|
87
92
|
} else {
|
|
88
|
-
task.output = 'Downloading dump file...'
|
|
93
|
+
task.output = 'Downloading dump file...'
|
|
89
94
|
if (noCompress) {
|
|
90
95
|
await execAsyncSpawn(
|
|
91
96
|
`scp ${sshConnectString}:${remotePwd}/dump.sql .`
|
|
92
|
-
)
|
|
97
|
+
)
|
|
93
98
|
} else {
|
|
94
99
|
await execAsyncSpawn(
|
|
95
100
|
`scp ${sshConnectString}:${remotePwd}/dump.sql.gz .`
|
|
96
|
-
)
|
|
101
|
+
)
|
|
97
102
|
|
|
98
|
-
task.output = 'Extracting dump file...'
|
|
103
|
+
task.output = 'Extracting dump file...'
|
|
99
104
|
|
|
100
|
-
await execAsyncSpawn(
|
|
101
|
-
'tar -xf ./dump.sql.gz'
|
|
102
|
-
);
|
|
105
|
+
await execAsyncSpawn('tar -xf ./dump.sql.gz')
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
}
|
|
106
|
-
})
|
|
109
|
+
})
|
|
107
110
|
|
|
108
|
-
module.exports = readymageSSH
|
|
111
|
+
module.exports = readymageSSH
|