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