heroku 9.0.0-dev.0 → 9.1.0-beta.0
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 +6 -11
- package/lib/commands/access/add.d.ts +14 -0
- package/lib/commands/access/add.js +55 -0
- package/lib/commands/access/index.d.ts +11 -0
- package/lib/commands/access/index.js +86 -0
- package/lib/commands/access/remove.d.ts +12 -0
- package/lib/commands/access/remove.js +25 -0
- package/lib/commands/access/update.d.ts +14 -0
- package/lib/commands/access/update.js +39 -0
- package/lib/commands/addons/attach.d.ts +16 -0
- package/lib/commands/addons/attach.js +51 -0
- package/lib/commands/addons/create.d.ts +20 -0
- package/lib/commands/addons/create.js +96 -0
- package/lib/commands/addons/destroy.d.ts +19 -0
- package/lib/commands/addons/destroy.js +61 -0
- package/lib/commands/addons/detach.d.ts +13 -0
- package/lib/commands/addons/detach.js +31 -0
- package/lib/commands/addons/docs.d.ts +14 -0
- package/lib/commands/addons/docs.js +36 -0
- package/lib/commands/addons/index.d.ts +16 -0
- package/lib/commands/addons/index.js +246 -0
- package/lib/commands/addons/info.d.ts +14 -0
- package/lib/commands/addons/info.js +44 -0
- package/lib/commands/addons/open.d.ts +75 -0
- package/lib/commands/addons/open.js +87 -0
- package/lib/commands/addons/plans.d.ts +12 -0
- package/lib/commands/addons/plans.js +47 -0
- package/lib/commands/addons/rename.d.ts +10 -0
- package/lib/commands/addons/rename.js +20 -0
- package/lib/commands/addons/services.d.ts +9 -0
- package/lib/commands/addons/services.js +34 -0
- package/lib/commands/addons/upgrade.d.ts +28 -0
- package/lib/commands/addons/upgrade.js +145 -0
- package/lib/commands/addons/wait.d.ts +14 -0
- package/lib/commands/addons/wait.js +70 -0
- package/lib/commands/apps/create.d.ts +28 -0
- package/lib/commands/apps/create.js +201 -0
- package/lib/commands/apps/destroy.d.ts +15 -0
- package/lib/commands/apps/destroy.js +47 -0
- package/lib/commands/apps/errors.d.ts +13 -0
- package/lib/commands/apps/errors.js +120 -0
- package/lib/commands/apps/favorites/add.d.ts +2 -1
- package/lib/commands/apps/favorites/add.js +1 -0
- package/lib/commands/apps/favorites/remove.d.ts +2 -1
- package/lib/commands/apps/favorites/remove.js +1 -0
- package/lib/commands/apps/index.d.ts +16 -0
- package/lib/commands/apps/index.js +119 -0
- package/lib/commands/apps/info.d.ts +19 -0
- package/lib/commands/apps/info.js +162 -0
- package/lib/commands/apps/join.d.ts +11 -0
- package/lib/commands/apps/join.js +25 -0
- package/lib/commands/apps/leave.d.ts +12 -0
- package/lib/commands/apps/leave.js +25 -0
- package/lib/commands/apps/lock.d.ts +11 -0
- package/lib/commands/apps/lock.js +30 -0
- package/lib/commands/apps/open.d.ts +15 -0
- package/lib/commands/apps/open.js +30 -0
- package/lib/commands/apps/rename.d.ts +16 -0
- package/lib/commands/apps/rename.js +51 -0
- package/lib/commands/apps/stacks/index.d.ts +3 -2
- package/lib/commands/apps/stacks/index.js +2 -1
- package/lib/commands/apps/stacks/set.d.ts +4 -4
- package/lib/commands/apps/stacks/set.js +1 -1
- package/lib/commands/apps/transfer.d.ts +17 -0
- package/lib/commands/apps/transfer.js +91 -0
- package/lib/commands/apps/unlock.d.ts +11 -0
- package/lib/commands/apps/unlock.js +30 -0
- package/lib/commands/auth/token.js +2 -1
- package/lib/commands/authorizations/create.d.ts +3 -3
- package/lib/commands/authorizations/create.js +5 -1
- package/lib/commands/authorizations/info.d.ts +1 -1
- package/lib/commands/authorizations/info.js +5 -1
- package/lib/commands/authorizations/revoke.d.ts +1 -1
- package/lib/commands/authorizations/revoke.js +5 -1
- package/lib/commands/authorizations/rotate.d.ts +1 -1
- package/lib/commands/authorizations/rotate.js +5 -1
- package/lib/commands/authorizations/update.d.ts +4 -4
- package/lib/commands/authorizations/update.js +5 -1
- package/lib/commands/autocomplete/doctor.js +2 -2
- package/lib/commands/autocomplete/options.d.ts +2 -2
- package/lib/commands/autocomplete/options.js +2 -2
- package/lib/commands/autocomplete/script.d.ts +1 -1
- package/lib/commands/buildpacks/add.d.ts +4 -4
- package/lib/commands/buildpacks/clear.d.ts +2 -2
- package/lib/commands/buildpacks/index.d.ts +2 -2
- package/lib/commands/buildpacks/info.d.ts +1 -1
- package/lib/commands/buildpacks/remove.d.ts +4 -4
- package/lib/commands/buildpacks/search.d.ts +4 -4
- package/lib/commands/buildpacks/set.d.ts +4 -4
- package/lib/commands/buildpacks/versions.d.ts +1 -1
- package/lib/commands/certs/add.d.ts +16 -0
- package/lib/commands/certs/add.js +98 -0
- package/lib/commands/certs/auto/disable.d.ts +11 -0
- package/lib/commands/certs/auto/disable.js +34 -0
- package/lib/commands/certs/auto/enable.d.ts +11 -0
- package/lib/commands/certs/auto/enable.js +51 -0
- package/lib/commands/certs/auto/index.d.ts +12 -0
- package/lib/commands/certs/auto/index.js +94 -0
- package/lib/commands/certs/auto/refresh.d.ts +10 -0
- package/lib/commands/certs/auto/refresh.js +19 -0
- package/lib/commands/certs/generate.d.ts +26 -0
- package/lib/commands/certs/generate.js +111 -0
- package/lib/commands/certs/index.d.ts +10 -0
- package/lib/commands/certs/index.js +26 -0
- package/lib/commands/certs/info.d.ts +13 -0
- package/lib/commands/certs/info.js +43 -0
- package/lib/commands/certs/remove.d.ts +13 -0
- package/lib/commands/certs/remove.js +32 -0
- package/lib/commands/certs/update.d.ts +18 -0
- package/lib/commands/certs/update.js +54 -0
- package/lib/commands/ci/config/get.d.ts +4 -3
- package/lib/commands/ci/config/get.js +3 -2
- package/lib/commands/ci/config/index.d.ts +3 -2
- package/lib/commands/ci/config/index.js +3 -2
- package/lib/commands/ci/config/set.d.ts +3 -2
- package/lib/commands/ci/config/set.js +2 -1
- package/lib/commands/ci/config/unset.d.ts +3 -3
- package/lib/commands/ci/config/unset.js +3 -3
- package/lib/commands/ci/debug.d.ts +2 -2
- package/lib/commands/ci/index.d.ts +3 -2
- package/lib/commands/ci/index.js +1 -0
- package/lib/commands/ci/info.d.ts +5 -4
- package/lib/commands/ci/info.js +1 -0
- package/lib/commands/ci/last.d.ts +4 -3
- package/lib/commands/ci/last.js +1 -0
- package/lib/commands/ci/open.d.ts +3 -2
- package/lib/commands/ci/open.js +1 -0
- package/lib/commands/ci/rerun.d.ts +4 -3
- package/lib/commands/ci/rerun.js +1 -0
- package/lib/commands/ci/run.d.ts +2 -2
- package/lib/commands/clients/create.d.ts +2 -2
- package/lib/commands/clients/destroy.d.ts +1 -1
- package/lib/commands/clients/info.d.ts +1 -1
- package/lib/commands/clients/rotate.d.ts +1 -1
- package/lib/commands/clients/update.d.ts +3 -3
- package/lib/commands/config/edit.d.ts +3 -3
- package/lib/commands/config/get.d.ts +3 -3
- package/lib/commands/config/index.d.ts +2 -2
- package/lib/commands/config/set.d.ts +12 -0
- package/lib/commands/config/set.js +60 -0
- package/lib/commands/config/unset.d.ts +2 -2
- package/lib/commands/console.d.ts +4 -4
- package/lib/commands/container/index.d.ts +6 -0
- package/lib/commands/container/index.js +13 -0
- package/lib/commands/container/login.d.ts +9 -0
- package/lib/commands/container/login.js +57 -0
- package/lib/commands/container/logout.d.ts +9 -0
- package/lib/commands/container/logout.js +37 -0
- package/lib/commands/container/pull.d.ts +14 -0
- package/lib/commands/container/pull.js +43 -0
- package/lib/commands/container/push.d.ts +16 -0
- package/lib/commands/container/push.js +103 -0
- package/lib/commands/container/release.d.ts +14 -0
- package/lib/commands/container/release.js +91 -0
- package/lib/commands/container/rm.d.ts +13 -0
- package/lib/commands/container/rm.js +39 -0
- package/lib/commands/container/run.d.ts +15 -0
- package/lib/commands/container/run.js +66 -0
- package/lib/commands/dashboard.d.ts +7 -0
- package/lib/commands/dashboard.js +164 -0
- package/lib/commands/domains/add.d.ts +4 -4
- package/lib/commands/domains/clear.d.ts +2 -2
- package/lib/commands/domains/index.d.ts +14 -10
- package/lib/commands/domains/index.js +47 -3
- package/lib/commands/domains/info.d.ts +3 -3
- package/lib/commands/domains/remove.d.ts +3 -3
- package/lib/commands/domains/update.d.ts +4 -4
- package/lib/commands/domains/wait.d.ts +3 -3
- package/lib/commands/drains/add.d.ts +12 -0
- package/lib/commands/drains/add.js +23 -0
- package/lib/commands/drains/index.d.ts +11 -0
- package/lib/commands/drains/index.js +50 -0
- package/lib/commands/drains/remove.d.ts +13 -0
- package/lib/commands/drains/remove.js +22 -0
- package/lib/commands/features/disable.d.ts +12 -0
- package/lib/commands/features/disable.js +30 -0
- package/lib/commands/features/enable.d.ts +12 -0
- package/lib/commands/features/enable.js +29 -0
- package/lib/commands/features/index.d.ts +10 -0
- package/lib/commands/features/index.js +37 -0
- package/lib/commands/features/info.d.ts +13 -0
- package/lib/commands/features/info.js +33 -0
- package/lib/commands/git/clone.d.ts +3 -3
- package/lib/commands/git/credentials.d.ts +1 -1
- package/lib/commands/git/remote.d.ts +2 -2
- package/lib/commands/keys/add.d.ts +14 -0
- package/lib/commands/keys/add.js +101 -0
- package/lib/commands/keys/clear.d.ts +5 -0
- package/lib/commands/keys/clear.js +17 -0
- package/lib/commands/keys/index.d.ts +9 -0
- package/lib/commands/keys/index.js +36 -0
- package/lib/commands/keys/remove.d.ts +9 -0
- package/lib/commands/keys/remove.js +29 -0
- package/lib/commands/labs/enable.d.ts +13 -0
- package/lib/commands/labs/enable.js +47 -0
- package/lib/commands/labs/index.d.ts +11 -0
- package/lib/commands/labs/index.js +71 -0
- package/lib/commands/labs/info.d.ts +14 -0
- package/lib/commands/labs/info.js +49 -0
- package/lib/commands/local/index.d.ts +5 -5
- package/lib/commands/local/index.js +8 -3
- package/lib/commands/local/run.d.ts +2 -2
- package/lib/commands/local/run.js +8 -3
- package/lib/commands/logs.d.ts +6 -6
- package/lib/commands/maintenance/index.d.ts +10 -0
- package/lib/commands/maintenance/index.js +19 -0
- package/lib/commands/maintenance/off.d.ts +10 -0
- package/lib/commands/maintenance/off.js +20 -0
- package/lib/commands/maintenance/on.d.ts +10 -0
- package/lib/commands/maintenance/on.js +20 -0
- package/lib/commands/members/add.d.ts +13 -0
- package/lib/commands/members/add.js +33 -0
- package/lib/commands/members/index.d.ts +12 -0
- package/lib/commands/members/index.js +76 -0
- package/lib/commands/members/remove.d.ts +10 -0
- package/lib/commands/members/remove.js +58 -0
- package/lib/commands/members/set.d.ts +11 -0
- package/lib/commands/members/set.js +21 -0
- package/lib/commands/notifications/index.d.ts +13 -0
- package/lib/commands/notifications/index.js +62 -0
- package/lib/commands/orgs/index.d.ts +11 -0
- package/lib/commands/orgs/index.js +27 -0
- package/lib/commands/orgs/open.d.ts +10 -0
- package/lib/commands/orgs/open.js +24 -0
- package/lib/commands/pg/backups/cancel.d.ts +15 -0
- package/lib/commands/pg/backups/cancel.js +49 -0
- package/lib/commands/pg/backups/capture.d.ts +15 -0
- package/lib/commands/pg/backups/capture.js +65 -0
- package/lib/commands/pg/backups/delete.d.ts +15 -0
- package/lib/commands/pg/backups/delete.js +38 -0
- package/lib/commands/pg/backups/download.d.ts +14 -0
- package/lib/commands/pg/backups/download.js +58 -0
- package/lib/commands/pg/backups/index.d.ts +20 -0
- package/lib/commands/pg/backups/index.js +129 -0
- package/lib/commands/pg/backups/info.d.ts +17 -0
- package/lib/commands/pg/backups/info.js +92 -0
- package/lib/commands/pg/backups/restore.d.ts +19 -0
- package/lib/commands/pg/backups/restore.js +107 -0
- package/lib/commands/pg/backups/schedule.d.ts +21 -0
- package/lib/commands/pg/backups/schedule.js +82 -0
- package/lib/commands/pg/backups/schedules.d.ts +10 -0
- package/lib/commands/pg/backups/schedules.js +31 -0
- package/lib/commands/pg/backups/unschedule.d.ts +13 -0
- package/lib/commands/pg/backups/unschedule.js +44 -0
- package/lib/commands/pg/backups/url.d.ts +13 -0
- package/lib/commands/pg/backups/url.js +41 -0
- package/lib/commands/pg/bloat.d.ts +13 -0
- package/lib/commands/pg/bloat.js +87 -0
- 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 +41 -0
- package/lib/commands/pg/copy.d.ts +18 -0
- package/lib/commands/pg/copy.js +86 -0
- package/lib/commands/pg/credentials/create.d.ts +14 -0
- package/lib/commands/pg/credentials/create.js +40 -0
- package/lib/commands/pg/credentials/destroy.d.ts +16 -0
- package/lib/commands/pg/credentials/destroy.js +48 -0
- package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
- package/lib/commands/pg/credentials/repair-default.js +39 -0
- package/lib/commands/pg/credentials/rotate.d.ts +16 -0
- package/lib/commands/pg/credentials/rotate.js +82 -0
- package/lib/commands/pg/credentials/url.d.ts +14 -0
- package/lib/commands/pg/credentials/url.js +64 -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 +109 -0
- package/lib/commands/pg/info.d.ts +14 -0
- package/lib/commands/pg/info.js +92 -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 +26 -0
- package/lib/commands/pg/links/create.d.ts +15 -0
- package/lib/commands/pg/links/create.js +58 -0
- package/lib/commands/pg/links/destroy.d.ts +16 -0
- package/lib/commands/pg/links/destroy.js +42 -0
- package/lib/commands/pg/links/index.d.ts +13 -0
- package/lib/commands/pg/links/index.js +59 -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 +29 -0
- package/lib/commands/pg/maintenance/run.d.ts +14 -0
- package/lib/commands/pg/maintenance/run.js +37 -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 +97 -0
- package/lib/commands/pg/promote.d.ts +14 -0
- package/lib/commands/pg/promote.js +169 -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 +49 -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 +84 -0
- package/lib/commands/pg/reset.d.ts +15 -0
- package/lib/commands/pg/reset.js +44 -0
- package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
- package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
- package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
- package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -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 +25 -0
- package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
- package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
- package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
- package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
- package/lib/commands/pg/settings/auto-explain.js +38 -0
- package/lib/commands/pg/settings/index.d.ts +13 -0
- package/lib/commands/pg/settings/index.js +34 -0
- package/lib/commands/pg/settings/log-connections.d.ts +17 -0
- package/lib/commands/pg/settings/log-connections.js +34 -0
- package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
- package/lib/commands/pg/settings/log-lock-waits.js +31 -0
- package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
- package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
- package/lib/commands/pg/settings/log-statement.d.ts +12 -0
- package/lib/commands/pg/settings/log-statement.js +30 -0
- package/lib/commands/pg/settings/track-functions.d.ts +12 -0
- package/lib/commands/pg/settings/track-functions.js +29 -0
- package/lib/commands/pg/unfollow.d.ts +14 -0
- package/lib/commands/pg/unfollow.js +40 -0
- package/lib/commands/pg/upgrade.d.ts +15 -0
- package/lib/commands/pg/upgrade.js +58 -0
- package/lib/commands/pg/vacuum-stats.d.ts +13 -0
- package/lib/commands/pg/vacuum-stats.js +65 -0
- package/lib/commands/pg/wait.d.ts +15 -0
- package/lib/commands/pg/wait.js +79 -0
- package/lib/commands/pipelines/add.d.ts +4 -4
- package/lib/commands/pipelines/connect.d.ts +2 -2
- package/lib/commands/pipelines/connect.js +1 -1
- package/lib/commands/pipelines/create.d.ts +5 -5
- package/lib/commands/pipelines/destroy.d.ts +1 -1
- package/lib/commands/pipelines/diff.d.ts +2 -2
- package/lib/commands/pipelines/diff.js +1 -1
- package/lib/commands/pipelines/info.d.ts +1 -1
- package/lib/commands/pipelines/open.d.ts +1 -1
- package/lib/commands/pipelines/promote.d.ts +3 -3
- package/lib/commands/pipelines/remove.d.ts +2 -2
- package/lib/commands/pipelines/rename.d.ts +2 -2
- package/lib/commands/pipelines/setup.d.ts +3 -3
- package/lib/commands/pipelines/transfer.d.ts +3 -3
- package/lib/commands/pipelines/update.d.ts +3 -3
- package/lib/commands/ps/autoscale/disable.d.ts +2 -2
- package/lib/commands/ps/autoscale/enable.d.ts +5 -5
- package/lib/commands/ps/index.d.ts +15 -0
- package/lib/commands/ps/index.js +195 -0
- package/lib/commands/ps/restart.d.ts +17 -0
- package/lib/commands/ps/restart.js +38 -0
- package/lib/commands/ps/scale.d.ts +13 -0
- package/lib/commands/ps/scale.js +108 -0
- package/lib/commands/ps/stop.d.ts +17 -0
- package/lib/commands/ps/stop.js +33 -0
- package/lib/commands/ps/type.d.ts +12 -0
- package/lib/commands/ps/type.js +163 -0
- package/lib/commands/ps/wait.d.ts +4 -4
- package/lib/commands/rake.d.ts +4 -4
- package/lib/commands/redis/cli.d.ts +15 -0
- package/lib/commands/redis/cli.js +204 -0
- package/lib/commands/redis/credentials.d.ts +14 -0
- package/lib/commands/redis/credentials.js +32 -0
- package/lib/commands/redis/info.d.ts +15 -0
- package/lib/commands/redis/info.js +25 -0
- package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
- package/lib/commands/redis/keyspace-notifications.js +47 -0
- package/lib/commands/redis/maintenance.d.ts +16 -0
- package/lib/commands/redis/maintenance.js +63 -0
- package/lib/commands/redis/maxmemory.d.ts +14 -0
- package/lib/commands/redis/maxmemory.js +40 -0
- package/lib/commands/redis/promote.d.ts +13 -0
- package/lib/commands/redis/promote.js +39 -0
- package/lib/commands/redis/stats-reset.d.ts +14 -0
- package/lib/commands/redis/stats-reset.js +36 -0
- package/lib/commands/redis/timeout.d.ts +14 -0
- package/lib/commands/redis/timeout.js +35 -0
- package/lib/commands/redis/upgrade.d.ts +15 -0
- package/lib/commands/redis/upgrade.js +37 -0
- package/lib/commands/redis/wait.d.ts +14 -0
- package/lib/commands/redis/wait.js +60 -0
- package/lib/commands/releases/index.d.ts +14 -0
- package/lib/commands/releases/index.js +124 -0
- package/lib/commands/releases/info.d.ts +15 -0
- package/lib/commands/releases/info.js +56 -0
- package/lib/commands/releases/output.d.ts +13 -0
- package/lib/commands/releases/output.js +37 -0
- package/lib/commands/releases/rollback.d.ts +14 -0
- package/lib/commands/releases/rollback.js +48 -0
- package/lib/commands/reviewapps/disable.d.ts +3 -3
- package/lib/commands/reviewapps/enable.d.ts +3 -3
- package/lib/commands/run/detached.d.ts +7 -8
- package/lib/commands/run/detached.js +16 -20
- package/lib/commands/run/index.d.ts +10 -11
- package/lib/commands/run/index.js +16 -17
- package/lib/commands/run/inside.d.ts +5 -7
- package/lib/commands/run/inside.js +10 -14
- package/lib/commands/sessions/destroy.d.ts +1 -1
- package/lib/commands/spaces/create.d.ts +22 -0
- package/lib/commands/spaces/create.js +73 -0
- package/lib/commands/spaces/destroy.d.ts +14 -0
- package/lib/commands/spaces/destroy.js +49 -0
- package/lib/commands/spaces/drains/get.d.ts +12 -0
- package/lib/commands/spaces/drains/get.js +27 -0
- package/lib/commands/spaces/drains/set.d.ts +14 -0
- package/lib/commands/spaces/drains/set.js +29 -0
- package/lib/commands/spaces/hosts.d.ts +14 -0
- package/lib/commands/spaces/hosts.js +37 -0
- package/lib/commands/spaces/index.d.ts +16 -0
- package/lib/commands/spaces/index.js +55 -0
- package/lib/commands/spaces/info.d.ts +14 -0
- package/lib/commands/spaces/info.js +47 -0
- package/lib/commands/spaces/peerings/accept.d.ts +15 -0
- package/lib/commands/spaces/peerings/accept.js +36 -0
- package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
- package/lib/commands/spaces/peerings/destroy.js +45 -0
- package/lib/commands/spaces/peerings/index.d.ts +13 -0
- package/lib/commands/spaces/peerings/index.js +33 -0
- package/lib/commands/spaces/peerings/info.d.ts +15 -0
- package/lib/commands/spaces/peerings/info.js +59 -0
- package/lib/commands/spaces/ps.d.ts +15 -0
- package/lib/commands/spaces/ps.js +82 -0
- package/lib/commands/spaces/rename.d.ts +11 -0
- package/lib/commands/spaces/rename.js +26 -0
- package/lib/commands/spaces/topology.d.ts +32 -0
- package/lib/commands/spaces/topology.js +89 -0
- package/lib/commands/spaces/transfer.d.ts +11 -0
- package/lib/commands/spaces/transfer.js +35 -0
- package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
- package/lib/commands/spaces/trusted-ips/add.js +43 -0
- package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
- package/lib/commands/spaces/trusted-ips/index.js +52 -0
- package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
- package/lib/commands/spaces/trusted-ips/remove.js +44 -0
- package/lib/commands/spaces/vpn/config.d.ts +14 -0
- package/lib/commands/spaces/vpn/config.js +54 -0
- package/lib/commands/spaces/vpn/connect.d.ts +15 -0
- package/lib/commands/spaces/vpn/connect.js +48 -0
- package/lib/commands/spaces/vpn/connections.d.ts +17 -0
- package/lib/commands/spaces/vpn/connections.js +57 -0
- package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
- package/lib/commands/spaces/vpn/destroy.js +38 -0
- package/lib/commands/spaces/vpn/info.d.ts +16 -0
- package/lib/commands/spaces/vpn/info.js +82 -0
- package/lib/commands/spaces/vpn/update.d.ts +14 -0
- package/lib/commands/spaces/vpn/update.js +39 -0
- package/lib/commands/spaces/vpn/wait.d.ts +16 -0
- package/lib/commands/spaces/vpn/wait.js +70 -0
- package/lib/commands/spaces/wait.d.ts +17 -0
- package/lib/commands/spaces/wait.js +89 -0
- package/lib/commands/status.js +4 -4
- package/lib/commands/teams/index.d.ts +9 -0
- package/lib/commands/teams/index.js +29 -0
- package/lib/commands/webhooks/add.d.ts +8 -8
- package/lib/commands/webhooks/deliveries/index.d.ts +4 -4
- package/lib/commands/webhooks/deliveries/info.d.ts +4 -4
- package/lib/commands/webhooks/events/index.d.ts +3 -3
- package/lib/commands/webhooks/events/info.d.ts +4 -4
- package/lib/commands/webhooks/index.d.ts +3 -3
- package/lib/commands/webhooks/info.d.ts +4 -4
- package/lib/commands/webhooks/remove.d.ts +4 -4
- package/lib/commands/webhooks/update.d.ts +9 -9
- package/lib/global_telemetry.js +10 -4
- package/lib/hooks/postrun/performance_analytics.js +5 -4
- package/lib/hooks/prerun/analytics.js +3 -0
- package/lib/lib/addons/addons_wait.d.ts +78 -0
- package/lib/lib/addons/addons_wait.js +56 -0
- package/lib/lib/addons/create_addon.d.ts +7 -0
- package/lib/lib/addons/create_addon.js +59 -0
- package/lib/lib/addons/destroy_addon.d.ts +3 -0
- package/lib/lib/addons/destroy_addon.js +48 -0
- package/lib/lib/addons/resolve.d.ts +39 -0
- package/lib/lib/addons/resolve.js +180 -0
- package/lib/lib/addons/util.d.ts +9 -0
- package/lib/lib/addons/util.js +72 -0
- package/lib/lib/apps/app-transfer.d.ts +10 -0
- package/lib/lib/apps/app-transfer.js +35 -0
- package/lib/lib/apps/error_info.d.ts +7 -0
- package/lib/lib/apps/error_info.js +185 -0
- package/lib/lib/autocomplete/base.d.ts +1 -1
- package/lib/lib/autocomplete/completions.d.ts +5 -1
- package/lib/lib/autocomplete/completions.js +6 -1
- package/lib/lib/certs/certificate_details.d.ts +2 -0
- package/lib/lib/certs/certificate_details.js +37 -0
- package/lib/lib/certs/display_table.d.ts +2 -0
- package/lib/lib/certs/display_table.js +51 -0
- package/lib/lib/certs/domains.d.ts +3 -0
- package/lib/lib/certs/domains.js +45 -0
- package/lib/lib/certs/flags.d.ts +7 -0
- package/lib/lib/certs/flags.js +42 -0
- package/lib/lib/certs/format_date.d.ts +1 -0
- package/lib/lib/certs/format_date.js +11 -0
- package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
- package/lib/lib/certs/get_cert_and_key.js +11 -0
- package/lib/lib/ci/git.d.ts +7 -1
- package/lib/lib/ci/git.js +44 -1
- package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
- package/lib/lib/ci/source.js +3 -3
- package/lib/lib/ci/test-run.js +2 -2
- package/lib/lib/config/quote.js +1 -1
- package/lib/lib/confirmCommand.d.ts +1 -0
- package/lib/lib/confirmCommand.js +23 -0
- package/lib/lib/container/debug.d.ts +2 -0
- package/lib/lib/container/debug.js +5 -0
- package/lib/lib/container/docker_helper.d.ts +24 -0
- package/lib/lib/container/docker_helper.js +168 -0
- package/lib/lib/container/helpers.d.ts +8 -0
- package/lib/lib/container/helpers.js +29 -0
- package/lib/lib/container/streamer.d.ts +1 -0
- package/lib/lib/container/streamer.js +31 -0
- package/lib/lib/domains/domains.d.ts +6 -0
- package/lib/lib/domains/domains.js +104 -0
- package/lib/lib/git/git.d.ts +3 -0
- package/lib/lib/git/git.js +22 -3
- package/lib/lib/local/run-foreman.d.ts +1 -0
- package/lib/lib/local/run-foreman.js +229 -1
- package/lib/lib/members/util.d.ts +3 -0
- package/lib/lib/members/util.js +25 -0
- package/lib/lib/members/utils.d.ts +2 -0
- package/lib/lib/members/utils.js +14 -0
- package/lib/lib/notify.d.ts +1 -0
- package/lib/lib/notify.js +23 -0
- package/lib/lib/orgs/utils.d.ts +5 -0
- package/lib/lib/orgs/utils.js +24 -0
- package/lib/lib/pg/backups.d.ts +17 -0
- package/lib/lib/pg/backups.js +164 -0
- package/lib/lib/pg/bastion.d.ts +29 -0
- package/lib/lib/pg/bastion.js +121 -0
- package/lib/lib/pg/config.d.ts +2 -0
- package/lib/lib/pg/config.js +13 -0
- package/lib/lib/pg/download.d.ts +5 -0
- package/lib/lib/pg/download.js +34 -0
- package/lib/lib/pg/fetcher.d.ts +39 -0
- package/lib/lib/pg/fetcher.js +137 -0
- package/lib/lib/pg/host.d.ts +1 -0
- package/lib/lib/pg/host.js +7 -0
- package/lib/lib/pg/psql.d.ts +48 -0
- package/lib/lib/pg/psql.js +252 -0
- package/lib/lib/pg/push_pull.d.ts +13 -0
- package/lib/lib/pg/push_pull.js +118 -0
- package/lib/lib/pg/setter.d.ts +16 -0
- package/lib/lib/pg/setter.js +65 -0
- package/lib/lib/pg/types.d.ts +230 -0
- package/lib/lib/pg/types.js +2 -0
- package/lib/lib/pg/util.d.ts +36 -0
- package/lib/lib/pg/util.js +183 -0
- package/lib/lib/redis/api.d.ts +65 -0
- package/lib/lib/redis/api.js +122 -0
- package/lib/lib/releases/output.d.ts +1 -0
- package/lib/lib/releases/output.js +14 -0
- package/lib/lib/releases/releases.d.ts +6 -0
- package/lib/lib/releases/releases.js +32 -0
- package/lib/lib/releases/status_helper.d.ts +5 -0
- package/lib/lib/releases/status_helper.js +25 -0
- package/lib/lib/run/dyno.js +2 -2
- package/lib/lib/run/log-displayer.d.ts +1 -1
- package/lib/lib/spaces/format.d.ts +4 -0
- package/lib/lib/spaces/format.js +60 -0
- package/lib/lib/spaces/hosts.d.ts +9 -0
- package/lib/lib/spaces/hosts.js +34 -0
- package/lib/lib/spaces/outbound-rules.d.ts +4 -0
- package/lib/lib/spaces/outbound-rules.js +78 -0
- package/lib/lib/spaces/parsers.d.ts +8 -0
- package/lib/lib/spaces/parsers.js +17 -0
- package/lib/lib/spaces/peering.d.ts +4 -0
- package/lib/lib/spaces/peering.js +53 -0
- package/lib/lib/spaces/spaces.d.ts +4 -0
- package/lib/lib/spaces/spaces.js +37 -0
- package/lib/lib/spaces/vpn-connections.d.ts +2 -0
- package/lib/lib/spaces/vpn-connections.js +22 -0
- package/lib/lib/teamUtils.d.ts +3 -0
- package/lib/lib/teamUtils.js +18 -0
- package/lib/lib/time.d.ts +2 -0
- package/lib/lib/time.js +29 -0
- package/lib/lib/types/app_errors.d.ts +6 -0
- package/lib/lib/types/app_errors.js +2 -0
- package/lib/lib/types/domain.d.ts +61 -0
- package/lib/lib/types/domain.js +5 -0
- package/lib/lib/types/notifications.d.ts +20 -0
- package/lib/lib/types/notifications.js +2 -0
- package/lib/lib/utils/keyValueParser.d.ts +4 -0
- package/lib/lib/utils/keyValueParser.js +9 -0
- package/lib/lib/utils/multisort.d.ts +32 -0
- package/lib/lib/utils/multisort.js +66 -0
- package/lib/lib/utils/paginator.d.ts +2 -0
- package/lib/lib/utils/paginator.js +29 -0
- package/lib/lib/utils/uuid-validate.d.ts +1 -0
- package/lib/lib/utils/uuid-validate.js +7 -0
- package/lib/user-config.js +2 -2
- package/oclif.manifest.json +12684 -2674
- package/package.json +116 -65
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
7
|
+
class Remove extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
|
+
const { flags, args } = await this.parse(Remove);
|
|
11
|
+
const space = flags.space;
|
|
12
|
+
const url = `/spaces/${space}/inbound-ruleset`;
|
|
13
|
+
const opts = { headers: { Accept: 'application/vnd.heroku+json; version=3.dogwood' } };
|
|
14
|
+
const { body: rules } = await this.heroku.get(url, opts);
|
|
15
|
+
if (((_a = rules.rules) === null || _a === void 0 ? void 0 : _a.length) === 0) {
|
|
16
|
+
throw new Error('No IP ranges are configured. Nothing to do.');
|
|
17
|
+
}
|
|
18
|
+
const originalLength = (_b = rules.rules) === null || _b === void 0 ? void 0 : _b.length;
|
|
19
|
+
rules.rules = (_c = rules.rules) === null || _c === void 0 ? void 0 : _c.filter(r => r.source !== args.source);
|
|
20
|
+
if (((_d = rules.rules) === null || _d === void 0 ? void 0 : _d.length) === originalLength) {
|
|
21
|
+
throw new Error(`No IP range matching ${args.source} was found.`);
|
|
22
|
+
}
|
|
23
|
+
await this.heroku.put(url, Object.assign(Object.assign({}, opts), { body: rules }));
|
|
24
|
+
core_1.ux.log(`Removed ${color_1.default.cyan.bold(args.source)} from trusted IP ranges on ${color_1.default.cyan.bold(space)}`);
|
|
25
|
+
core_1.ux.warn('It may take a few moments for the changes to take effect.');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = Remove;
|
|
29
|
+
Remove.topic = 'spaces';
|
|
30
|
+
Remove.hiddenAliases = ['trusted-ips:remove'];
|
|
31
|
+
Remove.description = (0, tsheredoc_1.default)(`
|
|
32
|
+
Remove a range from the list of trusted IP ranges
|
|
33
|
+
Uses CIDR notation.`);
|
|
34
|
+
Remove.examples = [(0, tsheredoc_1.default)(`
|
|
35
|
+
$ heroku trusted-ips:remove --space my-space 192.168.2.0/24
|
|
36
|
+
Removed 192.168.2.0/24 from trusted IP ranges on my-space
|
|
37
|
+
`)];
|
|
38
|
+
Remove.flags = {
|
|
39
|
+
space: command_1.flags.string({ required: true, char: 's', description: 'space to remove rule from' }),
|
|
40
|
+
confirm: command_1.flags.string({ description: 'set to space name to bypass confirm prompt' }),
|
|
41
|
+
};
|
|
42
|
+
Remove.args = {
|
|
43
|
+
source: core_1.Args.string({ required: true }),
|
|
44
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Config extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static example: string;
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const command_1 = require("@heroku-cli/command");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const vpn_connections_1 = require("../../../lib/spaces/vpn-connections");
|
|
6
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
7
|
+
class Config extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags, args } = await this.parse(Config);
|
|
10
|
+
const { space, json } = flags;
|
|
11
|
+
const { name } = args;
|
|
12
|
+
const { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
13
|
+
if (json) {
|
|
14
|
+
core_1.ux.styledJSON(vpnConnection);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
(0, vpn_connections_1.displayVPNConfigInfo)(space, name, vpnConnection);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = Config;
|
|
22
|
+
Config.topic = 'spaces';
|
|
23
|
+
Config.description = (0, tsheredoc_1.default)(`
|
|
24
|
+
display the configuration information for VPN
|
|
25
|
+
|
|
26
|
+
You will use the information provided by this command to establish a Private Space VPN Connection.
|
|
27
|
+
|
|
28
|
+
- You must configure your VPN Gateway to use both Tunnels provided by Heroku
|
|
29
|
+
- The VPN Gateway values are the IP addresses of the Private Space Tunnels
|
|
30
|
+
- The Customer Gateway value is the Public IP of your VPN Gateway
|
|
31
|
+
- The VPN Gateway must use the IKE Version shown and the Pre-shared Keys as the authentication method
|
|
32
|
+
`);
|
|
33
|
+
Config.example = (0, tsheredoc_1.default)(`
|
|
34
|
+
$ heroku spaces:vpn:config vpn-connection-name --space my-space
|
|
35
|
+
=== vpn-connection-name VPN Tunnels
|
|
36
|
+
VPN Tunnel Customer Gateway VPN Gateway Pre-shared Key Routable Subnets IKE Version
|
|
37
|
+
────────── ──────────────── ────────────── ────────────── ──────────────── ───────────
|
|
38
|
+
Tunnel 1 104.196.121.200 35.171.237.136 abcdef12345 10.0.0.0/16 1
|
|
39
|
+
Tunnel 2 104.196.121.200 52.44.7.216 fedcba54321 10.0.0.0/16 1
|
|
40
|
+
`);
|
|
41
|
+
Config.flags = {
|
|
42
|
+
space: command_1.flags.string({
|
|
43
|
+
required: true,
|
|
44
|
+
char: 's',
|
|
45
|
+
description: 'space the VPN connection belongs to',
|
|
46
|
+
}),
|
|
47
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
48
|
+
};
|
|
49
|
+
Config.args = {
|
|
50
|
+
name: core_1.Args.string({
|
|
51
|
+
required: true,
|
|
52
|
+
description: 'name or id of the VPN connection to retrieve config from',
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Connect extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
ip: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
cidrs: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
7
|
+
const parsers_1 = require("../../../lib/spaces/parsers");
|
|
8
|
+
class Connect extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(Connect);
|
|
11
|
+
const { space, cidrs, ip } = flags;
|
|
12
|
+
const { name } = args;
|
|
13
|
+
const parsed_cidrs = (0, parsers_1.splitCsv)(cidrs);
|
|
14
|
+
core_1.ux.action.start(`Creating VPN Connection in space ${color_1.default.green(space)}`);
|
|
15
|
+
await this.heroku.post(`/spaces/${space}/vpn-connections`, {
|
|
16
|
+
body: {
|
|
17
|
+
name,
|
|
18
|
+
public_ip: ip,
|
|
19
|
+
routable_cidrs: parsed_cidrs,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
core_1.ux.action.stop();
|
|
23
|
+
core_1.ux.warn(`Use ${color_1.default.cmd('heroku spaces:vpn:wait')} to track allocation.`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = Connect;
|
|
27
|
+
Connect.topic = 'spaces';
|
|
28
|
+
Connect.description = (0, tsheredoc_1.default) `
|
|
29
|
+
create VPN
|
|
30
|
+
Private Spaces can be connected to another private network via an IPSec VPN connection allowing dynos to connect to hosts on your private networks and vice versa.
|
|
31
|
+
The connection is established over the public Internet but all traffic is encrypted using IPSec.
|
|
32
|
+
`;
|
|
33
|
+
Connect.examples = [(0, tsheredoc_1.default) `
|
|
34
|
+
$ heroku spaces:vpn:connect vpn-connection-name --ip 35.161.69.30 --cidrs 172.16.0.0/16,10.0.0.0/24 --space my-space
|
|
35
|
+
Creating VPN Connection in space my-space... done
|
|
36
|
+
▸ Use spaces:vpn:wait to track allocation.
|
|
37
|
+
`];
|
|
38
|
+
Connect.flags = {
|
|
39
|
+
ip: command_1.flags.string({ char: 'i', description: 'public IP of customer gateway', required: true }),
|
|
40
|
+
cidrs: command_1.flags.string({ char: 'c', description: 'a list of routable CIDRs separated by commas', required: true }),
|
|
41
|
+
space: command_1.flags.string({ char: 's', description: 'space name', required: true }),
|
|
42
|
+
};
|
|
43
|
+
Connect.args = {
|
|
44
|
+
name: core_1.Args.string({
|
|
45
|
+
required: true,
|
|
46
|
+
description: 'name or id of the VPN connection to create',
|
|
47
|
+
}),
|
|
48
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
import * as Heroku from '@heroku-cli/schema';
|
|
3
|
+
declare type VpnConnectionTunnels = Required<Heroku.PrivateSpacesVpn>['tunnels'];
|
|
4
|
+
export default class Connections extends Command {
|
|
5
|
+
static topic: string;
|
|
6
|
+
static description: string;
|
|
7
|
+
static example: string;
|
|
8
|
+
static flags: {
|
|
9
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
protected render(space: string, connections: Required<Heroku.PrivateSpacesVpn>[], json: boolean): void;
|
|
14
|
+
protected displayVPNConnections(space: string, connections: Required<Heroku.PrivateSpacesVpn>[]): void;
|
|
15
|
+
protected tunnelFormat(t: VpnConnectionTunnels): string;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const command_1 = require("@heroku-cli/command");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
6
|
+
const format_1 = require("../../../lib/spaces/format");
|
|
7
|
+
class Connections extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags } = await this.parse(Connections);
|
|
10
|
+
const { space, json } = flags;
|
|
11
|
+
const { body: connections } = await this.heroku.get(`/spaces/${space}/vpn-connections`);
|
|
12
|
+
this.render(space, connections, json);
|
|
13
|
+
}
|
|
14
|
+
render(space, connections, json) {
|
|
15
|
+
if (json) {
|
|
16
|
+
core_1.ux.styledJSON(connections);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.displayVPNConnections(space, connections);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
displayVPNConnections(space, connections) {
|
|
23
|
+
if (connections.length === 0) {
|
|
24
|
+
core_1.ux.log('No VPN Connections have been created yet');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
core_1.ux.styledHeader(`${space} VPN Connections`);
|
|
28
|
+
core_1.ux.table(connections, {
|
|
29
|
+
Name: {
|
|
30
|
+
get: c => c.name || c.id,
|
|
31
|
+
},
|
|
32
|
+
Status: {
|
|
33
|
+
get: c => (0, format_1.displayVPNStatus)(c.status),
|
|
34
|
+
},
|
|
35
|
+
Tunnels: {
|
|
36
|
+
get: c => this.tunnelFormat(c.tunnels),
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
tunnelFormat(t) {
|
|
41
|
+
return t.map(tunnel => (0, format_1.displayVPNStatus)(tunnel.status)).join('/');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = Connections;
|
|
45
|
+
Connections.topic = 'spaces';
|
|
46
|
+
Connections.description = 'list the VPN Connections for a space';
|
|
47
|
+
Connections.example = (0, tsheredoc_1.default) `
|
|
48
|
+
$ heroku spaces:vpn:connections --space my-space
|
|
49
|
+
=== my-space VPN Connections
|
|
50
|
+
Name Status Tunnels
|
|
51
|
+
────── ────── ───────
|
|
52
|
+
office active UP/UP
|
|
53
|
+
`;
|
|
54
|
+
Connections.flags = {
|
|
55
|
+
space: command_1.flags.string({ char: 's', description: 'space to get VPN connections from', required: true }),
|
|
56
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
57
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Destroy extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const confirmCommand_1 = require("../../../lib/confirmCommand");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
class Destroy extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(Destroy);
|
|
11
|
+
const { space, confirm } = flags;
|
|
12
|
+
const { name } = args;
|
|
13
|
+
await (0, confirmCommand_1.default)(name, confirm, (0, tsheredoc_1.default) `
|
|
14
|
+
Destructive Action
|
|
15
|
+
This command will attempt to destroy the specified VPN Connection in space ${color_1.default.green(space)}
|
|
16
|
+
`);
|
|
17
|
+
core_1.ux.action.start(`Tearing down VPN Connection ${color_1.default.cyan(name)} in space ${color_1.default.cyan(space)}`);
|
|
18
|
+
await this.heroku.delete(`/spaces/${space}/vpn-connections/${name}`);
|
|
19
|
+
core_1.ux.action.stop();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.default = Destroy;
|
|
23
|
+
Destroy.topic = 'spaces';
|
|
24
|
+
Destroy.description = 'destroys VPN in a private space';
|
|
25
|
+
Destroy.examples = [(0, tsheredoc_1.default) `
|
|
26
|
+
$ heroku spaces:vpn:destroy vpn-connection-name --space example-space --confirm vpn-connection-name
|
|
27
|
+
Tearing down VPN Connection vpn-connection-name in space example-space
|
|
28
|
+
`];
|
|
29
|
+
Destroy.flags = {
|
|
30
|
+
space: command_1.flags.string({ char: 's', description: 'space name', required: true }),
|
|
31
|
+
confirm: command_1.flags.string({ description: 'set to VPN connection name to bypass confirm prompt', hidden: true }),
|
|
32
|
+
};
|
|
33
|
+
Destroy.args = {
|
|
34
|
+
name: core_1.Args.string({
|
|
35
|
+
required: true,
|
|
36
|
+
description: 'name or id of the VPN connection to destroy',
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Info extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static example: string;
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private displayVPNInfo;
|
|
15
|
+
private render;
|
|
16
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const command_1 = require("@heroku-cli/command");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
6
|
+
const format_1 = require("../../../lib/spaces/format");
|
|
7
|
+
class Info extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags, args } = await this.parse(Info);
|
|
10
|
+
const { space, json } = flags;
|
|
11
|
+
const { name } = args;
|
|
12
|
+
const { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
13
|
+
const connectionName = vpnConnection.name || name;
|
|
14
|
+
this.render(connectionName, vpnConnection, json);
|
|
15
|
+
}
|
|
16
|
+
displayVPNInfo(name, vpnConnection) {
|
|
17
|
+
core_1.ux.styledHeader(`${name} VPN Info`);
|
|
18
|
+
core_1.ux.styledObject({
|
|
19
|
+
Name: name,
|
|
20
|
+
ID: vpnConnection.id,
|
|
21
|
+
'Public IP': vpnConnection.public_ip,
|
|
22
|
+
'Routable CIDRs': (0, format_1.displayCIDR)(vpnConnection.routable_cidrs),
|
|
23
|
+
Status: `${(0, format_1.displayVPNStatus)(vpnConnection.status)}`,
|
|
24
|
+
'Status Message': vpnConnection.status_message,
|
|
25
|
+
}, ['Name', 'ID', 'Public IP', 'Routable CIDRs', 'State', 'Status', 'Status Message']);
|
|
26
|
+
const vpnConnectionTunnels = vpnConnection.tunnels || [];
|
|
27
|
+
vpnConnectionTunnels.forEach((val, i) => {
|
|
28
|
+
val.tunnel_id = 'Tunnel ' + (i + 1);
|
|
29
|
+
});
|
|
30
|
+
core_1.ux.styledHeader(`${name} VPN Tunnel Info`);
|
|
31
|
+
core_1.ux.table(vpnConnectionTunnels, {
|
|
32
|
+
tunnel_id: { header: 'VPN Tunnel' },
|
|
33
|
+
ip: { header: 'IP Address' },
|
|
34
|
+
status: {
|
|
35
|
+
header: 'Status',
|
|
36
|
+
get: row => (0, format_1.displayVPNStatus)(row.status),
|
|
37
|
+
},
|
|
38
|
+
last_status_change: { header: 'Status Last Changed' },
|
|
39
|
+
status_message: { header: 'Details' },
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
render(name, vpnConnection, json) {
|
|
43
|
+
if (json) {
|
|
44
|
+
core_1.ux.styledJSON(vpnConnection);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.displayVPNInfo(name, vpnConnection);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.default = Info;
|
|
52
|
+
Info.topic = 'spaces';
|
|
53
|
+
Info.description = 'display the information for VPN';
|
|
54
|
+
Info.example = (0, tsheredoc_1.default)(`
|
|
55
|
+
$ heroku spaces:vpn:info vpn-connection-name --space my-space
|
|
56
|
+
=== vpn-connection-name VPN Tunnel Info
|
|
57
|
+
Name: vpn-connection-name
|
|
58
|
+
ID: 123456789012
|
|
59
|
+
Public IP: 35.161.69.30
|
|
60
|
+
Routable CIDRs: 172.16.0.0/16
|
|
61
|
+
Status: failed
|
|
62
|
+
Status Message: supplied CIDR block already in use
|
|
63
|
+
=== my-space Tunnel Info
|
|
64
|
+
VPN Tunnel IP Address Status Last Changed Details
|
|
65
|
+
────────── ───────────── ────── ──────────────────── ─────────────
|
|
66
|
+
Tunnel 1 52.44.146.197 UP 2016-10-25T22:09:05Z status message
|
|
67
|
+
Tunnel 2 52.44.146.197 UP 2016-10-25T22:09:05Z status message
|
|
68
|
+
`);
|
|
69
|
+
Info.flags = {
|
|
70
|
+
space: command_1.flags.string({
|
|
71
|
+
char: 's',
|
|
72
|
+
description: 'space the vpn connection belongs to',
|
|
73
|
+
required: true,
|
|
74
|
+
}),
|
|
75
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
76
|
+
};
|
|
77
|
+
Info.args = {
|
|
78
|
+
name: core_1.Args.string({
|
|
79
|
+
description: 'name or id of the VPN connection to get info from',
|
|
80
|
+
required: true,
|
|
81
|
+
}),
|
|
82
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Update extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
cidrs: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
static example: string;
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const parsers_1 = require("../../../lib/spaces/parsers");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
class Update extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(Update);
|
|
11
|
+
const { space, cidrs } = flags;
|
|
12
|
+
const { name } = args;
|
|
13
|
+
const parsedCidrs = (0, parsers_1.splitCsv)(cidrs);
|
|
14
|
+
core_1.ux.action.start(`Updating VPN Connection in space ${color_1.default.green(space)}`);
|
|
15
|
+
await this.heroku.patch(`/spaces/${space}/vpn-connections/${name}`, { body: { routable_cidrs: parsedCidrs } });
|
|
16
|
+
core_1.ux.action.stop();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = Update;
|
|
20
|
+
Update.topic = 'spaces';
|
|
21
|
+
Update.description = (0, tsheredoc_1.default) `
|
|
22
|
+
update VPN
|
|
23
|
+
Private Spaces can be connected to another private network via an IPSec VPN connection allowing dynos to connect to hosts on your private networks and vice versa.
|
|
24
|
+
The connection is established over the public Internet but all traffic is encrypted using IPSec.
|
|
25
|
+
`;
|
|
26
|
+
Update.flags = {
|
|
27
|
+
cidrs: command_1.flags.string({ char: 'c', description: 'a list of routable CIDRs separated by commas', required: true }),
|
|
28
|
+
space: command_1.flags.string({ char: 's', description: 'space name', required: true }),
|
|
29
|
+
};
|
|
30
|
+
Update.example = (0, tsheredoc_1.default) `
|
|
31
|
+
$ heroku spaces:vpn:update vpn-connection-name --space my-space --cidrs 172.16.0.0/16,10.0.0.0/24
|
|
32
|
+
Updating VPN Connection in space my-space... done
|
|
33
|
+
`;
|
|
34
|
+
Update.args = {
|
|
35
|
+
name: core_1.Args.string({
|
|
36
|
+
required: true,
|
|
37
|
+
description: 'name or id of the VPN connection to update',
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Wait extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
interval: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
timeout: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
static args: {
|
|
13
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const vpn_connections_1 = require("../../../lib/spaces/vpn-connections");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
const wait = (ms) => new Promise(resolve => {
|
|
9
|
+
setTimeout(resolve, ms);
|
|
10
|
+
});
|
|
11
|
+
class Wait extends command_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
const { flags, args } = await this.parse(Wait);
|
|
14
|
+
const { space, json } = flags;
|
|
15
|
+
const { name } = args;
|
|
16
|
+
const interval = (flags.interval ? Number.parseInt(flags.interval, 10) : 10) * 1000;
|
|
17
|
+
const timeout = (flags.timeout ? Number.parseInt(flags.timeout, 10) : 20 * 60) * 1000;
|
|
18
|
+
const deadline = new Date(Date.now() + timeout);
|
|
19
|
+
let { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
20
|
+
if (vpnConnection.status === 'active') {
|
|
21
|
+
core_1.ux.log('VPN has been allocated.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
core_1.ux.action.start(`Waiting for VPN Connection ${color_1.default.green(name)} to allocate...`);
|
|
25
|
+
while (vpnConnection.status !== 'active') {
|
|
26
|
+
if (new Date() > deadline) {
|
|
27
|
+
core_1.ux.error('Timeout waiting for VPN to become allocated.', { exit: 1 });
|
|
28
|
+
}
|
|
29
|
+
if (vpnConnection.status === 'failed') {
|
|
30
|
+
core_1.ux.error(vpnConnection.status_message || '', { exit: 1 });
|
|
31
|
+
}
|
|
32
|
+
await wait(interval);
|
|
33
|
+
const { body: updatedVpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
34
|
+
vpnConnection = updatedVpnConnection;
|
|
35
|
+
}
|
|
36
|
+
core_1.ux.action.stop();
|
|
37
|
+
const { body: newVpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
38
|
+
if (json) {
|
|
39
|
+
core_1.ux.styledJSON(newVpnConnection);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
(0, vpn_connections_1.displayVPNConfigInfo)(space, name, newVpnConnection);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.default = Wait;
|
|
47
|
+
Wait.topic = 'spaces';
|
|
48
|
+
Wait.description = 'wait for VPN Connection to be created';
|
|
49
|
+
Wait.examples = [(0, tsheredoc_1.default) `
|
|
50
|
+
$ heroku spaces:vpn:wait vpn-connection-name --space my-space
|
|
51
|
+
Waiting for VPN Connection vpn-connection-name to allocate... done
|
|
52
|
+
=== my-space VPN Tunnels
|
|
53
|
+
|
|
54
|
+
VPN Tunnel Customer Gateway VPN Gateway Pre-shared Key Routable Subnets IKE Version
|
|
55
|
+
────────── ──────────────── ────────────── ────────────── ──────────────── ───────────
|
|
56
|
+
Tunnel 1 104.196.121.200 35.171.237.136 abcdef12345 10.0.0.0/16 1
|
|
57
|
+
Tunnel 2 104.196.121.200 52.44.7.216 fedcba54321 10.0.0.0/16 1
|
|
58
|
+
`];
|
|
59
|
+
Wait.flags = {
|
|
60
|
+
space: command_1.flags.string({ char: 's', description: 'space the vpn connection belongs to', required: true }),
|
|
61
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
62
|
+
interval: command_1.flags.string({ char: 'i', description: 'seconds to wait between poll intervals' }),
|
|
63
|
+
timeout: command_1.flags.string({ char: 't', description: 'maximum number of seconds to wait' }),
|
|
64
|
+
};
|
|
65
|
+
Wait.args = {
|
|
66
|
+
name: core_1.Args.string({
|
|
67
|
+
description: 'name or id of the VPN connection you are waiting on for allocation.',
|
|
68
|
+
required: true,
|
|
69
|
+
}),
|
|
70
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Wait extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
interval: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
timeout: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
space: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
protected wait(ms: number): Promise<unknown>;
|
|
16
|
+
protected notify(spaceName: string): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
7
|
+
const spinner_1 = require("@oclif/core/lib/cli-ux/action/spinner");
|
|
8
|
+
const debug_1 = require("debug");
|
|
9
|
+
const spaces_1 = require("../../lib/spaces/spaces");
|
|
10
|
+
const notifications_1 = require("@heroku-cli/notifications");
|
|
11
|
+
const spacesDebug = (0, debug_1.default)('spaces:wait');
|
|
12
|
+
class Wait extends command_1.Command {
|
|
13
|
+
async run() {
|
|
14
|
+
const { flags, args } = await this.parse(Wait);
|
|
15
|
+
const spaceName = flags.space || args.space;
|
|
16
|
+
if (!spaceName) {
|
|
17
|
+
core_1.ux.error((0, tsheredoc_1.default)(`
|
|
18
|
+
Error: Missing 1 required arg:
|
|
19
|
+
space
|
|
20
|
+
See more help with --help
|
|
21
|
+
`));
|
|
22
|
+
}
|
|
23
|
+
const interval = flags.interval * 1000;
|
|
24
|
+
const timeout = flags.timeout * 1000;
|
|
25
|
+
const deadline = new Date(Date.now() + timeout);
|
|
26
|
+
const action = new spinner_1.default();
|
|
27
|
+
action.start(`Waiting for space ${color_1.default.green(spaceName)} to allocate`);
|
|
28
|
+
let headers = {};
|
|
29
|
+
if (!flags.json) {
|
|
30
|
+
headers = { 'Accept-Expansion': 'region' };
|
|
31
|
+
}
|
|
32
|
+
let { body: space } = await this.heroku.get(`/spaces/${spaceName}`, { headers });
|
|
33
|
+
while (space.state === 'allocating') {
|
|
34
|
+
if (new Date() > deadline) {
|
|
35
|
+
throw new Error('Timeout waiting for space to become allocated.');
|
|
36
|
+
}
|
|
37
|
+
await this.wait(interval);
|
|
38
|
+
const { body: updatedSpace } = await this.heroku.get(`/spaces/${spaceName}`, { headers });
|
|
39
|
+
space = updatedSpace;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const { body: nat } = await this.heroku.get(`/spaces/${spaceName}/nat`);
|
|
43
|
+
space.outbound_ips = nat;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
spacesDebug(`Retrieving NAT details for the space failed with ${error}`);
|
|
47
|
+
}
|
|
48
|
+
action.stop();
|
|
49
|
+
(0, spaces_1.renderInfo)(space, flags.json);
|
|
50
|
+
this.notify(spaceName);
|
|
51
|
+
}
|
|
52
|
+
wait(ms) {
|
|
53
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
54
|
+
}
|
|
55
|
+
notify(spaceName) {
|
|
56
|
+
try {
|
|
57
|
+
const notification = {
|
|
58
|
+
title: spaceName,
|
|
59
|
+
subtitle: `heroku spaces:wait ${spaceName}`,
|
|
60
|
+
message: 'space was successfully created',
|
|
61
|
+
sound: true,
|
|
62
|
+
};
|
|
63
|
+
(0, notifications_1.notify)(notification);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
core_1.ux.warn(error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.default = Wait;
|
|
71
|
+
Wait.topic = 'spaces';
|
|
72
|
+
Wait.description = 'wait for a space to be created';
|
|
73
|
+
Wait.flags = {
|
|
74
|
+
space: command_1.flags.string({ char: 's', description: 'space to get info of' }),
|
|
75
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
76
|
+
interval: command_1.flags.integer({
|
|
77
|
+
char: 'i',
|
|
78
|
+
description: 'seconds to wait between poll intervals',
|
|
79
|
+
default: 30,
|
|
80
|
+
}),
|
|
81
|
+
timeout: command_1.flags.integer({
|
|
82
|
+
char: 't',
|
|
83
|
+
description: 'maximum number of seconds to wait',
|
|
84
|
+
default: 25 * 60,
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
Wait.args = {
|
|
88
|
+
space: core_1.Args.string({ hidden: true }),
|
|
89
|
+
};
|