heroku 11.0.0-alpha.11 → 11.0.0-alpha.13
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/README.md +17 -2
- package/lib/commands/access/add.d.ts +5 -5
- package/lib/commands/access/add.js +13 -13
- package/lib/commands/access/index.d.ts +2 -2
- package/lib/commands/access/index.js +7 -8
- package/lib/commands/access/remove.d.ts +1 -1
- package/lib/commands/access/remove.js +5 -5
- package/lib/commands/access/update.d.ts +5 -5
- package/lib/commands/access/update.js +9 -9
- package/lib/commands/accounts/add.d.ts +1 -1
- package/lib/commands/accounts/add.js +3 -2
- package/lib/commands/accounts/current.js +4 -5
- package/lib/commands/accounts/index.js +2 -1
- package/lib/commands/accounts/remove.d.ts +1 -1
- package/lib/commands/accounts/remove.js +3 -2
- package/lib/commands/accounts/set.d.ts +1 -1
- package/lib/commands/accounts/set.js +3 -2
- package/lib/commands/addons/attach.d.ts +6 -6
- package/lib/commands/addons/attach.js +14 -14
- package/lib/commands/addons/create.d.ts +9 -10
- package/lib/commands/addons/create.js +31 -29
- package/lib/commands/addons/destroy.d.ts +9 -9
- package/lib/commands/addons/destroy.js +19 -19
- package/lib/commands/addons/detach.d.ts +4 -4
- package/lib/commands/addons/detach.js +9 -9
- package/lib/commands/addons/docs.d.ts +5 -5
- package/lib/commands/addons/docs.js +9 -9
- package/lib/commands/addons/index.d.ts +5 -5
- package/lib/commands/addons/index.js +32 -30
- package/lib/commands/addons/info.d.ts +4 -4
- package/lib/commands/addons/info.js +18 -14
- package/lib/commands/addons/open.d.ts +26 -27
- package/lib/commands/addons/open.js +21 -24
- package/lib/commands/addons/rename.d.ts +2 -2
- package/lib/commands/addons/rename.js +6 -6
- package/lib/commands/addons/services.d.ts +1 -1
- package/lib/commands/addons/services.js +5 -4
- package/lib/commands/addons/upgrade.d.ts +10 -11
- package/lib/commands/addons/upgrade.js +74 -70
- package/lib/commands/addons/wait.d.ts +5 -5
- package/lib/commands/addons/wait.js +10 -10
- package/lib/commands/apps/create.d.ts +12 -12
- package/lib/commands/apps/create.js +50 -58
- package/lib/commands/apps/destroy.d.ts +6 -6
- package/lib/commands/apps/destroy.js +10 -10
- package/lib/commands/apps/errors.d.ts +3 -3
- package/lib/commands/apps/errors.js +24 -12
- package/lib/commands/apps/favorites/add.d.ts +1 -1
- package/lib/commands/apps/favorites/add.js +4 -4
- package/lib/commands/apps/favorites/index.d.ts +1 -1
- package/lib/commands/apps/favorites/index.js +4 -4
- package/lib/commands/apps/favorites/remove.d.ts +1 -1
- package/lib/commands/apps/favorites/remove.js +3 -3
- package/lib/commands/apps/index.d.ts +4 -4
- package/lib/commands/apps/index.js +21 -21
- package/lib/commands/apps/info.d.ts +8 -8
- package/lib/commands/apps/info.js +31 -31
- package/lib/commands/apps/join.d.ts +2 -2
- package/lib/commands/apps/join.js +3 -3
- package/lib/commands/apps/leave.d.ts +1 -1
- package/lib/commands/apps/leave.js +3 -3
- package/lib/commands/apps/lock.d.ts +2 -2
- package/lib/commands/apps/lock.js +5 -5
- package/lib/commands/apps/open.d.ts +5 -5
- package/lib/commands/apps/open.js +11 -9
- package/lib/commands/apps/rename.d.ts +6 -6
- package/lib/commands/apps/rename.js +13 -13
- package/lib/commands/apps/stacks/index.d.ts +2 -2
- package/lib/commands/apps/stacks/index.js +5 -6
- package/lib/commands/apps/stacks/set.d.ts +4 -4
- package/lib/commands/apps/stacks/set.js +9 -9
- package/lib/commands/apps/transfer.d.ts +8 -8
- package/lib/commands/apps/transfer.js +33 -32
- package/lib/commands/apps/unlock.d.ts +2 -2
- package/lib/commands/apps/unlock.js +3 -3
- package/lib/commands/auth/2fa/disable.d.ts +1 -1
- package/lib/commands/auth/2fa/disable.js +3 -2
- package/lib/commands/auth/2fa/index.d.ts +1 -1
- package/lib/commands/auth/2fa/index.js +4 -4
- package/lib/commands/auth/login.d.ts +3 -3
- package/lib/commands/auth/login.js +6 -6
- package/lib/commands/auth/logout.js +1 -0
- package/lib/commands/auth/token.js +4 -2
- package/lib/commands/authorizations/create.js +2 -1
- package/lib/commands/authorizations/index.js +3 -4
- package/lib/commands/authorizations/revoke.d.ts +2 -2
- package/lib/commands/authorizations/revoke.js +6 -6
- package/lib/commands/autocomplete/create.d.ts +29 -0
- package/lib/commands/autocomplete/create.js +223 -0
- package/lib/commands/autocomplete/doctor.d.ts +12 -0
- package/lib/commands/autocomplete/doctor.js +111 -0
- package/lib/commands/autocomplete/index.d.ts +12 -0
- package/lib/commands/autocomplete/index.js +65 -0
- package/lib/commands/autocomplete/options.d.ts +25 -0
- package/lib/commands/autocomplete/options.js +208 -0
- package/lib/commands/autocomplete/script.d.ts +10 -0
- package/lib/commands/autocomplete/script.js +20 -0
- package/lib/commands/buildpacks/index.js +2 -3
- package/lib/commands/buildpacks/remove.d.ts +4 -4
- package/lib/commands/buildpacks/remove.js +9 -8
- package/lib/commands/certs/add.d.ts +8 -8
- package/lib/commands/certs/add.js +27 -29
- package/lib/commands/certs/auto/disable.d.ts +2 -2
- package/lib/commands/certs/auto/disable.js +4 -4
- package/lib/commands/certs/auto/enable.d.ts +2 -2
- package/lib/commands/certs/auto/enable.js +8 -9
- package/lib/commands/certs/auto/index.d.ts +2 -2
- package/lib/commands/certs/auto/index.js +16 -17
- package/lib/commands/certs/generate.d.ts +2 -3
- package/lib/commands/certs/generate.js +1 -2
- package/lib/commands/certs/index.d.ts +1 -1
- package/lib/commands/certs/index.js +3 -3
- package/lib/commands/certs/info.d.ts +4 -4
- package/lib/commands/certs/info.js +6 -6
- package/lib/commands/certs/remove.d.ts +3 -3
- package/lib/commands/certs/remove.js +5 -5
- package/lib/commands/certs/update.d.ts +8 -8
- package/lib/commands/certs/update.js +19 -19
- package/lib/commands/ci/config/get.d.ts +5 -5
- package/lib/commands/ci/config/get.js +8 -8
- package/lib/commands/ci/config/index.d.ts +2 -2
- package/lib/commands/ci/config/index.js +8 -9
- package/lib/commands/ci/config/set.d.ts +2 -2
- package/lib/commands/ci/config/set.js +10 -10
- package/lib/commands/ci/config/unset.d.ts +3 -3
- package/lib/commands/ci/config/unset.js +6 -5
- package/lib/commands/ci/index.d.ts +2 -2
- package/lib/commands/ci/index.js +5 -4
- package/lib/commands/ci/info.js +3 -2
- package/lib/commands/ci/last.d.ts +1 -1
- package/lib/commands/ci/last.js +4 -3
- package/lib/commands/ci/migrate-manifest.d.ts +1 -1
- package/lib/commands/ci/migrate-manifest.js +4 -4
- package/lib/commands/ci/open.d.ts +2 -2
- package/lib/commands/ci/open.js +4 -3
- package/lib/commands/ci/rerun.d.ts +4 -4
- package/lib/commands/ci/rerun.js +9 -8
- package/lib/commands/ci/run.d.ts +1 -1
- package/lib/commands/ci/run.js +9 -7
- package/lib/commands/clients/create.js +4 -3
- package/lib/commands/clients/destroy.d.ts +1 -1
- package/lib/commands/clients/destroy.js +4 -4
- package/lib/commands/clients/index.js +5 -4
- package/lib/commands/clients/info.d.ts +3 -3
- package/lib/commands/clients/info.js +5 -5
- package/lib/commands/clients/rotate.d.ts +3 -3
- package/lib/commands/clients/rotate.js +5 -6
- package/lib/commands/clients/update.d.ts +3 -3
- package/lib/commands/clients/update.js +5 -5
- package/lib/commands/config/edit.d.ts +5 -5
- package/lib/commands/config/edit.js +21 -22
- package/lib/commands/config/get.d.ts +5 -4
- package/lib/commands/config/get.js +34 -13
- package/lib/commands/config/index.d.ts +1 -1
- package/lib/commands/config/index.js +4 -5
- package/lib/commands/config/set.d.ts +2 -2
- package/lib/commands/config/set.js +17 -18
- package/lib/commands/config/unset.d.ts +1 -1
- package/lib/commands/config/unset.js +12 -11
- package/lib/commands/container/pull.d.ts +4 -4
- package/lib/commands/container/pull.js +12 -12
- package/lib/commands/container/push.d.ts +6 -6
- package/lib/commands/container/push.js +18 -18
- package/lib/commands/container/release.d.ts +4 -4
- package/lib/commands/container/release.js +16 -15
- package/lib/commands/container/rm.d.ts +4 -4
- package/lib/commands/container/rm.js +10 -9
- package/lib/commands/container/run.d.ts +5 -5
- package/lib/commands/container/run.js +14 -14
- package/lib/commands/dashboard.d.ts +1 -1
- package/lib/commands/dashboard.js +19 -20
- package/lib/commands/domains/add.d.ts +5 -5
- package/lib/commands/domains/add.js +17 -18
- package/lib/commands/domains/clear.js +2 -2
- package/lib/commands/domains/index.d.ts +5 -3
- package/lib/commands/domains/index.js +99 -69
- package/lib/commands/domains/info.js +2 -1
- package/lib/commands/domains/remove.d.ts +3 -3
- package/lib/commands/domains/remove.js +5 -5
- package/lib/commands/domains/update.d.ts +4 -4
- package/lib/commands/domains/update.js +8 -8
- package/lib/commands/drains/add.d.ts +3 -3
- package/lib/commands/drains/add.js +7 -7
- package/lib/commands/drains/index.d.ts +1 -1
- package/lib/commands/drains/index.js +5 -6
- package/lib/commands/drains/remove.d.ts +4 -4
- package/lib/commands/drains/remove.js +6 -6
- package/lib/commands/features/disable.d.ts +3 -3
- package/lib/commands/features/disable.js +8 -8
- package/lib/commands/features/enable.d.ts +3 -3
- package/lib/commands/features/enable.js +8 -8
- package/lib/commands/features/index.js +2 -3
- package/lib/commands/features/info.d.ts +4 -4
- package/lib/commands/features/info.js +10 -9
- package/lib/commands/git/clone.d.ts +2 -2
- package/lib/commands/git/clone.js +7 -6
- package/lib/commands/git/remote.js +6 -5
- package/lib/commands/keys/add.d.ts +3 -4
- package/lib/commands/keys/add.js +20 -18
- package/lib/commands/keys/index.js +4 -5
- package/lib/commands/keys/remove.d.ts +2 -2
- package/lib/commands/keys/remove.js +8 -8
- package/lib/commands/labs/disable.d.ts +3 -3
- package/lib/commands/labs/disable.js +13 -13
- package/lib/commands/labs/enable.d.ts +4 -4
- package/lib/commands/labs/enable.js +11 -11
- package/lib/commands/labs/index.d.ts +2 -2
- package/lib/commands/labs/index.js +6 -7
- package/lib/commands/labs/info.d.ts +3 -3
- package/lib/commands/labs/info.js +8 -7
- package/lib/commands/local/index.d.ts +4 -4
- package/lib/commands/local/index.js +21 -21
- package/lib/commands/local/run.d.ts +1 -1
- package/lib/commands/local/run.js +4 -3
- package/lib/commands/logs.d.ts +1 -1
- package/lib/commands/logs.js +22 -21
- package/lib/commands/maintenance/off.d.ts +1 -1
- package/lib/commands/maintenance/off.js +2 -2
- package/lib/commands/maintenance/on.d.ts +1 -1
- package/lib/commands/maintenance/on.js +2 -2
- package/lib/commands/members/index.d.ts +3 -3
- package/lib/commands/members/index.js +18 -13
- package/lib/commands/members/remove.d.ts +1 -1
- package/lib/commands/members/remove.js +6 -6
- package/lib/commands/notifications/index.d.ts +3 -3
- package/lib/commands/notifications/index.js +9 -10
- package/lib/commands/orgs/open.js +2 -2
- package/lib/commands/pg/backups/cancel.d.ts +13 -0
- package/lib/commands/pg/backups/cancel.js +43 -0
- package/lib/commands/pg/backups/capture.d.ts +15 -0
- package/lib/commands/pg/backups/capture.js +62 -0
- package/lib/commands/pg/backups/delete.d.ts +15 -0
- package/lib/commands/pg/backups/delete.js +34 -0
- package/lib/commands/pg/backups/download.d.ts +14 -0
- package/lib/commands/pg/backups/download.js +54 -0
- package/lib/commands/pg/backups/index.d.ts +20 -0
- package/lib/commands/pg/backups/index.js +121 -0
- package/lib/commands/pg/backups/info.d.ts +17 -0
- package/lib/commands/pg/backups/info.js +86 -0
- package/lib/commands/pg/backups/restore.d.ts +20 -0
- package/lib/commands/pg/backups/restore.js +134 -0
- package/lib/commands/pg/backups/schedule.d.ts +21 -0
- package/lib/commands/pg/backups/schedule.js +69 -0
- package/lib/commands/pg/backups/schedules.d.ts +10 -0
- package/lib/commands/pg/backups/schedules.js +27 -0
- package/lib/commands/pg/backups/unschedule.d.ts +13 -0
- package/lib/commands/pg/backups/unschedule.js +42 -0
- package/lib/commands/pg/backups/url.d.ts +13 -0
- package/lib/commands/pg/backups/url.js +37 -0
- package/lib/commands/pg/bloat.d.ts +13 -0
- package/lib/{oldCommands → commands}/pg/bloat.js +23 -30
- package/lib/commands/pg/blocking.d.ts +13 -0
- package/lib/commands/pg/blocking.js +42 -0
- package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
- package/lib/commands/pg/connection-pooling/attach.js +38 -0
- package/lib/commands/pg/copy.d.ts +18 -0
- package/lib/commands/pg/copy.js +83 -0
- package/lib/commands/pg/credentials/create.d.ts +15 -0
- package/lib/commands/pg/credentials/create.js +39 -0
- package/lib/commands/pg/credentials/destroy.d.ts +16 -0
- package/lib/commands/pg/credentials/destroy.js +45 -0
- package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
- package/lib/commands/pg/credentials/repair-default.js +38 -0
- package/lib/commands/pg/credentials/rotate.d.ts +17 -0
- package/lib/commands/pg/credentials/rotate.js +79 -0
- package/lib/commands/pg/credentials/url.d.ts +14 -0
- package/lib/commands/pg/credentials/url.js +59 -0
- package/lib/commands/pg/credentials.d.ts +16 -0
- package/lib/commands/pg/credentials.js +61 -0
- package/lib/commands/pg/diagnose.d.ts +18 -0
- package/lib/commands/pg/diagnose.js +106 -0
- package/lib/commands/pg/info.d.ts +14 -0
- package/lib/commands/pg/info.js +91 -0
- package/lib/commands/pg/kill.d.ts +15 -0
- package/lib/commands/pg/kill.js +32 -0
- package/lib/commands/pg/killall.d.ts +13 -0
- package/lib/commands/pg/killall.js +24 -0
- package/lib/commands/pg/links/create.d.ts +16 -0
- package/lib/commands/pg/links/create.js +57 -0
- package/lib/commands/pg/links/destroy.d.ts +16 -0
- package/lib/commands/pg/links/destroy.js +40 -0
- package/lib/commands/pg/links/index.d.ts +13 -0
- package/lib/commands/pg/links/index.js +62 -0
- package/lib/commands/pg/locks.d.ts +15 -0
- package/lib/commands/pg/locks.js +53 -0
- package/lib/commands/pg/maintenance/index.d.ts +13 -0
- package/lib/commands/pg/maintenance/index.js +27 -0
- package/lib/commands/pg/maintenance/run.d.ts +14 -0
- package/lib/commands/pg/maintenance/run.js +34 -0
- package/lib/commands/pg/maintenance/window.d.ts +15 -0
- package/lib/commands/pg/maintenance/window.js +41 -0
- package/lib/commands/pg/outliers.d.ts +19 -0
- package/lib/commands/pg/outliers.js +100 -0
- package/lib/commands/pg/promote.d.ts +14 -0
- package/lib/commands/pg/promote.js +167 -0
- package/lib/commands/pg/ps.d.ts +14 -0
- package/lib/commands/pg/ps.js +52 -0
- package/lib/commands/pg/psql.d.ts +16 -0
- package/lib/commands/pg/psql.js +47 -0
- package/lib/commands/pg/pull.d.ts +18 -0
- package/lib/commands/pg/pull.js +87 -0
- package/lib/commands/pg/push.d.ts +18 -0
- package/lib/commands/pg/push.js +83 -0
- package/lib/commands/pg/reset.d.ts +15 -0
- package/lib/commands/pg/reset.js +43 -0
- package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-analyze.js +28 -0
- package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-buffers.js +26 -0
- package/lib/commands/pg/settings/auto-explain/log-format.d.ts +12 -0
- package/lib/commands/pg/settings/auto-explain/log-format.js +22 -0
- package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-min-duration.js +29 -0
- package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
- package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +20 -0
- package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-triggers.js +26 -0
- package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
- package/lib/commands/pg/settings/auto-explain/log-verbose.js +29 -0
- package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
- package/lib/commands/pg/settings/auto-explain.js +34 -0
- package/lib/commands/pg/settings/data-connector-details-logs.d.ts +17 -0
- package/lib/commands/pg/settings/data-connector-details-logs.js +30 -0
- package/lib/commands/pg/settings/index.d.ts +13 -0
- package/lib/commands/pg/settings/index.js +33 -0
- package/lib/commands/pg/settings/log-connections.d.ts +17 -0
- package/lib/commands/pg/settings/log-connections.js +30 -0
- package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
- package/lib/commands/pg/settings/log-lock-waits.js +27 -0
- package/lib/commands/pg/settings/log-min-duration-statement.d.ts +12 -0
- package/lib/commands/pg/settings/log-min-duration-statement.js +29 -0
- package/lib/commands/pg/settings/log-min-error-statement.d.ts +12 -0
- package/lib/commands/pg/settings/log-min-error-statement.js +23 -0
- package/lib/commands/pg/settings/log-statement.d.ts +12 -0
- package/lib/commands/pg/settings/log-statement.js +26 -0
- package/lib/commands/pg/settings/track-functions.d.ts +12 -0
- package/lib/commands/pg/settings/track-functions.js +25 -0
- package/lib/commands/pg/unfollow.d.ts +14 -0
- package/lib/commands/pg/unfollow.js +38 -0
- package/lib/commands/pg/upgrade/cancel.d.ts +13 -0
- package/lib/commands/pg/upgrade/cancel.js +50 -0
- package/lib/commands/pg/upgrade/dryrun.d.ts +14 -0
- package/lib/commands/pg/upgrade/dryrun.js +50 -0
- package/lib/commands/pg/upgrade/index.d.ts +15 -0
- package/lib/commands/pg/upgrade/index.js +73 -0
- package/lib/commands/pg/upgrade/prepare.d.ts +14 -0
- package/lib/commands/pg/upgrade/prepare.js +51 -0
- package/lib/commands/pg/upgrade/run.d.ts +16 -0
- package/lib/commands/pg/upgrade/run.js +95 -0
- package/lib/commands/pg/upgrade/wait.d.ts +16 -0
- package/lib/commands/pg/upgrade/wait.js +105 -0
- package/lib/commands/pg/vacuum-stats.d.ts +13 -0
- package/lib/{oldCommands → commands}/pg/vacuum-stats.js +25 -29
- package/lib/commands/pg/wait.d.ts +15 -0
- package/lib/commands/pg/wait.js +79 -0
- package/lib/commands/pipelines/add.d.ts +3 -3
- package/lib/commands/pipelines/add.js +13 -13
- package/lib/commands/pipelines/connect.js +2 -1
- package/lib/commands/pipelines/create.d.ts +3 -3
- package/lib/commands/pipelines/create.js +20 -20
- package/lib/commands/pipelines/destroy.d.ts +2 -2
- package/lib/commands/pipelines/destroy.js +5 -5
- package/lib/commands/pipelines/diff.d.ts +3 -3
- package/lib/commands/pipelines/diff.js +12 -13
- package/lib/commands/pipelines/index.js +3 -3
- package/lib/commands/pipelines/info.d.ts +3 -3
- package/lib/commands/pipelines/info.js +10 -9
- package/lib/commands/pipelines/open.d.ts +9 -0
- package/lib/commands/pipelines/open.js +19 -0
- package/lib/commands/pipelines/promote.d.ts +12 -0
- package/lib/commands/pipelines/promote.js +209 -0
- package/lib/commands/pipelines/remove.d.ts +10 -0
- package/lib/commands/pipelines/remove.js +20 -0
- package/lib/commands/pipelines/rename.d.ts +10 -0
- package/lib/commands/pipelines/rename.js +34 -0
- package/lib/commands/pipelines/setup.d.ts +16 -0
- package/lib/commands/pipelines/setup.js +88 -0
- package/lib/commands/pipelines/transfer.d.ts +13 -0
- package/lib/commands/pipelines/transfer.js +60 -0
- package/lib/commands/pipelines/update.d.ts +11 -0
- package/lib/commands/pipelines/update.js +29 -0
- package/lib/commands/prompt.d.ts +1 -1
- package/lib/commands/prompt.js +4 -3
- package/lib/commands/ps/autoscale/disable.d.ts +10 -0
- package/lib/commands/ps/autoscale/disable.js +33 -0
- package/lib/commands/ps/autoscale/enable.d.ts +14 -0
- package/lib/commands/ps/autoscale/enable.js +84 -0
- package/lib/commands/ps/index.d.ts +15 -0
- package/lib/commands/ps/index.js +199 -0
- package/lib/commands/ps/restart.d.ts +18 -0
- package/lib/commands/ps/restart.js +68 -0
- package/lib/commands/ps/scale.d.ts +13 -0
- package/lib/commands/ps/scale.js +81 -0
- package/lib/commands/ps/stop.d.ts +18 -0
- package/lib/commands/ps/stop.js +62 -0
- package/lib/commands/ps/type.d.ts +12 -0
- package/lib/commands/ps/type.js +168 -0
- package/lib/commands/ps/wait.d.ts +13 -0
- package/lib/commands/ps/wait.js +73 -0
- package/lib/commands/regions.d.ts +2 -2
- package/lib/commands/regions.js +6 -5
- package/lib/commands/releases/index.d.ts +14 -0
- package/lib/commands/releases/index.js +155 -0
- package/lib/commands/releases/info.d.ts +15 -0
- package/lib/commands/releases/info.js +75 -0
- package/lib/commands/releases/output.d.ts +13 -0
- package/lib/commands/releases/output.js +33 -0
- package/lib/commands/releases/retry.d.ts +11 -0
- package/lib/commands/releases/retry.js +46 -0
- package/lib/commands/releases/rollback.d.ts +14 -0
- package/lib/commands/releases/rollback.js +54 -0
- package/lib/commands/repl.d.ts +1 -1
- package/lib/commands/repl.js +3 -2
- package/lib/commands/reviewapps/disable.d.ts +3 -3
- package/lib/commands/reviewapps/disable.js +11 -10
- package/lib/commands/reviewapps/enable.d.ts +2 -2
- package/lib/commands/reviewapps/enable.js +9 -8
- package/lib/commands/run/detached.d.ts +16 -0
- package/lib/commands/run/detached.js +54 -0
- package/lib/commands/run/index.d.ts +19 -0
- package/lib/commands/run/index.js +69 -0
- package/lib/commands/run/inside.d.ts +18 -0
- package/lib/commands/run/inside.js +77 -0
- package/lib/commands/sessions/destroy.d.ts +1 -1
- package/lib/commands/sessions/destroy.js +4 -4
- package/lib/commands/sessions/index.js +2 -3
- package/lib/commands/spaces/create.d.ts +23 -0
- package/lib/commands/spaces/create.js +87 -0
- package/lib/commands/spaces/destroy.d.ts +14 -0
- package/lib/commands/spaces/destroy.js +61 -0
- package/lib/commands/spaces/drains/get.d.ts +11 -0
- package/lib/commands/spaces/drains/get.js +23 -0
- package/lib/commands/spaces/drains/set.d.ts +13 -0
- package/lib/commands/spaces/drains/set.js +25 -0
- package/lib/commands/spaces/hosts.d.ts +14 -0
- package/lib/commands/spaces/hosts.js +35 -0
- package/lib/commands/spaces/index.d.ts +16 -0
- package/lib/commands/spaces/index.js +65 -0
- package/lib/commands/spaces/info.d.ts +14 -0
- package/lib/commands/spaces/info.js +48 -0
- package/lib/commands/spaces/peerings/accept.d.ts +15 -0
- package/lib/commands/spaces/peerings/accept.js +33 -0
- package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
- package/lib/commands/spaces/peerings/destroy.js +43 -0
- package/lib/commands/spaces/peerings/index.d.ts +13 -0
- package/lib/commands/spaces/peerings/index.js +31 -0
- package/lib/commands/spaces/peerings/info.d.ts +15 -0
- package/lib/{oldCommands → commands}/spaces/peerings/info.js +32 -40
- package/lib/commands/spaces/ps.d.ts +15 -0
- package/lib/commands/spaces/ps.js +77 -0
- package/lib/commands/spaces/rename.d.ts +11 -0
- package/lib/commands/spaces/rename.js +24 -0
- package/lib/commands/spaces/topology.d.ts +18 -0
- package/lib/commands/spaces/topology.js +87 -0
- package/lib/commands/spaces/transfer.d.ts +11 -0
- package/lib/commands/spaces/transfer.js +33 -0
- package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
- package/lib/commands/spaces/trusted-ips/add.js +49 -0
- package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
- package/lib/commands/spaces/trusted-ips/index.js +59 -0
- package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
- package/lib/commands/spaces/trusted-ips/remove.js +51 -0
- package/lib/commands/spaces/vpn/config.d.ts +14 -0
- package/lib/commands/spaces/vpn/config.js +53 -0
- package/lib/commands/spaces/vpn/connect.d.ts +15 -0
- package/lib/commands/spaces/vpn/connect.js +46 -0
- package/lib/commands/spaces/vpn/connections.d.ts +17 -0
- package/lib/commands/spaces/vpn/connections.js +55 -0
- package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
- package/lib/commands/spaces/vpn/destroy.js +36 -0
- package/lib/commands/spaces/vpn/info.d.ts +16 -0
- package/lib/commands/spaces/vpn/info.js +85 -0
- package/lib/commands/spaces/vpn/update.d.ts +14 -0
- package/lib/commands/spaces/vpn/update.js +36 -0
- package/lib/commands/spaces/vpn/wait.d.ts +16 -0
- package/lib/commands/spaces/vpn/wait.js +69 -0
- package/lib/commands/spaces/wait.d.ts +17 -0
- package/lib/commands/spaces/wait.js +87 -0
- package/lib/commands/status.js +14 -13
- package/lib/commands/teams/index.d.ts +1 -1
- package/lib/commands/teams/index.js +4 -5
- package/lib/commands/telemetry/add.d.ts +6 -5
- package/lib/commands/telemetry/add.js +43 -18
- package/lib/commands/telemetry/index.d.ts +4 -4
- package/lib/commands/telemetry/index.js +19 -17
- package/lib/commands/telemetry/info.d.ts +2 -2
- package/lib/commands/telemetry/info.js +5 -4
- package/lib/commands/telemetry/update.d.ts +3 -3
- package/lib/commands/telemetry/update.js +8 -9
- package/lib/commands/usage/addons.d.ts +2 -2
- package/lib/commands/usage/addons.js +17 -18
- package/lib/commands/webhooks/add.d.ts +16 -0
- package/lib/commands/webhooks/add.js +43 -0
- package/lib/commands/webhooks/deliveries/index.d.ts +12 -0
- package/lib/commands/webhooks/deliveries/index.js +75 -0
- package/lib/commands/webhooks/deliveries/info.d.ts +14 -0
- package/lib/commands/webhooks/deliveries/info.js +40 -0
- package/lib/commands/webhooks/index.d.ts +11 -0
- package/lib/commands/webhooks/index.js +42 -0
- package/lib/commands/webhooks/info.d.ts +14 -0
- package/lib/commands/webhooks/info.js +29 -0
- package/lib/commands/webhooks/remove.d.ts +14 -0
- package/lib/commands/webhooks/remove.js +24 -0
- package/lib/commands/webhooks/update.d.ts +19 -0
- package/lib/commands/webhooks/update.js +36 -0
- package/lib/global_telemetry.d.ts +2 -2
- package/lib/global_telemetry.js +34 -36
- package/lib/lib/addons/addons_wait.d.ts +1 -1
- package/lib/lib/addons/addons_wait.js +2 -2
- package/lib/lib/addons/create_addon.d.ts +5 -3
- package/lib/lib/addons/create_addon.js +12 -9
- package/lib/lib/addons/destroy_addon.js +17 -9
- package/lib/lib/addons/resolve.d.ts +10 -11
- package/lib/lib/addons/resolve.js +19 -18
- package/lib/lib/addons/util.d.ts +2 -2
- package/lib/lib/addons/util.js +22 -16
- package/lib/lib/api.d.ts +1 -1
- package/lib/lib/api.js +19 -23
- package/lib/lib/apps/app-transfer.d.ts +3 -3
- package/lib/lib/apps/app-transfer.js +11 -11
- package/lib/lib/autocomplete/base.d.ts +11 -1
- package/lib/lib/autocomplete/base.js +33 -49
- package/lib/lib/autocomplete/cache.js +9 -7
- package/lib/lib/autocomplete/completions.d.ts +41 -1
- package/lib/lib/autocomplete/completions.js +258 -290
- package/lib/lib/buildpacks/buildpacks.d.ts +11 -11
- package/lib/lib/buildpacks/buildpacks.js +71 -71
- package/lib/lib/certs/certificate_details.js +3 -4
- package/lib/lib/certs/flags.d.ts +2 -2
- package/lib/lib/certs/flags.js +5 -8
- package/lib/lib/certs/get_cert_and_key.js +2 -2
- package/lib/lib/ci/git.d.ts +12 -2
- package/lib/lib/ci/git.js +20 -6
- package/lib/lib/ci/pipelines.d.ts +5 -5
- package/lib/lib/ci/pipelines.js +17 -17
- package/lib/lib/ci/source.d.ts +8 -0
- package/lib/lib/ci/source.js +22 -10
- package/lib/lib/ci/test-run.js +18 -15
- package/lib/lib/config/quote.js +4 -4
- package/lib/lib/config/util.d.ts +3 -0
- package/lib/lib/config/util.js +5 -0
- package/lib/lib/confirmCommand.js +6 -7
- package/lib/lib/container/docker_helper.d.ts +12 -12
- package/lib/lib/container/docker_helper.js +71 -74
- package/lib/lib/container/helpers.js +2 -2
- package/lib/lib/container/streamer.js +4 -4
- package/lib/lib/data/baseCommand.d.ts +4 -0
- package/lib/lib/data/baseCommand.js +15 -0
- package/lib/lib/data/createPool.d.ts +4 -0
- package/lib/lib/data/createPool.js +6 -0
- package/lib/lib/data/credentialUtils.d.ts +3 -0
- package/lib/lib/data/credentialUtils.js +23 -0
- package/lib/lib/data/displayQuota.d.ts +19 -0
- package/lib/lib/data/displayQuota.js +59 -0
- package/lib/lib/data/parseProvisionOpts.d.ts +15 -0
- package/lib/lib/data/parseProvisionOpts.js +31 -0
- package/lib/lib/data/types.d.ts +181 -0
- package/lib/lib/data/types.js +3 -0
- package/lib/lib/data-scrubber/patterns.d.ts +4 -0
- package/lib/lib/data-scrubber/patterns.js +13 -0
- package/lib/lib/data-scrubber/presets.d.ts +64 -0
- package/lib/lib/data-scrubber/presets.js +112 -0
- package/lib/lib/data-scrubber/scrubber.d.ts +131 -0
- package/lib/lib/data-scrubber/scrubber.js +256 -0
- package/lib/lib/data-scrubber/types.d.ts +169 -0
- package/lib/lib/domains/domains.js +10 -10
- package/lib/lib/domains/wait-for-domain.js +2 -3
- package/lib/lib/local/env-file-validator.js +2 -2
- package/lib/lib/local/fork-foreman.js +3 -2
- package/lib/lib/members/util.js +7 -7
- package/lib/lib/orgs/utils.js +2 -3
- package/lib/lib/pg/backups.d.ts +17 -1
- package/lib/lib/pg/backups.js +132 -156
- package/lib/lib/pg/download.js +7 -7
- package/lib/lib/pg/fetcher.d.ts +3 -1
- package/lib/lib/pg/fetcher.js +3 -162
- package/lib/lib/pg/psql.d.ts +17 -1
- package/lib/lib/pg/psql.js +59 -269
- package/lib/lib/pg/push_pull.d.ts +12 -0
- package/lib/lib/pg/push_pull.js +97 -119
- package/lib/lib/pg/setter.d.ts +16 -1
- package/lib/lib/pg/setter.js +61 -73
- package/lib/lib/pg/types.d.ts +10 -33
- package/lib/lib/pg/util.d.ts +8 -1
- package/lib/lib/pg/util.js +102 -211
- package/lib/lib/pipelines/disambiguate.js +9 -11
- package/lib/lib/pipelines/ownership.d.ts +1 -1
- package/lib/lib/pipelines/ownership.js +6 -12
- package/lib/lib/pipelines/render-pipeline.d.ts +2 -2
- package/lib/lib/pipelines/render-pipeline.js +10 -9
- package/lib/lib/pipelines/setup/create-apps.js +7 -9
- package/lib/lib/pipelines/setup/get-ci-settings.js +2 -2
- package/lib/lib/pipelines/setup/get-github-token.js +1 -3
- package/lib/lib/pipelines/setup/get-name-and-repo.js +27 -22
- package/lib/lib/pipelines/setup/get-settings.js +12 -12
- package/lib/lib/pipelines/setup/poll-app-setups.js +3 -5
- package/lib/lib/pipelines/setup/setup-pipeline.js +1 -3
- package/lib/lib/pipelines/setup/validate.d.ts +1 -1
- package/lib/lib/pipelines/setup/validate.js +2 -2
- package/lib/lib/pipelines/stages.d.ts +2 -2
- package/lib/lib/pipelines/stages.js +4 -4
- package/lib/lib/redis/api.d.ts +22 -22
- package/lib/lib/redis/api.js +62 -67
- package/lib/lib/releases/output.js +1 -1
- package/lib/lib/releases/status_helper.d.ts +1 -1
- package/lib/lib/releases/status_helper.js +16 -8
- package/lib/lib/run/colorize.js +73 -40
- package/lib/lib/run/dyno.d.ts +22 -30
- package/lib/lib/run/dyno.js +184 -180
- package/lib/lib/run/helpers.d.ts +25 -0
- package/lib/lib/run/helpers.js +119 -3
- package/lib/lib/run/log-displayer.d.ts +3 -3
- package/lib/lib/run/log-displayer.js +21 -21
- package/lib/lib/spaces/format.js +36 -23
- package/lib/lib/spaces/hosts.d.ts +9 -1
- package/lib/lib/spaces/hosts.js +28 -41
- package/lib/lib/spaces/peering.d.ts +4 -1
- package/lib/lib/spaces/peering.js +45 -52
- package/lib/lib/spaces/spaces.d.ts +6 -1
- package/lib/lib/spaces/spaces.js +30 -39
- package/lib/lib/spaces/vpn-connections.js +16 -16
- package/lib/lib/telemetry/util.d.ts +1 -1
- package/lib/lib/telemetry/util.js +3 -3
- package/lib/lib/types/completion.d.ts +15 -0
- package/lib/lib/utils/multisort.d.ts +4 -7
- package/lib/lib/utils/multisort.js +8 -32
- package/lib/lib/utils/packageParser.js +2 -2
- package/lib/lib/utils/uuid-validate.js +1 -3
- package/lib/lib/webhooks/base.d.ts +2 -2
- package/lib/lib/webhooks/base.js +3 -3
- package/lib/nls-data.d.ts +10 -0
- package/lib/nls-data.js +10 -0
- package/lib/nls.d.ts +1 -1
- package/lib/nls.js +1 -1
- package/npm-shrinkwrap.json +17653 -18259
- package/oclif.manifest.json +9918 -3293
- package/package.json +26 -237
- package/lib/lib/pg/bastion.js +0 -137
- package/lib/lib/pg/config.d.ts +0 -2
- package/lib/lib/pg/config.js +0 -9
- package/lib/lib/pg/host.d.ts +0 -1
- package/lib/lib/pg/host.js +0 -3
- package/lib/lib/spaces/outbound-rules.js +0 -85
- package/lib/oldCommands/autocomplete/create.d.ts +0 -1
- package/lib/oldCommands/autocomplete/create.js +0 -254
- package/lib/oldCommands/autocomplete/doctor.d.ts +0 -1
- package/lib/oldCommands/autocomplete/doctor.js +0 -110
- package/lib/oldCommands/autocomplete/index.d.ts +0 -1
- package/lib/oldCommands/autocomplete/index.js +0 -80
- package/lib/oldCommands/autocomplete/options.d.ts +0 -1
- package/lib/oldCommands/autocomplete/options.js +0 -240
- package/lib/oldCommands/autocomplete/script.d.ts +0 -1
- package/lib/oldCommands/autocomplete/script.js +0 -35
- package/lib/oldCommands/pg/backups/cancel.d.ts +0 -1
- package/lib/oldCommands/pg/backups/cancel.js +0 -56
- package/lib/oldCommands/pg/backups/capture.d.ts +0 -1
- package/lib/oldCommands/pg/backups/capture.js +0 -77
- package/lib/oldCommands/pg/backups/delete.d.ts +0 -1
- package/lib/oldCommands/pg/backups/delete.js +0 -45
- package/lib/oldCommands/pg/backups/download.d.ts +0 -1
- package/lib/oldCommands/pg/backups/download.js +0 -64
- package/lib/oldCommands/pg/backups/index.d.ts +0 -1
- package/lib/oldCommands/pg/backups/index.js +0 -141
- package/lib/oldCommands/pg/backups/info.d.ts +0 -1
- package/lib/oldCommands/pg/backups/info.js +0 -102
- package/lib/oldCommands/pg/backups/restore.d.ts +0 -1
- package/lib/oldCommands/pg/backups/restore.js +0 -150
- package/lib/oldCommands/pg/backups/schedule.d.ts +0 -1
- package/lib/oldCommands/pg/backups/schedule.js +0 -107
- package/lib/oldCommands/pg/backups/schedules.d.ts +0 -1
- package/lib/oldCommands/pg/backups/schedules.js +0 -34
- package/lib/oldCommands/pg/backups/unschedule.d.ts +0 -1
- package/lib/oldCommands/pg/backups/unschedule.js +0 -60
- package/lib/oldCommands/pg/backups/url.d.ts +0 -1
- package/lib/oldCommands/pg/backups/url.js +0 -46
- package/lib/oldCommands/pg/bloat.d.ts +0 -1
- package/lib/oldCommands/pg/blocking.d.ts +0 -1
- package/lib/oldCommands/pg/blocking.js +0 -48
- package/lib/oldCommands/pg/connection-pooling/attach.d.ts +0 -1
- package/lib/oldCommands/pg/connection-pooling/attach.js +0 -53
- package/lib/oldCommands/pg/copy.d.ts +0 -1
- package/lib/oldCommands/pg/copy.js +0 -104
- package/lib/oldCommands/pg/credentials/create.d.ts +0 -1
- package/lib/oldCommands/pg/credentials/create.js +0 -47
- package/lib/oldCommands/pg/credentials/destroy.d.ts +0 -1
- package/lib/oldCommands/pg/credentials/destroy.js +0 -56
- package/lib/oldCommands/pg/credentials/repair-default.d.ts +0 -1
- package/lib/oldCommands/pg/credentials/repair-default.js +0 -43
- package/lib/oldCommands/pg/credentials/rotate.d.ts +0 -1
- package/lib/oldCommands/pg/credentials/rotate.js +0 -97
- package/lib/oldCommands/pg/credentials/url.d.ts +0 -1
- package/lib/oldCommands/pg/credentials/url.js +0 -75
- package/lib/oldCommands/pg/credentials.d.ts +0 -1
- package/lib/oldCommands/pg/credentials.js +0 -77
- package/lib/oldCommands/pg/diagnose.d.ts +0 -1
- package/lib/oldCommands/pg/diagnose.js +0 -136
- package/lib/oldCommands/pg/info.d.ts +0 -1
- package/lib/oldCommands/pg/info.js +0 -110
- package/lib/oldCommands/pg/kill.d.ts +0 -1
- package/lib/oldCommands/pg/kill.js +0 -37
- package/lib/oldCommands/pg/killall.d.ts +0 -1
- package/lib/oldCommands/pg/killall.js +0 -31
- package/lib/oldCommands/pg/links/create.d.ts +0 -1
- package/lib/oldCommands/pg/links/create.js +0 -70
- package/lib/oldCommands/pg/links/destroy.d.ts +0 -1
- package/lib/oldCommands/pg/links/destroy.js +0 -51
- package/lib/oldCommands/pg/links/index.d.ts +0 -1
- package/lib/oldCommands/pg/links/index.js +0 -64
- package/lib/oldCommands/pg/locks.d.ts +0 -1
- package/lib/oldCommands/pg/locks.js +0 -60
- package/lib/oldCommands/pg/maintenance/index.d.ts +0 -1
- package/lib/oldCommands/pg/maintenance/index.js +0 -34
- package/lib/oldCommands/pg/maintenance/run.d.ts +0 -1
- package/lib/oldCommands/pg/maintenance/run.js +0 -44
- package/lib/oldCommands/pg/maintenance/window.d.ts +0 -1
- package/lib/oldCommands/pg/maintenance/window.js +0 -52
- package/lib/oldCommands/pg/outliers.d.ts +0 -1
- package/lib/oldCommands/pg/outliers.js +0 -110
- package/lib/oldCommands/pg/promote.d.ts +0 -1
- package/lib/oldCommands/pg/promote.js +0 -183
- package/lib/oldCommands/pg/ps.d.ts +0 -1
- package/lib/oldCommands/pg/ps.js +0 -56
- package/lib/oldCommands/pg/psql.d.ts +0 -1
- package/lib/oldCommands/pg/psql.js +0 -53
- package/lib/oldCommands/pg/pull.d.ts +0 -1
- package/lib/oldCommands/pg/pull.js +0 -114
- package/lib/oldCommands/pg/push.d.ts +0 -1
- package/lib/oldCommands/pg/push.js +0 -111
- package/lib/oldCommands/pg/reset.d.ts +0 -1
- package/lib/oldCommands/pg/reset.js +0 -49
- package/lib/oldCommands/pg/settings/auto-explain/log-analyze.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-analyze.js +0 -37
- package/lib/oldCommands/pg/settings/auto-explain/log-buffers.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-buffers.js +0 -35
- package/lib/oldCommands/pg/settings/auto-explain/log-format.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-format.js +0 -30
- package/lib/oldCommands/pg/settings/auto-explain/log-min-duration.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-min-duration.js +0 -39
- package/lib/oldCommands/pg/settings/auto-explain/log-nested-statements.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-nested-statements.js +0 -30
- package/lib/oldCommands/pg/settings/auto-explain/log-triggers.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-triggers.js +0 -35
- package/lib/oldCommands/pg/settings/auto-explain/log-verbose.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain/log-verbose.js +0 -40
- package/lib/oldCommands/pg/settings/auto-explain.d.ts +0 -1
- package/lib/oldCommands/pg/settings/auto-explain.js +0 -45
- package/lib/oldCommands/pg/settings/data-connector-details-logs.d.ts +0 -1
- package/lib/oldCommands/pg/settings/data-connector-details-logs.js +0 -40
- package/lib/oldCommands/pg/settings/index.d.ts +0 -1
- package/lib/oldCommands/pg/settings/index.js +0 -41
- package/lib/oldCommands/pg/settings/log-connections.d.ts +0 -1
- package/lib/oldCommands/pg/settings/log-connections.js +0 -40
- package/lib/oldCommands/pg/settings/log-lock-waits.d.ts +0 -1
- package/lib/oldCommands/pg/settings/log-lock-waits.js +0 -36
- package/lib/oldCommands/pg/settings/log-min-duration-statement.d.ts +0 -1
- package/lib/oldCommands/pg/settings/log-min-duration-statement.js +0 -39
- package/lib/oldCommands/pg/settings/log-min-error-statement.d.ts +0 -1
- package/lib/oldCommands/pg/settings/log-min-error-statement.js +0 -31
- package/lib/oldCommands/pg/settings/log-statement.d.ts +0 -1
- package/lib/oldCommands/pg/settings/log-statement.js +0 -33
- package/lib/oldCommands/pg/settings/track-functions.d.ts +0 -1
- package/lib/oldCommands/pg/settings/track-functions.js +0 -33
- package/lib/oldCommands/pg/unfollow.d.ts +0 -1
- package/lib/oldCommands/pg/unfollow.js +0 -46
- package/lib/oldCommands/pg/upgrade/cancel.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade/cancel.js +0 -62
- package/lib/oldCommands/pg/upgrade/dryrun.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade/dryrun.js +0 -62
- package/lib/oldCommands/pg/upgrade/index.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade/index.js +0 -85
- package/lib/oldCommands/pg/upgrade/prepare.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade/prepare.js +0 -64
- package/lib/oldCommands/pg/upgrade/run.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade/run.js +0 -106
- package/lib/oldCommands/pg/upgrade/wait.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade/wait.js +0 -121
- package/lib/oldCommands/pg/upgrade.d.ts +0 -1
- package/lib/oldCommands/pg/upgrade.js +0 -66
- package/lib/oldCommands/pg/vacuum-stats.d.ts +0 -1
- package/lib/oldCommands/pg/wait.d.ts +0 -1
- package/lib/oldCommands/pg/wait.js +0 -96
- package/lib/oldCommands/pipelines/open.d.ts +0 -1
- package/lib/oldCommands/pipelines/open.js +0 -25
- package/lib/oldCommands/pipelines/promote.d.ts +0 -1
- package/lib/oldCommands/pipelines/promote.js +0 -269
- package/lib/oldCommands/pipelines/remove.d.ts +0 -1
- package/lib/oldCommands/pipelines/remove.js +0 -29
- package/lib/oldCommands/pipelines/rename.d.ts +0 -1
- package/lib/oldCommands/pipelines/rename.js +0 -42
- package/lib/oldCommands/pipelines/setup.d.ts +0 -1
- package/lib/oldCommands/pipelines/setup.js +0 -117
- package/lib/oldCommands/pipelines/transfer.d.ts +0 -1
- package/lib/oldCommands/pipelines/transfer.js +0 -78
- package/lib/oldCommands/pipelines/update.d.ts +0 -1
- package/lib/oldCommands/pipelines/update.js +0 -39
- package/lib/oldCommands/ps/autoscale/disable.d.ts +0 -1
- package/lib/oldCommands/ps/autoscale/disable.js +0 -43
- package/lib/oldCommands/ps/autoscale/enable.d.ts +0 -1
- package/lib/oldCommands/ps/autoscale/enable.js +0 -103
- package/lib/oldCommands/ps/index.d.ts +0 -1
- package/lib/oldCommands/ps/index.js +0 -254
- package/lib/oldCommands/ps/restart.d.ts +0 -1
- package/lib/oldCommands/ps/restart.js +0 -78
- package/lib/oldCommands/ps/scale.d.ts +0 -1
- package/lib/oldCommands/ps/scale.js +0 -95
- package/lib/oldCommands/ps/stop.d.ts +0 -1
- package/lib/oldCommands/ps/stop.js +0 -73
- package/lib/oldCommands/ps/type.d.ts +0 -1
- package/lib/oldCommands/ps/type.js +0 -190
- package/lib/oldCommands/ps/wait.d.ts +0 -1
- package/lib/oldCommands/ps/wait.js +0 -93
- package/lib/oldCommands/releases/index.d.ts +0 -1
- package/lib/oldCommands/releases/index.js +0 -156
- package/lib/oldCommands/releases/info.d.ts +0 -1
- package/lib/oldCommands/releases/info.js +0 -68
- package/lib/oldCommands/releases/output.d.ts +0 -1
- package/lib/oldCommands/releases/output.js +0 -42
- package/lib/oldCommands/releases/retry.d.ts +0 -1
- package/lib/oldCommands/releases/retry.js +0 -59
- package/lib/oldCommands/releases/rollback.d.ts +0 -1
- package/lib/oldCommands/releases/rollback.js +0 -65
- package/lib/oldCommands/run/detached.d.ts +0 -1
- package/lib/oldCommands/run/detached.js +0 -61
- package/lib/oldCommands/run/index.d.ts +0 -1
- package/lib/oldCommands/run/index.js +0 -72
- package/lib/oldCommands/run/inside.d.ts +0 -1
- package/lib/oldCommands/run/inside.js +0 -93
- package/lib/oldCommands/spaces/create.d.ts +0 -1
- package/lib/oldCommands/spaces/create.js +0 -99
- package/lib/oldCommands/spaces/destroy.d.ts +0 -1
- package/lib/oldCommands/spaces/destroy.js +0 -79
- package/lib/oldCommands/spaces/drains/get.d.ts +0 -1
- package/lib/oldCommands/spaces/drains/get.js +0 -33
- package/lib/oldCommands/spaces/drains/set.d.ts +0 -1
- package/lib/oldCommands/spaces/drains/set.js +0 -33
- package/lib/oldCommands/spaces/hosts.d.ts +0 -1
- package/lib/oldCommands/spaces/hosts.js +0 -42
- package/lib/oldCommands/spaces/index.d.ts +0 -1
- package/lib/oldCommands/spaces/index.js +0 -74
- package/lib/oldCommands/spaces/info.d.ts +0 -1
- package/lib/oldCommands/spaces/info.js +0 -59
- package/lib/oldCommands/spaces/peerings/accept.d.ts +0 -1
- package/lib/oldCommands/spaces/peerings/accept.js +0 -41
- package/lib/oldCommands/spaces/peerings/destroy.d.ts +0 -1
- package/lib/oldCommands/spaces/peerings/destroy.js +0 -51
- package/lib/oldCommands/spaces/peerings/index.d.ts +0 -1
- package/lib/oldCommands/spaces/peerings/index.js +0 -39
- package/lib/oldCommands/spaces/peerings/info.d.ts +0 -1
- package/lib/oldCommands/spaces/ps.d.ts +0 -1
- package/lib/oldCommands/spaces/ps.js +0 -97
- package/lib/oldCommands/spaces/rename.d.ts +0 -1
- package/lib/oldCommands/spaces/rename.js +0 -29
- package/lib/oldCommands/spaces/topology.d.ts +0 -1
- package/lib/oldCommands/spaces/topology.js +0 -95
- package/lib/oldCommands/spaces/transfer.d.ts +0 -1
- package/lib/oldCommands/spaces/transfer.js +0 -37
- package/lib/oldCommands/spaces/trusted-ips/add.d.ts +0 -1
- package/lib/oldCommands/spaces/trusted-ips/add.js +0 -48
- package/lib/oldCommands/spaces/trusted-ips/index.d.ts +0 -1
- package/lib/oldCommands/spaces/trusted-ips/index.js +0 -57
- package/lib/oldCommands/spaces/trusted-ips/remove.d.ts +0 -1
- package/lib/oldCommands/spaces/trusted-ips/remove.js +0 -50
- package/lib/oldCommands/spaces/vpn/config.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/config.js +0 -61
- package/lib/oldCommands/spaces/vpn/connect.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/connect.js +0 -54
- package/lib/oldCommands/spaces/vpn/connections.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/connections.js +0 -70
- package/lib/oldCommands/spaces/vpn/destroy.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/destroy.js +0 -48
- package/lib/oldCommands/spaces/vpn/info.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/info.js +0 -89
- package/lib/oldCommands/spaces/vpn/update.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/update.js +0 -46
- package/lib/oldCommands/spaces/vpn/wait.d.ts +0 -1
- package/lib/oldCommands/spaces/vpn/wait.js +0 -80
- package/lib/oldCommands/spaces/wait.d.ts +0 -1
- package/lib/oldCommands/spaces/wait.js +0 -106
- package/lib/oldCommands/webhooks/add.d.ts +0 -1
- package/lib/oldCommands/webhooks/add.js +0 -56
- package/lib/oldCommands/webhooks/deliveries/index.d.ts +0 -1
- package/lib/oldCommands/webhooks/deliveries/index.js +0 -90
- package/lib/oldCommands/webhooks/deliveries/info.d.ts +0 -1
- package/lib/oldCommands/webhooks/deliveries/info.js +0 -54
- package/lib/oldCommands/webhooks/index.d.ts +0 -1
- package/lib/oldCommands/webhooks/index.js +0 -55
- package/lib/oldCommands/webhooks/info.d.ts +0 -1
- package/lib/oldCommands/webhooks/info.js +0 -41
- package/lib/oldCommands/webhooks/remove.d.ts +0 -1
- package/lib/oldCommands/webhooks/remove.js +0 -37
- package/lib/oldCommands/webhooks/update.d.ts +0 -1
- package/lib/oldCommands/webhooks/update.js +0 -50
- package/lib/package.nls.json +0 -6
- /package/lib/lib/{pg/bastion.d.ts → data-scrubber/types.js} +0 -0
- /package/lib/lib/{spaces/outbound-rules.d.ts → types/completion.js} +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { color } from '@heroku-cli
|
|
1
|
+
import { color, hux } from '@heroku/heroku-cli-util';
|
|
2
|
+
import { HTTP } from '@heroku/http-call';
|
|
2
3
|
import { Command, flags } from '@heroku-cli/command';
|
|
3
4
|
import { ux } from '@oclif/core';
|
|
4
|
-
import {
|
|
5
|
-
import { HTTP } from '@heroku/http-call';
|
|
6
|
-
import { getCoupling, getPipeline, getReleases, listPipelineApps, SDK_HEADER } from '../../lib/api.js';
|
|
7
|
-
import KolkrabbiAPI from '../../lib/pipelines/kolkrabbi-api.js';
|
|
5
|
+
import { SDK_HEADER, getCoupling, getPipeline, getReleases, listPipelineApps, } from '../../lib/api.js';
|
|
8
6
|
import { getGeneration } from '../../lib/apps/generation.js';
|
|
7
|
+
import KolkrabbiAPI from '../../lib/pipelines/kolkrabbi-api.js';
|
|
9
8
|
const PROMOTION_ORDER = ['development', 'staging', 'production'];
|
|
10
9
|
async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
|
|
11
10
|
if (!downstreamApp.repo) {
|
|
@@ -24,9 +23,9 @@ async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
|
|
|
24
23
|
try {
|
|
25
24
|
const path = `${targetApp.repo}/compare/${downstreamApp.hash}...${targetApp.hash}`;
|
|
26
25
|
const headers = {
|
|
27
|
-
authorization: 'token ' + githubToken,
|
|
28
26
|
'Content-Type': 'application/vnd.github+json',
|
|
29
27
|
'X-GitHub-Api-Version': '2022-11-28',
|
|
28
|
+
authorization: 'token ' + githubToken,
|
|
30
29
|
};
|
|
31
30
|
if (herokuUserAgent) {
|
|
32
31
|
Reflect.set(headers, 'user-agent', herokuUserAgent);
|
|
@@ -48,7 +47,7 @@ async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
|
|
|
48
47
|
author: {},
|
|
49
48
|
message: {},
|
|
50
49
|
});
|
|
51
|
-
ux.stdout(`\
|
|
50
|
+
ux.stdout(`\n${color.info(`https://github.com/${path}`)}`);
|
|
52
51
|
}
|
|
53
52
|
catch {
|
|
54
53
|
ux.stdout(`\n${color.app(targetApp.name)} was not compared to ${color.app(downstreamApp.name)} because we were unable to perform a diff`);
|
|
@@ -58,17 +57,16 @@ async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
|
|
|
58
57
|
export default class PipelinesDiff extends Command {
|
|
59
58
|
static description = 'compares the latest release of this app to its downstream app(s)';
|
|
60
59
|
static examples = [
|
|
61
|
-
'
|
|
60
|
+
color.command('heroku pipelines:diff -a my-app-staging'),
|
|
62
61
|
];
|
|
63
62
|
static flags = {
|
|
64
63
|
app: flags.app({ required: true }),
|
|
65
64
|
remote: flags.remote(),
|
|
66
65
|
};
|
|
67
|
-
kolkrabbi = new KolkrabbiAPI(this.config.userAgent, () => this.heroku.auth);
|
|
68
66
|
getAppInfo = async (appName, appId, generation) => {
|
|
69
67
|
// Find GitHub connection for the app
|
|
70
68
|
const githubApp = await this.kolkrabbi.getAppLink(appId)
|
|
71
|
-
.catch(() => ({
|
|
69
|
+
.catch(() => ({ hash: null, name: appName, repo: null }));
|
|
72
70
|
// Find the commit hash of the latest release for this app
|
|
73
71
|
let slug;
|
|
74
72
|
let ociImages;
|
|
@@ -93,10 +91,11 @@ export default class PipelinesDiff extends Command {
|
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
93
|
catch {
|
|
96
|
-
return { name: appName, repo: githubApp.repo
|
|
94
|
+
return { hash: undefined, name: appName, repo: githubApp.repo };
|
|
97
95
|
}
|
|
98
|
-
return { name: appName, repo: githubApp.repo
|
|
96
|
+
return { hash: commit, name: appName, repo: githubApp.repo };
|
|
99
97
|
};
|
|
98
|
+
kolkrabbi = new KolkrabbiAPI(this.config.userAgent, () => this.heroku.auth);
|
|
100
99
|
async run() {
|
|
101
100
|
const { flags } = await this.parse(PipelinesDiff);
|
|
102
101
|
const targetAppName = flags.app;
|
|
@@ -140,7 +139,7 @@ export default class PipelinesDiff extends Command {
|
|
|
140
139
|
const targetAppInfo = appInfo[0];
|
|
141
140
|
if (!targetAppInfo.repo) {
|
|
142
141
|
const command = `heroku pipelines:open ${coupling.pipeline.name}`;
|
|
143
|
-
return ux.error(`${targetAppName} does not seem to be connected to GitHub!\nRun ${color.
|
|
142
|
+
return ux.error(`${targetAppName} does not seem to be connected to GitHub!\nRun ${color.code(command)} and "Connect to GitHub".`);
|
|
144
143
|
}
|
|
145
144
|
if (!targetAppInfo.hash) {
|
|
146
145
|
return ux.error(`No release was found for ${targetAppName}, unable to diff`);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { color, hux } from '@heroku/heroku-cli-util';
|
|
1
2
|
import { Command, flags } from '@heroku-cli/command';
|
|
2
3
|
import { ux } from '@oclif/core';
|
|
3
|
-
import { hux } from '@heroku/heroku-cli-util';
|
|
4
4
|
export default class Pipelines extends Command {
|
|
5
5
|
static description = 'list pipelines you have access to';
|
|
6
6
|
static examples = [
|
|
7
|
-
'
|
|
7
|
+
color.command('heroku pipelines'),
|
|
8
8
|
];
|
|
9
9
|
static flags = {
|
|
10
10
|
json: flags.boolean({ description: 'output in json format' }),
|
|
@@ -18,7 +18,7 @@ export default class Pipelines extends Command {
|
|
|
18
18
|
else {
|
|
19
19
|
hux.styledHeader('My Pipelines');
|
|
20
20
|
for (const pipeline of pipelines) {
|
|
21
|
-
ux.stdout(pipeline.name);
|
|
21
|
+
ux.stdout(color.pipeline(pipeline.name || ''));
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Command } from '@heroku-cli/command';
|
|
2
2
|
export default class PipelinesInfo extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
pipeline: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
3
6
|
static description: string;
|
|
4
7
|
static examples: string[];
|
|
5
8
|
static flags: {
|
|
6
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
10
|
'with-owners': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
11
|
};
|
|
9
|
-
static args: {
|
|
10
|
-
pipeline: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
11
|
-
};
|
|
12
12
|
run(): Promise<void>;
|
|
13
13
|
}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
+
import { color, hux } from '@heroku/heroku-cli-util';
|
|
1
2
|
import { Command, flags } from '@heroku-cli/command';
|
|
2
3
|
import { Args } from '@oclif/core';
|
|
3
|
-
import { hux } from '@heroku/heroku-cli-util';
|
|
4
4
|
import { listPipelineApps } from '../../lib/api.js';
|
|
5
5
|
import disambiguate from '../../lib/pipelines/disambiguate.js';
|
|
6
6
|
import renderPipeline from '../../lib/pipelines/render-pipeline.js';
|
|
7
7
|
export default class PipelinesInfo extends Command {
|
|
8
|
+
static args = {
|
|
9
|
+
pipeline: Args.string({
|
|
10
|
+
description: 'pipeline to show list of apps for',
|
|
11
|
+
required: true,
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
8
14
|
static description = 'show list of apps in a pipeline';
|
|
9
15
|
static examples = [
|
|
10
|
-
'
|
|
16
|
+
color.command('heroku pipelines:info my-pipeline'),
|
|
11
17
|
];
|
|
12
18
|
static flags = {
|
|
13
19
|
json: flags.boolean({
|
|
@@ -18,23 +24,18 @@ export default class PipelinesInfo extends Command {
|
|
|
18
24
|
hidden: true,
|
|
19
25
|
}),
|
|
20
26
|
};
|
|
21
|
-
static args = {
|
|
22
|
-
pipeline: Args.string({
|
|
23
|
-
description: 'pipeline to show list of apps for',
|
|
24
|
-
required: true,
|
|
25
|
-
}),
|
|
26
|
-
};
|
|
27
27
|
async run() {
|
|
28
28
|
const { args, flags } = await this.parse(PipelinesInfo);
|
|
29
29
|
const pipeline = await disambiguate(this.heroku, args.pipeline);
|
|
30
30
|
const pipelineApps = await listPipelineApps(this.heroku, pipeline.id);
|
|
31
31
|
if (flags.json) {
|
|
32
|
+
// eslint-disable-next-line perfectionist/sort-objects
|
|
32
33
|
hux.styledJSON({ pipeline, apps: pipelineApps });
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
36
|
await renderPipeline(this.heroku, pipeline, pipelineApps, {
|
|
36
|
-
withOwners: flags['with-owners'],
|
|
37
37
|
showOwnerWarning: true,
|
|
38
|
+
withOwners: flags['with-owners'],
|
|
38
39
|
});
|
|
39
40
|
}
|
|
40
41
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Open extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
pipeline: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { color } from '@heroku/heroku-cli-util';
|
|
2
|
+
import { Command } from '@heroku-cli/command';
|
|
3
|
+
import { Args, ux } from '@oclif/core';
|
|
4
|
+
import open from 'open';
|
|
5
|
+
import disambiguate from '../../lib/pipelines/disambiguate.js';
|
|
6
|
+
export default class Open extends Command {
|
|
7
|
+
static args = {
|
|
8
|
+
pipeline: Args.string({ description: 'name of pipeline', required: true }),
|
|
9
|
+
};
|
|
10
|
+
static description = 'open a pipeline in dashboard';
|
|
11
|
+
static examples = [color.command('heroku pipelines:open my-pipeline')];
|
|
12
|
+
async run() {
|
|
13
|
+
const { args } = await this.parse(Open);
|
|
14
|
+
const pipeline = await disambiguate(this.heroku, args.pipeline);
|
|
15
|
+
const url = `https://dashboard.heroku.com/pipelines/${pipeline.id}`;
|
|
16
|
+
ux.stdout(`Opening ${color.info(url)}...`);
|
|
17
|
+
await open(url);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Promote extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
to: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
static sleep(time: number): Promise<void>;
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { color, hux } from '@heroku/heroku-cli-util';
|
|
2
|
+
import { Command, flags } from '@heroku-cli/command';
|
|
3
|
+
import { ux } from '@oclif/core';
|
|
4
|
+
import assert from 'assert';
|
|
5
|
+
import fetch from 'node-fetch';
|
|
6
|
+
import * as Stream from 'stream';
|
|
7
|
+
import * as util from 'util';
|
|
8
|
+
import { listPipelineApps } from '../../lib/api.js';
|
|
9
|
+
import keyBy from '../../lib/pipelines/key-by.js';
|
|
10
|
+
function assertNotPromotingToSelf(source, target) {
|
|
11
|
+
assert.notStrictEqual(source, target, `Cannot promote from an app to itself: ${target}. Specify a different target app.`);
|
|
12
|
+
}
|
|
13
|
+
function findAppInPipeline(apps, target) {
|
|
14
|
+
const found = apps.find(app => (app.name === target) || (app.id === target));
|
|
15
|
+
assert(found, `Cannot find app ${color.app(target)}`);
|
|
16
|
+
return found;
|
|
17
|
+
}
|
|
18
|
+
const PROMOTION_ORDER = ['development', 'staging', 'production'];
|
|
19
|
+
const wait = (ms = 100) => new Promise(resolve => setTimeout(resolve, ms));
|
|
20
|
+
function isComplete(promotionTarget) {
|
|
21
|
+
return promotionTarget.status !== 'pending';
|
|
22
|
+
}
|
|
23
|
+
function isSucceeded(promotionTarget) {
|
|
24
|
+
return promotionTarget.status === 'succeeded';
|
|
25
|
+
}
|
|
26
|
+
function isFailed(promotionTarget) {
|
|
27
|
+
return promotionTarget.status === 'failed';
|
|
28
|
+
}
|
|
29
|
+
function pollPromotionStatus(heroku, id, needsReleaseCommand) {
|
|
30
|
+
return heroku.get(`/pipeline-promotions/${id}/promotion-targets`).then(({ body: targets }) => {
|
|
31
|
+
if (targets.every(isComplete)) {
|
|
32
|
+
return targets;
|
|
33
|
+
}
|
|
34
|
+
//
|
|
35
|
+
// With only one target, we can return as soon as the release is created.
|
|
36
|
+
// The command will then read the release phase output
|
|
37
|
+
//
|
|
38
|
+
// `needsReleaseCommand` allows us to keep polling, as it can take a few
|
|
39
|
+
// seconds to get the release to succeeded after the release command
|
|
40
|
+
// finished.
|
|
41
|
+
//
|
|
42
|
+
if (needsReleaseCommand && targets.length === 1 && targets[0].release !== null) {
|
|
43
|
+
return targets;
|
|
44
|
+
}
|
|
45
|
+
return wait(1000).then(pollPromotionStatus.bind(null, heroku, id, needsReleaseCommand));
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async function getCoupling(heroku, app) {
|
|
49
|
+
ux.stdout('Fetching app info...');
|
|
50
|
+
const { body: coupling } = await heroku.get(`/apps/${app}/pipeline-couplings`);
|
|
51
|
+
return coupling;
|
|
52
|
+
}
|
|
53
|
+
async function promote(heroku, label, id, sourceAppId, targetApps, secondFactor) {
|
|
54
|
+
const options = {
|
|
55
|
+
body: {
|
|
56
|
+
pipeline: { id },
|
|
57
|
+
source: { app: { id: sourceAppId } },
|
|
58
|
+
targets: targetApps.map(app => ({ app: { id: app.id } })),
|
|
59
|
+
},
|
|
60
|
+
headers: {},
|
|
61
|
+
};
|
|
62
|
+
if (secondFactor) {
|
|
63
|
+
options.headers = { 'Heroku-Two-Factor-Code': secondFactor };
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
ux.stdout(`${label}...`);
|
|
67
|
+
const { body: promotions } = await heroku.post('/pipeline-promotions', options);
|
|
68
|
+
return promotions;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!error.body || error.body.id !== 'two_factor') {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
const secondFactor = await heroku.twoFactorPrompt();
|
|
75
|
+
return promote(heroku, label, id, sourceAppId, targetApps, secondFactor);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function assertValidPromotion(app, source, target) {
|
|
79
|
+
if (!target || PROMOTION_ORDER.indexOf(source) < 0) { // eslint-disable-line unicorn/prefer-includes
|
|
80
|
+
throw new Error(`Cannot promote ${app} from '${source}' stage`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function assertApps(app, targetApps, targetStage) {
|
|
84
|
+
if (targetApps.length === 0) {
|
|
85
|
+
throw new Error(`Cannot promote from ${color.app(app)} as there are no downstream apps in ${targetStage} stage`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async function getRelease(heroku, app, releaseId) {
|
|
89
|
+
ux.stdout('Fetching release info...');
|
|
90
|
+
const { body: release } = await heroku.get(`/apps/${app}/releases/${releaseId}`);
|
|
91
|
+
return release;
|
|
92
|
+
}
|
|
93
|
+
async function streamReleaseCommand(heroku, targets, promotion) {
|
|
94
|
+
if (targets.length !== 1 || targets.every(isComplete)) {
|
|
95
|
+
return pollPromotionStatus(heroku, promotion.id, false);
|
|
96
|
+
}
|
|
97
|
+
const target = targets[0];
|
|
98
|
+
const release = await getRelease(heroku, target.app.id, target.release.id);
|
|
99
|
+
if (!release.output_stream_url) {
|
|
100
|
+
return pollPromotionStatus(heroku, promotion.id, false);
|
|
101
|
+
}
|
|
102
|
+
ux.stdout('Running release command...');
|
|
103
|
+
async function streamReleaseOutput(releaseStreamUrl) {
|
|
104
|
+
const finished = util.promisify(Stream.finished);
|
|
105
|
+
const fetchResponse = await fetch(releaseStreamUrl);
|
|
106
|
+
if (fetchResponse.status >= 400) {
|
|
107
|
+
throw new Error('stream release output not available');
|
|
108
|
+
}
|
|
109
|
+
fetchResponse.body.pipe(process.stdout);
|
|
110
|
+
await finished(fetchResponse.body);
|
|
111
|
+
}
|
|
112
|
+
async function retry(maxAttempts, fn) {
|
|
113
|
+
let currentAttempt = 0;
|
|
114
|
+
while (true) {
|
|
115
|
+
try {
|
|
116
|
+
await fn();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
if (++currentAttempt === maxAttempts) {
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
await Promote.sleep(1000);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
await retry(100, () => streamReleaseOutput(release.output_stream_url));
|
|
128
|
+
return pollPromotionStatus(heroku, promotion.id, false);
|
|
129
|
+
}
|
|
130
|
+
export default class Promote extends Command {
|
|
131
|
+
static description = 'promote the latest release of this app to its downstream app(s)';
|
|
132
|
+
static examples = [
|
|
133
|
+
color.command('heroku pipelines:promote -a my-app-staging'),
|
|
134
|
+
];
|
|
135
|
+
static flags = {
|
|
136
|
+
app: flags.app({
|
|
137
|
+
required: true,
|
|
138
|
+
}),
|
|
139
|
+
remote: flags.remote(),
|
|
140
|
+
to: flags.string({
|
|
141
|
+
char: 't',
|
|
142
|
+
description: 'comma separated list of apps to promote to',
|
|
143
|
+
}),
|
|
144
|
+
};
|
|
145
|
+
static sleep(time) {
|
|
146
|
+
return new Promise(resolve => setTimeout(resolve, time));
|
|
147
|
+
}
|
|
148
|
+
async run() {
|
|
149
|
+
const { flags } = await this.parse(Promote);
|
|
150
|
+
const appNameOrId = flags.app;
|
|
151
|
+
const coupling = await getCoupling(this.heroku, appNameOrId);
|
|
152
|
+
ux.stdout(`Fetching apps from ${color.pipeline(coupling.pipeline.name)}...`);
|
|
153
|
+
const allApps = await listPipelineApps(this.heroku, coupling.pipeline.id);
|
|
154
|
+
const sourceStage = coupling.stage;
|
|
155
|
+
let promotionActionName = '';
|
|
156
|
+
let targetApps = [];
|
|
157
|
+
if (flags.to) {
|
|
158
|
+
// The user specified a specific set of apps they want to target
|
|
159
|
+
// We don't have to infer the apps or the stage they want to promote to
|
|
160
|
+
// Strip out any empty app names due to something like a trailing comma
|
|
161
|
+
const targetAppNames = flags.to.split(',').filter((appName) => appName.length > 0);
|
|
162
|
+
// Now let's make sure that we can find every target app they specified
|
|
163
|
+
// The only requirement is that the app be in this pipeline. They can be at any stage.
|
|
164
|
+
targetApps = targetAppNames.reduce((acc, targetAppNameOrId) => {
|
|
165
|
+
assertNotPromotingToSelf(appNameOrId, targetAppNameOrId);
|
|
166
|
+
const app = findAppInPipeline(allApps, targetAppNameOrId);
|
|
167
|
+
if (app) {
|
|
168
|
+
acc.push(app);
|
|
169
|
+
}
|
|
170
|
+
return acc;
|
|
171
|
+
}, []);
|
|
172
|
+
promotionActionName = `Starting promotion to apps: ${targetAppNames.toString()}`;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
const targetStage = PROMOTION_ORDER[PROMOTION_ORDER.indexOf(sourceStage) + 1];
|
|
176
|
+
assertValidPromotion(appNameOrId, sourceStage, targetStage);
|
|
177
|
+
targetApps = allApps.filter(app => app.pipelineCoupling.stage === targetStage);
|
|
178
|
+
assertApps(appNameOrId, targetApps, targetStage);
|
|
179
|
+
promotionActionName = `Starting promotion to ${targetStage}`;
|
|
180
|
+
}
|
|
181
|
+
const promotion = await promote(this.heroku, promotionActionName, coupling.pipeline.id, coupling.app.id, targetApps);
|
|
182
|
+
const pollLoop = pollPromotionStatus(this.heroku, promotion.id, true);
|
|
183
|
+
ux.stdout('Waiting for promotion to complete...');
|
|
184
|
+
let promotionTargets = await pollLoop;
|
|
185
|
+
try {
|
|
186
|
+
promotionTargets = await streamReleaseCommand(this.heroku, promotionTargets, promotion);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
ux.error(error);
|
|
190
|
+
}
|
|
191
|
+
const appsByID = keyBy(allApps, 'id');
|
|
192
|
+
const styledTargets = promotionTargets.reduce((memo, target) => {
|
|
193
|
+
const app = appsByID[target.app.id];
|
|
194
|
+
const details = [target.status];
|
|
195
|
+
if (isFailed(target)) {
|
|
196
|
+
details.push(target.error_message);
|
|
197
|
+
}
|
|
198
|
+
memo[app.name] = details;
|
|
199
|
+
return memo;
|
|
200
|
+
}, {});
|
|
201
|
+
if (promotionTargets.every(isSucceeded)) {
|
|
202
|
+
ux.stdout('\nPromotion successful');
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
ux.warn('\nPromotion to some apps failed');
|
|
206
|
+
}
|
|
207
|
+
hux.styledObject(styledTargets);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class PipelinesRemove extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { color } from '@heroku/heroku-cli-util';
|
|
2
|
+
import { Command, flags } from '@heroku-cli/command';
|
|
3
|
+
import { ux } from '@oclif/core';
|
|
4
|
+
import { removeCoupling } from '../../lib/api.js';
|
|
5
|
+
export default class PipelinesRemove extends Command {
|
|
6
|
+
static description = 'remove this app from its pipeline';
|
|
7
|
+
static examples = [
|
|
8
|
+
color.command('heroku pipelines:remove -a my-app'),
|
|
9
|
+
];
|
|
10
|
+
static flags = {
|
|
11
|
+
app: flags.app({ required: true }),
|
|
12
|
+
remote: flags.remote(),
|
|
13
|
+
};
|
|
14
|
+
async run() {
|
|
15
|
+
const { flags: { app } } = await this.parse(PipelinesRemove);
|
|
16
|
+
ux.action.start(`Removing ${color.app(app)}`);
|
|
17
|
+
await removeCoupling(this.heroku, app);
|
|
18
|
+
ux.action.stop();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class PipelinesRename extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
pipeline: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static description: string;
|
|
8
|
+
static examples: string[];
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { color } from '@heroku/heroku-cli-util';
|
|
2
|
+
import { Command } from '@heroku-cli/command';
|
|
3
|
+
import { Args, ux } from '@oclif/core';
|
|
4
|
+
import { updatePipeline } from '../../lib/api.js';
|
|
5
|
+
import disambiguate from '../../lib/pipelines/disambiguate.js';
|
|
6
|
+
export default class PipelinesRename extends Command {
|
|
7
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
8
|
+
// the order of args is important for the command to work
|
|
9
|
+
// TODO: change pipeline to be a flag, which would be consistent with apps:rename
|
|
10
|
+
static args = {
|
|
11
|
+
pipeline: Args.string({
|
|
12
|
+
description: 'name of pipeline to rename',
|
|
13
|
+
required: true,
|
|
14
|
+
}),
|
|
15
|
+
name: Args.string({
|
|
16
|
+
description: 'new name of pipeline',
|
|
17
|
+
required: true,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
/* eslint-enable perfectionist/sort-objects */
|
|
21
|
+
static description = 'rename a pipeline';
|
|
22
|
+
static examples = [
|
|
23
|
+
color.command('heroku pipelines:rename my-pipeline new-pipeline-name'),
|
|
24
|
+
];
|
|
25
|
+
async run() {
|
|
26
|
+
const { args } = await this.parse(PipelinesRename);
|
|
27
|
+
const pipeline = await disambiguate(this.heroku, args.pipeline);
|
|
28
|
+
ux.action.start(`Renaming ${color.pipeline(pipeline.name)} pipeline to ${color.info(args.name)}`);
|
|
29
|
+
await updatePipeline(this.heroku, pipeline.id, {
|
|
30
|
+
name: args.name,
|
|
31
|
+
});
|
|
32
|
+
ux.action.stop();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
import openBrowser from 'open';
|
|
3
|
+
export default class Setup extends Command {
|
|
4
|
+
static args: {
|
|
5
|
+
name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
6
|
+
repo: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static description: string;
|
|
9
|
+
static examples: string[];
|
|
10
|
+
static flags: {
|
|
11
|
+
team: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
static open: typeof openBrowser;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { color } from '@heroku/heroku-cli-util';
|
|
2
|
+
import { Command, flags } from '@heroku-cli/command';
|
|
3
|
+
import { Args, ux } from '@oclif/core';
|
|
4
|
+
import debug from 'debug';
|
|
5
|
+
import openBrowser from 'open';
|
|
6
|
+
import { createPipeline, getAccountInfo, getTeam } from '../../lib/api.js';
|
|
7
|
+
import GitHubAPI from '../../lib/pipelines/github-api.js';
|
|
8
|
+
import KolkrabbiAPI from '../../lib/pipelines/kolkrabbi-api.js';
|
|
9
|
+
import createApps from '../../lib/pipelines/setup/create-apps.js';
|
|
10
|
+
import getCISettings from '../../lib/pipelines/setup/get-ci-settings.js';
|
|
11
|
+
import getGitHubToken from '../../lib/pipelines/setup/get-github-token.js';
|
|
12
|
+
import getNameAndRepo from '../../lib/pipelines/setup/get-name-and-repo.js';
|
|
13
|
+
import getRepo from '../../lib/pipelines/setup/get-repo.js';
|
|
14
|
+
import getSettings from '../../lib/pipelines/setup/get-settings.js';
|
|
15
|
+
import pollAppSetups from '../../lib/pipelines/setup/poll-app-setups.js';
|
|
16
|
+
import setupPipeline from '../../lib/pipelines/setup/setup-pipeline.js';
|
|
17
|
+
import { STAGING_APP_INDICATOR, nameAndRepo } from '../../lib/pipelines/setup/validate.js';
|
|
18
|
+
const pipelineDebug = debug('pipelines:setup');
|
|
19
|
+
export default class Setup extends Command {
|
|
20
|
+
static args = {
|
|
21
|
+
name: Args.string({
|
|
22
|
+
description: 'name of pipeline',
|
|
23
|
+
required: false,
|
|
24
|
+
}),
|
|
25
|
+
repo: Args.string({
|
|
26
|
+
description: 'a GitHub repository to connect the pipeline to',
|
|
27
|
+
required: false,
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
30
|
+
static description = 'bootstrap a new pipeline with common settings and create a production and staging app (requires a fully formed app.json in the repo)';
|
|
31
|
+
static examples = [color.command('heroku pipelines:setup my-pipeline githuborg/reponame -t my-team')];
|
|
32
|
+
static flags = {
|
|
33
|
+
team: flags.team({
|
|
34
|
+
description: 'the team to assign pipeline ownership to (defaults to current user)',
|
|
35
|
+
}),
|
|
36
|
+
yes: flags.boolean({
|
|
37
|
+
char: 'y',
|
|
38
|
+
description: 'accept all default settings without prompting',
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
static open = openBrowser;
|
|
42
|
+
async run() {
|
|
43
|
+
const { args, flags } = await this.parse(Setup);
|
|
44
|
+
const errors = nameAndRepo(args);
|
|
45
|
+
if (errors.length > 0) {
|
|
46
|
+
this.error(errors.join(', '));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const kolkrabbi = new KolkrabbiAPI(this.config.userAgent, () => this.heroku.auth);
|
|
50
|
+
const github = new GitHubAPI(this.config.userAgent, await getGitHubToken(kolkrabbi));
|
|
51
|
+
const { team, yes } = flags;
|
|
52
|
+
const { name: pipelineName, repo: repoName } = await getNameAndRepo(args);
|
|
53
|
+
const stagingAppName = pipelineName + STAGING_APP_INDICATOR;
|
|
54
|
+
const repo = await getRepo(github, repoName);
|
|
55
|
+
const settings = await getSettings(yes, repo.default_branch);
|
|
56
|
+
const ciSettings = await getCISettings(yes, team);
|
|
57
|
+
const ownerType = team ? 'team' : 'user';
|
|
58
|
+
// If team or org is not specified, we assign ownership to the user creating
|
|
59
|
+
const { body: { id: ownerID }, } = team ? await getTeam(this.heroku, team) : await getAccountInfo(this.heroku);
|
|
60
|
+
const owner = { id: ownerID, type: ownerType };
|
|
61
|
+
ux.action.start('Creating pipeline');
|
|
62
|
+
const { body: pipeline } = await createPipeline(this.heroku, pipelineName, owner);
|
|
63
|
+
ux.action.stop();
|
|
64
|
+
ux.action.start('Linking to repo');
|
|
65
|
+
await kolkrabbi.createPipelineRepository(pipeline.id, repo.id);
|
|
66
|
+
ux.action.stop();
|
|
67
|
+
const archiveURL = await kolkrabbi.getArchiveURL(repoName, repo.default_branch);
|
|
68
|
+
const appSetupsResult = await createApps(this.heroku, archiveURL, pipeline, pipelineName, stagingAppName, team);
|
|
69
|
+
const appSetups = appSetupsResult.map((result) => result.body);
|
|
70
|
+
ux.action.start(`Creating production and staging apps (${color.app(pipelineName)} and ${color.app(stagingAppName)})`);
|
|
71
|
+
await pollAppSetups(this.heroku, appSetups);
|
|
72
|
+
ux.action.stop();
|
|
73
|
+
const stagingApp = appSetups.find((appSetup) => appSetup.app.name === stagingAppName).app;
|
|
74
|
+
const setup = setupPipeline(kolkrabbi, stagingApp.id, settings, pipeline.id, ciSettings);
|
|
75
|
+
ux.action.start('Configuring pipeline');
|
|
76
|
+
try {
|
|
77
|
+
await setup;
|
|
78
|
+
await Setup.open(`https://dashboard.heroku.com/pipelines/${pipeline.id}`);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
pipelineDebug(error);
|
|
82
|
+
ux.error(error);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
ux.action.stop();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class PipelinesTransfer extends Command {
|
|
3
|
+
static args: {
|
|
4
|
+
owner: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
confirm: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
pipeline: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|