@automattic/vip 4.1.6 → 4.1.8
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/assets/dev-env.lando.template.yml.ejs +1 -1
- package/dist/bin/vip-app-deploy-token-generate.js +110 -78
- package/dist/bin/vip-app-deploy-token.js +24 -16
- package/dist/bin/vip-app-deploy-validate.js +45 -41
- package/dist/bin/vip-app-deploy.js +222 -215
- package/dist/bin/vip-app-list.js +59 -43
- package/dist/bin/vip-app.js +97 -66
- package/dist/bin/vip-backup-db.js +36 -29
- package/dist/bin/vip-backup.js +16 -9
- package/dist/bin/vip-cache-purge-url.js +93 -55
- package/dist/bin/vip-cache.js +23 -14
- package/dist/bin/vip-config-envvar-delete.js +74 -73
- package/dist/bin/vip-config-envvar-get-all.js +68 -68
- package/dist/bin/vip-config-envvar-get.js +46 -46
- package/dist/bin/vip-config-envvar-list.js +54 -57
- package/dist/bin/vip-config-envvar-set.js +102 -96
- package/dist/bin/vip-config-envvar.js +38 -24
- package/dist/bin/vip-config-software-get.js +88 -75
- package/dist/bin/vip-config-software-update.js +116 -120
- package/dist/bin/vip-config-software.js +31 -21
- package/dist/bin/vip-config.js +25 -17
- package/dist/bin/vip-db-phpmyadmin.js +40 -39
- package/dist/bin/vip-db.js +13 -12
- package/dist/bin/vip-defensive-mode-configure.js +197 -197
- package/dist/bin/vip-defensive-mode-disable.js +43 -35
- package/dist/bin/vip-defensive-mode-enable.js +47 -38
- package/dist/bin/vip-defensive-mode.js +28 -17
- package/dist/bin/vip-dev-env-create.js +147 -104
- package/dist/bin/vip-dev-env-destroy.js +48 -39
- package/dist/bin/vip-dev-env-envvar-delete.js +60 -49
- package/dist/bin/vip-dev-env-envvar-get-all.js +52 -45
- package/dist/bin/vip-dev-env-envvar-get.js +48 -37
- package/dist/bin/vip-dev-env-envvar-list.js +48 -41
- package/dist/bin/vip-dev-env-envvar-set.js +83 -70
- package/dist/bin/vip-dev-env-envvar.js +38 -23
- package/dist/bin/vip-dev-env-exec.js +81 -74
- package/dist/bin/vip-dev-env-import-media.js +34 -26
- package/dist/bin/vip-dev-env-import-sql.js +65 -51
- package/dist/bin/vip-dev-env-import.js +23 -14
- package/dist/bin/vip-dev-env-info.js +59 -50
- package/dist/bin/vip-dev-env-list.js +34 -31
- package/dist/bin/vip-dev-env-logs.js +59 -49
- package/dist/bin/vip-dev-env-purge.js +71 -63
- package/dist/bin/vip-dev-env-shell.js +82 -71
- package/dist/bin/vip-dev-env-start.js +77 -65
- package/dist/bin/vip-dev-env-stop.js +80 -74
- package/dist/bin/vip-dev-env-sync-sql.js +80 -72
- package/dist/bin/vip-dev-env-sync.js +18 -11
- package/dist/bin/vip-dev-env-update.js +93 -84
- package/dist/bin/vip-dev-env.js +25 -8
- package/dist/bin/vip-edge-workers-build.js +82 -54
- package/dist/bin/vip-edge-workers-delete.js +84 -52
- package/dist/bin/vip-edge-workers-deploy.js +186 -126
- package/dist/bin/vip-edge-workers-disable.js +75 -44
- package/dist/bin/vip-edge-workers-enable.js +86 -54
- package/dist/bin/vip-edge-workers-get.js +108 -88
- package/dist/bin/vip-edge-workers-init.js +83 -53
- package/dist/bin/vip-edge-workers-list.js +89 -54
- package/dist/bin/vip-edge-workers-new.js +98 -69
- package/dist/bin/vip-edge-workers-validate.js +123 -82
- package/dist/bin/vip-edge-workers.js +19 -6
- package/dist/bin/vip-export-sql.js +75 -69
- package/dist/bin/vip-export.js +12 -7
- package/dist/bin/vip-import-media-abort.js +99 -73
- package/dist/bin/vip-import-media-status.js +83 -51
- package/dist/bin/vip-import-media.js +165 -166
- package/dist/bin/vip-import-sql-status.js +75 -45
- package/dist/bin/vip-import-sql.js +536 -596
- package/dist/bin/vip-import-validate-files.js +122 -141
- package/dist/bin/vip-import-validate-sql.js +52 -16
- package/dist/bin/vip-import.js +16 -7
- package/dist/bin/vip-logout.js +17 -13
- package/dist/bin/vip-logs.js +209 -183
- package/dist/bin/vip-search-replace.js +85 -53
- package/dist/bin/vip-slowlogs.js +168 -147
- package/dist/bin/vip-sync.js +163 -133
- package/dist/bin/vip-whoami.js +71 -35
- package/dist/bin/vip-wp.js +506 -549
- package/dist/bin/vip.js +161 -116
- package/dist/commands/backup-db.js +183 -149
- package/dist/commands/dev-env-import-sql.js +162 -117
- package/dist/commands/dev-env-sync-sql.js +372 -330
- package/dist/commands/export-sql.js +441 -425
- package/dist/commands/phpmyadmin.js +232 -212
- package/dist/commands/wp-ssh.js +218 -187
- package/dist/lib/analytics/clients/tracks.js +84 -91
- package/dist/lib/analytics/index.js +27 -27
- package/dist/lib/api/app.js +37 -36
- package/dist/lib/api/cache-purge.js +17 -20
- package/dist/lib/api/constants.js +5 -6
- package/dist/lib/api/edge-workers.js +84 -135
- package/dist/lib/api/error-debug.js +10 -13
- package/dist/lib/api/feature-flags.js +16 -17
- package/dist/lib/api/http.js +47 -48
- package/dist/lib/api/user.js +17 -18
- package/dist/lib/api.js +107 -116
- package/dist/lib/app-logs/app-logs.js +24 -25
- package/dist/lib/app-slowlogs/app-slowlogs.js +23 -24
- package/dist/lib/app-slowlogs/types.js +2 -1
- package/dist/lib/app.js +6 -8
- package/dist/lib/backup-storage-availability/backup-storage-availability.js +119 -119
- package/dist/lib/backup-storage-availability/docker-machine-not-found-error.js +5 -6
- package/dist/lib/cli/apiConfig.js +71 -41
- package/dist/lib/cli/command.js +1120 -873
- package/dist/lib/cli/config.js +29 -29
- package/dist/lib/cli/envAlias.js +35 -50
- package/dist/lib/cli/exit.js +19 -19
- package/dist/lib/cli/format.js +172 -172
- package/dist/lib/cli/progress.js +193 -236
- package/dist/lib/cli/prompt.js +14 -15
- package/dist/lib/cli/runtime-mode.js +5 -6
- package/dist/lib/client-file-uploader.js +489 -641
- package/dist/lib/config/software.js +206 -212
- package/dist/lib/constants/dev-environment.js +40 -37
- package/dist/lib/constants/file-size.js +6 -7
- package/dist/lib/constants/vipgo.js +24 -12
- package/dist/lib/custom-deploy/custom-deploy.js +138 -120
- package/dist/lib/database.js +88 -85
- package/dist/lib/defensive-mode/api.js +41 -46
- package/dist/lib/defensive-mode/cli-helpers.js +40 -40
- package/dist/lib/dev-environment/dev-environment-cli.js +776 -735
- package/dist/lib/dev-environment/dev-environment-configuration-file.js +224 -191
- package/dist/lib/dev-environment/dev-environment-core.js +697 -732
- package/dist/lib/dev-environment/dev-environment-database.js +57 -41
- package/dist/lib/dev-environment/dev-environment-lando.js +734 -666
- package/dist/lib/dev-environment/docker-utils.js +96 -90
- package/dist/lib/dev-environment/env-vars.js +61 -59
- package/dist/lib/dev-environment/lando-loader.js +6 -7
- package/dist/lib/dev-environment/types.js +2 -1
- package/dist/lib/edge-workers/confirmation.js +42 -36
- package/dist/lib/edge-workers/deployment.js +150 -159
- package/dist/lib/edge-workers/index.js +68 -85
- package/dist/lib/edge-workers/location.js +26 -26
- package/dist/lib/edge-workers/output.js +14 -15
- package/dist/lib/edge-workers/project.js +123 -132
- package/dist/lib/edge-workers/toolchains/assemblyscript/constants.js +6 -8
- package/dist/lib/edge-workers/toolchains/assemblyscript/index.js +100 -101
- package/dist/lib/edge-workers/toolchains/assemblyscript/templates.js +31 -33
- package/dist/lib/edge-workers/toolchains/index.js +15 -15
- package/dist/lib/edge-workers/types.js +10 -38
- package/dist/lib/edge-workers/validation.js +161 -150
- package/dist/lib/env.js +16 -17
- package/dist/lib/envvar/api-delete.js +16 -18
- package/dist/lib/envvar/api-get-all.js +15 -19
- package/dist/lib/envvar/api-get.js +8 -9
- package/dist/lib/envvar/api-list.js +16 -21
- package/dist/lib/envvar/api-set.js +20 -19
- package/dist/lib/envvar/api.js +34 -29
- package/dist/lib/envvar/input.js +29 -34
- package/dist/lib/envvar/logging.js +9 -11
- package/dist/lib/envvar/read-file.js +6 -7
- package/dist/lib/http/download-file.js +76 -44
- package/dist/lib/http/proxy-agent.js +37 -40
- package/dist/lib/http/proxy-dispatcher.js +69 -71
- package/dist/lib/keychain/insecure.js +40 -36
- package/dist/lib/keychain/keychain.js +2 -1
- package/dist/lib/keychain/secure.js +16 -15
- package/dist/lib/keychain.js +22 -22
- package/dist/lib/live-backup-copy.js +117 -115
- package/dist/lib/logout.js +17 -19
- package/dist/lib/media-import/config.js +15 -14
- package/dist/lib/media-import/media-file-import.js +9 -13
- package/dist/lib/media-import/progress.js +53 -65
- package/dist/lib/media-import/status.js +241 -256
- package/dist/lib/media-import/utils.js +15 -15
- package/dist/lib/node-version-check.js +16 -16
- package/dist/lib/promise.js +16 -17
- package/dist/lib/read-file.js +48 -16
- package/dist/lib/rechallenge/client.js +37 -43
- package/dist/lib/rechallenge/errors.js +38 -37
- package/dist/lib/rechallenge/flow.js +148 -123
- package/dist/lib/rechallenge/index.js +23 -24
- package/dist/lib/rechallenge/link.js +153 -151
- package/dist/lib/rechallenge/open-browser.js +14 -17
- package/dist/lib/rechallenge/token-cache.js +83 -86
- package/dist/lib/rechallenge/types.js +5 -14
- package/dist/lib/retry.js +93 -129
- package/dist/lib/search-and-replace.js +164 -148
- package/dist/lib/site-import/db-file-import.js +12 -16
- package/dist/lib/site-import/status.js +291 -291
- package/dist/lib/token.js +86 -87
- package/dist/lib/tracker.js +51 -62
- package/dist/lib/types/graphql/rate-limit-exceeded-error.js +2 -1
- package/dist/lib/types.js +2 -1
- package/dist/lib/user-error.js +6 -8
- package/dist/lib/utils.js +81 -87
- package/dist/lib/validations/custom-deploy.js +218 -186
- package/dist/lib/validations/is-multi-site-sql-dump.js +6 -6
- package/dist/lib/validations/is-multi-site.js +83 -50
- package/dist/lib/validations/is-multisite-domain-mapped.js +92 -62
- package/dist/lib/validations/line-by-line.js +78 -46
- package/dist/lib/validations/site-type.js +59 -63
- package/dist/lib/validations/sql-insert-parser.js +415 -0
- package/dist/lib/validations/sql.js +551 -431
- package/dist/lib/validations/utils.js +27 -29
- package/dist/lib/vip-import-validate-files.js +481 -490
- package/dist/lib/wp/helpers.js +41 -45
- package/dist/lib/wp/readline.js +21 -57
- package/dist/lib/xdg-data.js +11 -12
- package/helpers/mark-cli-executable.js +9 -0
- package/node_modules/@apollo/client/CHANGELOG.md +10 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs +5 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs +2 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs +14 -2
- package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs +16 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.d.cts +2 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs +3 -2
- package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs +9 -1
- package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/core/QueryInfo.d.cts +1 -1
- package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs +10 -3
- package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.d.cts +42 -43
- package/node_modules/@apollo/client/__cjs/version.cjs +1 -1
- package/node_modules/@apollo/client/cache/inmemory/helpers.js +5 -0
- package/node_modules/@apollo/client/cache/inmemory/helpers.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js +2 -1
- package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/key-extractor.js +14 -2
- package/node_modules/@apollo/client/cache/inmemory/key-extractor.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/policies.d.ts +2 -0
- package/node_modules/@apollo/client/cache/inmemory/policies.js +17 -1
- package/node_modules/@apollo/client/cache/inmemory/policies.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/writeToStore.js +3 -2
- package/node_modules/@apollo/client/cache/inmemory/writeToStore.js.map +1 -1
- package/node_modules/@apollo/client/core/QueryInfo.d.ts +1 -1
- package/node_modules/@apollo/client/core/QueryInfo.js +10 -2
- package/node_modules/@apollo/client/core/QueryInfo.js.map +1 -1
- package/node_modules/@apollo/client/core/QueryManager.js +10 -3
- package/node_modules/@apollo/client/core/QueryManager.js.map +1 -1
- package/node_modules/@apollo/client/package.json +1 -1
- package/node_modules/@apollo/client/react/hooks/useFragment.d.ts +42 -43
- package/node_modules/@apollo/client/react/hooks/useFragment.js.map +1 -1
- package/node_modules/@apollo/client/react/hooks-compiled/useFragment.d.ts +42 -43
- package/node_modules/@apollo/client/react/hooks-compiled/useFragment.js.map +1 -1
- package/node_modules/@apollo/client/version.js +1 -1
- package/node_modules/@automattic/vip-search-replace/README.md +6 -1
- package/node_modules/@automattic/vip-search-replace/lib/index.js +46 -14
- package/node_modules/@automattic/vip-search-replace/package.json +1 -1
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/zlib.d.ts +752 -0
- package/node_modules/check-disk-space/README.md +92 -32
- package/node_modules/check-disk-space/dist/check-disk-space.d.mts +58 -0
- package/node_modules/check-disk-space/dist/check-disk-space.mjs +170 -190
- package/node_modules/check-disk-space/package.json +43 -71
- package/node_modules/cpu-features/build/Makefile +2 -2
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/filesystem.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_macos_or_iphone.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_windows.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_arm_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_mips_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_ppc_linux.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_freebsd.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_macos.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_windows.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/stack_line_reader.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/string_view.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpufeatures/src/binding.o.d +157 -145
- package/node_modules/cpu-features/build/Release/cpufeatures.node +0 -0
- package/node_modules/cpu-features/build/Release/obj.target/cpufeatures/src/binding.o +0 -0
- package/node_modules/cpu-features/build/Release/obj.target/cpufeatures.node +0 -0
- package/node_modules/cpu-features/build/config.gypi +100 -31
- package/node_modules/cpu-features/build/cpufeatures.target.mk +14 -14
- package/node_modules/cpu-features/build/deps/cpu_features/cpu_features.target.mk +14 -14
- package/node_modules/ssh2/lib/protocol/crypto/build/Makefile +2 -2
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d.raw +136 -0
- package/node_modules/ssh2/lib/protocol/crypto/build/sshcrypto.target.mk +14 -14
- package/node_modules/undici/docs/docs/api/Interceptors.md +15 -2
- package/node_modules/undici/lib/dispatcher/client-h2.js +78 -3
- package/node_modules/undici/lib/dispatcher/pool-base.js +20 -3
- package/node_modules/undici/package.json +3 -3
- package/node_modules/undici/types/api.d.ts +1 -1
- package/node_modules/undici/types/utility.d.ts +4 -4
- package/package.json +44 -13
- package/dist/lib/analytics/clients/client.js +0 -1
- package/dist/lib/analytics/clients/pendo.js +0 -78
- package/helpers/check-version.js +0 -16
- package/node_modules/check-disk-space/dist/check-disk-space.cjs +0 -210
- package/node_modules/check-disk-space/dist/check-disk-space.d.ts +0 -53
- package/node_modules/fetch-retry/.eslintignore +0 -1
- package/node_modules/fetch-retry/.eslintrc.yml +0 -20
- package/node_modules/fetch-retry/.github/workflows/node.js.yml +0 -32
- package/node_modules/fetch-retry/.husky/pre-commit +0 -6
- package/node_modules/fetch-retry/.nycrc.json +0 -24
- package/node_modules/fetch-retry/.travis.yml +0 -3
- package/node_modules/fetch-retry/LICENSE +0 -21
- package/node_modules/fetch-retry/README.md +0 -128
- package/node_modules/fetch-retry/dist/fetch-retry.umd.js +0 -151
- package/node_modules/fetch-retry/index.d.ts +0 -29
- package/node_modules/fetch-retry/index.js +0 -143
- package/node_modules/fetch-retry/package.json +0 -41
- package/node_modules/fetch-retry/rollup.config.js +0 -12
- package/node_modules/fetch-retry/test/.eslintrc.yml +0 -7
- package/node_modules/fetch-retry/test/integration/index.js +0 -212
- package/node_modules/fetch-retry/test/integration/mock-api/index.js +0 -42
- package/node_modules/fetch-retry/test/unit/index.js +0 -1169
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d +0 -265
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto.node.d +0 -1
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/sshcrypto.node.d +0 -1
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto/src/binding.o +0 -0
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto.node +0 -0
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node +0 -0
package/dist/bin/vip-logs.js
CHANGED
|
@@ -1,21 +1,54 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
40
|
exports.appQuery = void 0;
|
|
6
|
-
exports.followLogs = followLogs;
|
|
7
41
|
exports.getLogs = getLogs;
|
|
42
|
+
exports.followLogs = followLogs;
|
|
8
43
|
exports.validateInputs = validateInputs;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
44
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
46
|
+
const promises_1 = require("timers/promises");
|
|
47
|
+
const logsLib = __importStar(require("../lib/app-logs/app-logs"));
|
|
48
|
+
const command_1 = __importDefault(require("../lib/cli/command"));
|
|
49
|
+
const exit = __importStar(require("../lib/cli/exit"));
|
|
50
|
+
const format_1 = require("../lib/cli/format");
|
|
51
|
+
const tracker_1 = require("../lib/tracker");
|
|
19
52
|
const LIMIT_MIN = 1;
|
|
20
53
|
const LIMIT_MAX = 5000;
|
|
21
54
|
const LIMIT_DEFAULT = 500;
|
|
@@ -24,180 +57,163 @@ const ALLOWED_FORMATS = ['csv', 'json', 'table', 'text'];
|
|
|
24
57
|
const DEFAULT_POLLING_DELAY_IN_SECONDS = 30;
|
|
25
58
|
const MIN_POLLING_DELAY_IN_SECONDS = 5;
|
|
26
59
|
const MAX_POLLING_DELAY_IN_SECONDS = 300;
|
|
27
|
-
|
|
28
60
|
/**
|
|
29
61
|
* @param {string[]} arg
|
|
30
62
|
*/
|
|
31
63
|
async function getLogs(arg, opt) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
let logs;
|
|
39
|
-
try {
|
|
40
|
-
if (opt.follow) {
|
|
41
|
-
return await followLogs(opt);
|
|
42
|
-
}
|
|
43
|
-
logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, opt.limit);
|
|
44
|
-
} catch (error) {
|
|
45
|
-
await (0, _tracker.trackEvent)('logs_command_error', {
|
|
46
|
-
...trackingParams,
|
|
47
|
-
error: error.message
|
|
48
|
-
});
|
|
49
|
-
return exit.withError(error.message);
|
|
50
|
-
}
|
|
51
|
-
await (0, _tracker.trackEvent)('logs_command_success', {
|
|
52
|
-
...trackingParams,
|
|
53
|
-
total: logs.nodes.length
|
|
54
|
-
});
|
|
55
|
-
if (!logs.nodes.length) {
|
|
56
|
-
console.error('No logs found');
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
printLogs(logs.nodes, opt.format);
|
|
60
|
-
}
|
|
61
|
-
async function followLogs(opt) {
|
|
62
|
-
let after = null;
|
|
63
|
-
let isFirstRequest = true;
|
|
64
|
-
// How many times have we polled?
|
|
65
|
-
let requestNumber = 0;
|
|
66
|
-
const trackingParams = getBaseTrackingParams(opt);
|
|
67
|
-
|
|
68
|
-
// Set an initial default delay
|
|
69
|
-
let delay = DEFAULT_POLLING_DELAY_IN_SECONDS;
|
|
70
|
-
while (true) {
|
|
71
|
-
const limit = isFirstRequest ? opt.limit : LIMIT_MAX;
|
|
72
|
-
requestNumber++;
|
|
73
|
-
trackingParams.request_number = requestNumber;
|
|
74
|
-
trackingParams.request_delay = delay;
|
|
75
|
-
trackingParams.limit = limit;
|
|
64
|
+
opt.type ??= 'app';
|
|
65
|
+
opt.limit ??= LIMIT_DEFAULT;
|
|
66
|
+
opt.format ??= 'table';
|
|
67
|
+
validateInputs(opt.type, opt.limit, opt.format);
|
|
68
|
+
const trackingParams = getBaseTrackingParams(opt);
|
|
69
|
+
await (0, tracker_1.trackEvent)('logs_command_execute', trackingParams);
|
|
76
70
|
let logs;
|
|
77
71
|
try {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
await (0, _tracker.trackEvent)('logs_command_follow_error', {
|
|
72
|
+
if (opt.follow) {
|
|
73
|
+
return await followLogs(opt);
|
|
74
|
+
}
|
|
75
|
+
logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, opt.limit);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
await (0, tracker_1.trackEvent)('logs_command_error', { ...trackingParams, error: error.message });
|
|
79
|
+
return exit.withError(error.message);
|
|
80
|
+
}
|
|
81
|
+
await (0, tracker_1.trackEvent)('logs_command_success', {
|
|
89
82
|
...trackingParams,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
console.error(`${_chalk.default.red('Error:')} Failed to fetch logs.`);
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
// Increase the delay on errors to avoid overloading the server, up to a max of 5 minutes
|
|
99
|
-
delay += DEFAULT_POLLING_DELAY_IN_SECONDS;
|
|
100
|
-
delay = Math.min(delay, MAX_POLLING_DELAY_IN_SECONDS);
|
|
101
|
-
console.error(`${_chalk.default.red('Error:')} Failed to fetch logs. Trying again in ${delay} seconds.`);
|
|
83
|
+
total: logs.nodes.length,
|
|
84
|
+
});
|
|
85
|
+
if (!logs.nodes.length) {
|
|
86
|
+
console.error('No logs found');
|
|
87
|
+
return;
|
|
102
88
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
89
|
+
printLogs(logs.nodes, opt.format);
|
|
90
|
+
}
|
|
91
|
+
async function followLogs(opt) {
|
|
92
|
+
let after = null;
|
|
93
|
+
let isFirstRequest = true;
|
|
94
|
+
// How many times have we polled?
|
|
95
|
+
let requestNumber = 0;
|
|
96
|
+
const trackingParams = getBaseTrackingParams(opt);
|
|
97
|
+
// Set an initial default delay
|
|
98
|
+
let delay = DEFAULT_POLLING_DELAY_IN_SECONDS;
|
|
99
|
+
while (true) {
|
|
100
|
+
const limit = isFirstRequest ? opt.limit : LIMIT_MAX;
|
|
101
|
+
requestNumber++;
|
|
102
|
+
trackingParams.request_number = requestNumber;
|
|
103
|
+
trackingParams.request_delay = delay;
|
|
104
|
+
trackingParams.limit = limit;
|
|
105
|
+
let logs;
|
|
106
|
+
try {
|
|
107
|
+
// eslint-disable-next-line no-await-in-loop
|
|
108
|
+
logs = await logsLib.getRecentLogs(opt.app.id, opt.env.id, opt.type, limit, after);
|
|
109
|
+
// eslint-disable-next-line no-await-in-loop
|
|
110
|
+
await (0, tracker_1.trackEvent)('logs_command_follow_success', {
|
|
111
|
+
...trackingParams,
|
|
112
|
+
total: logs?.nodes.length,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
// eslint-disable-next-line no-await-in-loop
|
|
117
|
+
await (0, tracker_1.trackEvent)('logs_command_follow_error', { ...trackingParams, error: error.message });
|
|
118
|
+
// If the first request fails we don't want to retry (it's probably not recoverable)
|
|
119
|
+
if (isFirstRequest) {
|
|
120
|
+
console.error(`${chalk_1.default.red('Error:')} Failed to fetch logs.`);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
// Increase the delay on errors to avoid overloading the server, up to a max of 5 minutes
|
|
124
|
+
delay += DEFAULT_POLLING_DELAY_IN_SECONDS;
|
|
125
|
+
delay = Math.min(delay, MAX_POLLING_DELAY_IN_SECONDS);
|
|
126
|
+
console.error(`${chalk_1.default.red('Error:')} Failed to fetch logs. Trying again in ${delay} seconds.`);
|
|
127
|
+
}
|
|
128
|
+
if (logs) {
|
|
129
|
+
if (logs?.nodes.length) {
|
|
130
|
+
printLogs(logs.nodes, opt.format);
|
|
131
|
+
}
|
|
132
|
+
after = logs?.nextCursor;
|
|
133
|
+
isFirstRequest = false;
|
|
134
|
+
// Bound server hints before converting to milliseconds: overflowing Node timers run almost immediately.
|
|
135
|
+
delay = Math.min(Math.max(logs?.pollingDelaySeconds || DEFAULT_POLLING_DELAY_IN_SECONDS, MIN_POLLING_DELAY_IN_SECONDS), MAX_POLLING_DELAY_IN_SECONDS);
|
|
136
|
+
}
|
|
137
|
+
// eslint-disable-next-line no-await-in-loop
|
|
138
|
+
await (0, promises_1.setTimeout)(delay * 1000);
|
|
112
139
|
}
|
|
113
|
-
|
|
114
|
-
// eslint-disable-next-line no-await-in-loop
|
|
115
|
-
await (0, _promises.setTimeout)(delay * 1000);
|
|
116
|
-
}
|
|
117
140
|
}
|
|
118
141
|
function getBaseTrackingParams(opt) {
|
|
119
|
-
return {
|
|
120
|
-
command: 'vip logs',
|
|
121
|
-
org_id: opt.app.organization.id,
|
|
122
|
-
org_sfid: opt.app.organization.salesforceId,
|
|
123
|
-
app_id: opt.app.id,
|
|
124
|
-
env_id: opt.env.id,
|
|
125
|
-
type: opt.type,
|
|
126
|
-
limit: opt.limit,
|
|
127
|
-
follow: opt.follow || false,
|
|
128
|
-
format: opt.format
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
function printLogs(logs, format) {
|
|
132
|
-
// Strip out __typename
|
|
133
|
-
logs = logs.map(log => {
|
|
134
|
-
const {
|
|
135
|
-
timestamp,
|
|
136
|
-
message
|
|
137
|
-
} = log;
|
|
138
142
|
return {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
head: ['Timestamp', 'Message'],
|
|
149
|
-
style: {
|
|
150
|
-
head: ['cyan'],
|
|
151
|
-
border: ['grey']
|
|
152
|
-
}
|
|
143
|
+
command: 'vip logs',
|
|
144
|
+
org_id: opt.app.organization.id,
|
|
145
|
+
org_sfid: opt.app.organization.salesforceId,
|
|
146
|
+
app_id: opt.app.id,
|
|
147
|
+
env_id: opt.env.id,
|
|
148
|
+
type: opt.type,
|
|
149
|
+
limit: opt.limit,
|
|
150
|
+
follow: opt.follow || false,
|
|
151
|
+
format: opt.format,
|
|
153
152
|
};
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
153
|
+
}
|
|
154
|
+
function printLogs(logs, format) {
|
|
155
|
+
// Strip out __typename
|
|
156
|
+
logs = logs.map(log => {
|
|
157
|
+
const { timestamp, message } = log;
|
|
158
|
+
return { timestamp, message };
|
|
159
|
+
});
|
|
160
|
+
let output = '';
|
|
161
|
+
if ('table' === format) {
|
|
162
|
+
const options = {
|
|
163
|
+
wordWrap: true,
|
|
164
|
+
wrapOnWordBoundary: true,
|
|
165
|
+
head: ['Timestamp', 'Message'],
|
|
166
|
+
style: {
|
|
167
|
+
head: ['cyan'],
|
|
168
|
+
border: ['grey'],
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
if (process.stdout.isTTY && process.stdout.columns) {
|
|
172
|
+
options.colWidths = [
|
|
173
|
+
'YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ'.length + 2 /* padding */,
|
|
174
|
+
Math.max(process.stdout.columns - '│ │ │'.length - 'YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ'.length, 20),
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
options.style.head = [];
|
|
179
|
+
options.style.border = [];
|
|
180
|
+
}
|
|
181
|
+
const table = new cli_table3_1.default(options);
|
|
182
|
+
for (const { timestamp, message } of logs) {
|
|
183
|
+
const msg = message.trimRight().replace(/\t/g, ' ');
|
|
184
|
+
table.push([timestamp, msg]);
|
|
185
|
+
}
|
|
186
|
+
output = table.toString();
|
|
159
187
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
table.push([timestamp, msg]);
|
|
188
|
+
else if ('text' === format) {
|
|
189
|
+
const rows = [];
|
|
190
|
+
for (const { timestamp, message } of logs) {
|
|
191
|
+
rows.push(`${timestamp} ${message}`);
|
|
192
|
+
output = rows.join('\n');
|
|
193
|
+
}
|
|
167
194
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const rows = [];
|
|
171
|
-
for (const {
|
|
172
|
-
timestamp,
|
|
173
|
-
message
|
|
174
|
-
} of logs) {
|
|
175
|
-
rows.push(`${timestamp} ${message}`);
|
|
176
|
-
output = rows.join('\n');
|
|
195
|
+
else {
|
|
196
|
+
output = (0, format_1.formatData)(logs, format);
|
|
177
197
|
}
|
|
178
|
-
|
|
179
|
-
output = (0, _format.formatData)(logs, format);
|
|
180
|
-
}
|
|
181
|
-
console.log(output);
|
|
198
|
+
console.log(output);
|
|
182
199
|
}
|
|
183
|
-
|
|
184
200
|
/**
|
|
185
201
|
* @param {string} type
|
|
186
202
|
* @param {number} limit
|
|
187
203
|
* @param {string} format
|
|
188
204
|
*/
|
|
189
205
|
function validateInputs(type, limit, format) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
206
|
+
if (!ALLOWED_TYPES.includes(type)) {
|
|
207
|
+
exit.withError(`Invalid type: ${type}. The supported types are: ${ALLOWED_TYPES.join(', ')}.`);
|
|
208
|
+
}
|
|
209
|
+
if (!ALLOWED_FORMATS.includes(format)) {
|
|
210
|
+
exit.withError(`Invalid format: ${format}. The supported formats are: ${ALLOWED_FORMATS.join(', ')}.`);
|
|
211
|
+
}
|
|
212
|
+
if (!Number.isInteger(limit) || limit < LIMIT_MIN || limit > logsLib.LIMIT_MAX) {
|
|
213
|
+
exit.withError(`Invalid limit: ${limit}. Set the limit to an integer between ${LIMIT_MIN} and ${logsLib.LIMIT_MAX}.`);
|
|
214
|
+
}
|
|
199
215
|
}
|
|
200
|
-
|
|
216
|
+
exports.appQuery = `
|
|
201
217
|
id
|
|
202
218
|
name
|
|
203
219
|
environments {
|
|
@@ -211,23 +227,33 @@ const appQuery = exports.appQuery = `
|
|
|
211
227
|
name
|
|
212
228
|
}
|
|
213
229
|
`;
|
|
214
|
-
(0,
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}
|
|
230
|
+
(0, command_1.default)({
|
|
231
|
+
appContext: true,
|
|
232
|
+
appQuery: exports.appQuery,
|
|
233
|
+
envContext: true,
|
|
234
|
+
module: 'logs',
|
|
235
|
+
})
|
|
236
|
+
.option('type', 'Specify the type of Runtime Logs to retrieve. Accepts "batch" (only valid for WordPress environments).', 'app')
|
|
237
|
+
// The default limit is set manually in the validateInputs function to address validation issues, avoiding incorrect replacement of the default value.
|
|
238
|
+
.option('limit', `The maximum number of entries to return. Accepts an integer value between 1 and 5000 (defaults to ${LIMIT_DEFAULT}).`, undefined, Number.parseInt)
|
|
239
|
+
.option('follow', 'Output new entries as they are generated.')
|
|
240
|
+
.option('format', 'Render output in a particular format. Accepts “table“ (default), “csv“, “json“, and “text”.')
|
|
241
|
+
.examples([
|
|
242
|
+
{
|
|
243
|
+
usage: 'vip @example-app.production logs',
|
|
244
|
+
description: 'Retrieve up to 500 of the most recent entries of application Runtime Logs from web containers.',
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
usage: 'vip @example-app.production logs --type=batch',
|
|
248
|
+
description: 'Retrieve up to 500 of the most recent entries generated by cron tasks or WP-CLI commands from batch containers.',
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
usage: 'vip @example-app.production logs --limit=100',
|
|
252
|
+
description: 'Retrieve up to 100 of the most recent entries of application logs.',
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
usage: 'vip @example-app.production logs --type=batch --limit=800 --format=csv',
|
|
256
|
+
description: 'Retrieve up to 800 of the most recent entries of batch logs and output them in CSV format.',
|
|
257
|
+
},
|
|
258
|
+
])
|
|
259
|
+
.argv(process.argv, getLogs);
|
|
@@ -1,57 +1,89 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
const debug_1 = __importDefault(require("debug"));
|
|
41
|
+
const command_1 = __importDefault(require("../lib/cli/command"));
|
|
42
|
+
const exit = __importStar(require("../lib/cli/exit"));
|
|
43
|
+
const search_and_replace_1 = require("../lib/search-and-replace");
|
|
44
|
+
const debug = (0, debug_1.default)('@automattic/vip:bin:vip-search-replace');
|
|
12
45
|
// Command examples
|
|
13
46
|
const examples = [
|
|
14
|
-
// `search-replace` flag
|
|
15
|
-
{
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
output
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
output
|
|
56
|
-
|
|
57
|
-
});
|
|
47
|
+
// `search-replace` flag
|
|
48
|
+
{
|
|
49
|
+
usage: 'vip search-replace file.sql --search-replace="from,to"',
|
|
50
|
+
description: 'Search for every instance of the value "from" in the local input file named "file.sql" and replace it with the value "to".\n' +
|
|
51
|
+
' * Results of the operation output to STDOUT by default.',
|
|
52
|
+
},
|
|
53
|
+
// multiple operations
|
|
54
|
+
{
|
|
55
|
+
usage: 'vip search-replace file.sql --search-replace="from,to" --search-replace="before,after"',
|
|
56
|
+
description: 'Perform a search and replace operation for more than one pair of values in the local input file named "file.sql".',
|
|
57
|
+
},
|
|
58
|
+
// `in-place` flag
|
|
59
|
+
{
|
|
60
|
+
usage: 'vip search-replace file.sql --search-replace="from,to" --in-place',
|
|
61
|
+
description: 'Perform the search and replace operation on the local input file "file.sql" and overwrite the file with the results.',
|
|
62
|
+
},
|
|
63
|
+
// `output` flag
|
|
64
|
+
{
|
|
65
|
+
usage: 'vip search-replace file.sql --search-replace="from,to" --output=output-file.sql',
|
|
66
|
+
description: 'Perform the search and replace operation and save the results to a local clone of the input file named "output-file.sql".',
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
(0, command_1.default)({
|
|
70
|
+
requiredArgs: 1,
|
|
71
|
+
})
|
|
72
|
+
.option('search-replace', 'A comma-separated pair of strings that specify the values to search for and replace (e.g. --search-replace="from,to").')
|
|
73
|
+
.option('in-place', 'Overwrite the local input file with the results of the search and replace operation.')
|
|
74
|
+
.option('output', 'The local file path used to save a copy of the results from the search and replace operation. Ignored when used with the --in-place option.')
|
|
75
|
+
.examples(examples)
|
|
76
|
+
.argv(process.argv, async (arg, opt) => {
|
|
77
|
+
// TODO: tracks event for usage of this command stand alone
|
|
78
|
+
const { searchReplace, inPlace, output } = opt;
|
|
79
|
+
debug('Args: ', arg, 'searchReplace: ', searchReplace);
|
|
80
|
+
const filename = arg[0];
|
|
81
|
+
if (!arg && !filename) {
|
|
82
|
+
exit.withError('You must pass in a filename');
|
|
83
|
+
}
|
|
84
|
+
if (!searchReplace || !searchReplace.length) {
|
|
85
|
+
exit.withError('You must provide a pair of strings (separated by comma) such as original,replacement');
|
|
86
|
+
}
|
|
87
|
+
const isImport = false;
|
|
88
|
+
await (0, search_and_replace_1.searchAndReplace)(filename, searchReplace, { isImport, inPlace, output });
|
|
89
|
+
});
|