heroku 9.0.0-alpha.1 → 9.0.0-alpha.2
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 +19 -0
- package/lib/commands/addons/create.js +84 -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 +2 -2
- package/lib/commands/apps/create.js +13 -6
- package/lib/commands/apps/destroy.d.ts +2 -1
- package/lib/commands/apps/destroy.js +4 -3
- package/lib/commands/apps/errors.d.ts +1 -0
- package/lib/commands/apps/errors.js +1 -0
- package/lib/commands/apps/favorites/add.d.ts +1 -0
- package/lib/commands/apps/favorites/add.js +1 -0
- package/lib/commands/apps/favorites/remove.d.ts +1 -0
- package/lib/commands/apps/favorites/remove.js +1 -0
- package/lib/commands/apps/index.d.ts +1 -1
- package/lib/commands/apps/index.js +1 -1
- package/lib/commands/apps/info.d.ts +2 -1
- package/lib/commands/apps/info.js +3 -4
- 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 +2 -1
- package/lib/commands/apps/open.js +2 -1
- package/lib/commands/apps/rename.d.ts +2 -1
- package/lib/commands/apps/rename.js +2 -1
- package/lib/commands/apps/stacks/index.d.ts +2 -1
- package/lib/commands/apps/stacks/index.js +2 -1
- package/lib/commands/apps/stacks/set.d.ts +1 -1
- 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.js +5 -1
- package/lib/commands/authorizations/info.js +5 -1
- package/lib/commands/authorizations/revoke.js +5 -1
- package/lib/commands/authorizations/rotate.js +5 -1
- package/lib/commands/authorizations/update.js +5 -1
- package/lib/commands/autocomplete/doctor.js +2 -2
- package/lib/commands/autocomplete/options.js +2 -2
- 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 +1 -0
- package/lib/commands/ci/config/get.js +1 -0
- package/lib/commands/ci/config/set.d.ts +1 -0
- package/lib/commands/ci/config/set.js +1 -0
- package/lib/commands/ci/config/unset.d.ts +1 -0
- package/lib/commands/ci/config/unset.js +1 -0
- package/lib/commands/ci/index.d.ts +1 -0
- package/lib/commands/ci/index.js +1 -0
- package/lib/commands/ci/info.d.ts +1 -0
- package/lib/commands/ci/info.js +1 -0
- package/lib/commands/ci/last.d.ts +1 -0
- package/lib/commands/ci/last.js +1 -0
- package/lib/commands/ci/open.d.ts +1 -0
- package/lib/commands/ci/open.js +1 -0
- package/lib/commands/ci/rerun.d.ts +1 -0
- package/lib/commands/ci/rerun.js +1 -0
- package/lib/commands/config/set.d.ts +2 -1
- package/lib/commands/config/set.js +2 -1
- 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 +40 -0
- package/lib/commands/container/push.d.ts +16 -0
- package/lib/commands/container/push.js +101 -0
- package/lib/commands/container/release.d.ts +14 -0
- package/lib/commands/container/release.js +89 -0
- package/lib/commands/container/rm.d.ts +13 -0
- package/lib/commands/container/rm.js +36 -0
- package/lib/commands/container/run.d.ts +15 -0
- package/lib/commands/container/run.js +63 -0
- package/lib/commands/dashboard.d.ts +7 -0
- package/lib/commands/dashboard.js +164 -0
- package/lib/commands/domains/index.d.ts +2 -2
- package/lib/commands/drains/add.d.ts +1 -0
- package/lib/commands/drains/add.js +1 -0
- package/lib/commands/drains/index.d.ts +1 -0
- package/lib/commands/drains/index.js +1 -0
- package/lib/commands/drains/remove.d.ts +1 -0
- package/lib/commands/drains/remove.js +1 -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/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 +1 -1
- package/lib/commands/local/index.js +8 -3
- package/lib/commands/local/run.d.ts +1 -1
- package/lib/commands/local/run.js +8 -3
- 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/connect.js +1 -1
- package/lib/commands/pipelines/diff.js +1 -1
- 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/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/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/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/outbound-rules/add.d.ts +15 -0
- package/lib/commands/spaces/outbound-rules/add.js +81 -0
- package/lib/commands/spaces/outbound-rules/index.d.ts +15 -0
- package/lib/commands/spaces/outbound-rules/index.js +49 -0
- package/lib/commands/spaces/outbound-rules/remove.d.ts +17 -0
- package/lib/commands/spaces/outbound-rules/remove.js +53 -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 +45 -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 +35 -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 +36 -0
- package/lib/commands/spaces/vpn/wait.d.ts +13 -0
- package/lib/commands/spaces/vpn/wait.js +53 -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/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 +38 -0
- package/lib/lib/addons/resolve.js +179 -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/autocomplete/completions.d.ts +4 -0
- 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/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/{apps/confirm-app.js → confirmCommand.js} +2 -2
- 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/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/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/multisort.d.ts +32 -0
- package/lib/lib/utils/multisort.js +66 -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 +12776 -3097
- package/package.json +108 -61
- package/lib/lib/apps/confirm-app.d.ts +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
import type { Plan } from '@heroku-cli/schema';
|
|
3
|
+
export default class Upgrade extends Command {
|
|
4
|
+
static aliases: string[];
|
|
5
|
+
static topic: string;
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
static args: {
|
|
13
|
+
addon: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
14
|
+
plan: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
15
|
+
};
|
|
16
|
+
private parsed;
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
protected getAddonPartsFromArgs(args: {
|
|
19
|
+
addon: string;
|
|
20
|
+
plan: string | undefined;
|
|
21
|
+
}): {
|
|
22
|
+
plan: string;
|
|
23
|
+
addon: string;
|
|
24
|
+
};
|
|
25
|
+
protected buildNoPlanError(addon: string): string;
|
|
26
|
+
protected buildApiErrorMessage(errorMessage: string, ctx: Awaited<typeof this.parsed>): string;
|
|
27
|
+
protected getPlans(addonServiceName: string | undefined): Promise<Plan[]>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
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 util_1 = require("../../lib/addons/util");
|
|
7
|
+
const resolve_1 = require("../../lib/addons/resolve");
|
|
8
|
+
const api_client_1 = require("@heroku-cli/command/lib/api-client");
|
|
9
|
+
class Upgrade extends command_1.Command {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.parsed = this.parse(Upgrade);
|
|
13
|
+
}
|
|
14
|
+
async run() {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const ctx = await this.parsed;
|
|
17
|
+
const { flags: { app }, args } = ctx;
|
|
18
|
+
// called with just one argument in the form of `heroku addons:upgrade heroku-redis:hobby`
|
|
19
|
+
const { addon, plan } = this.getAddonPartsFromArgs(args);
|
|
20
|
+
let resolvedAddon;
|
|
21
|
+
try {
|
|
22
|
+
resolvedAddon = await (0, resolve_1.addonResolver)(this.heroku, app, addon);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof api_client_1.HerokuAPIError && error.http.statusCode === 422 && error.body.id === 'multiple_matches') {
|
|
26
|
+
throw new Error(this.buildApiErrorMessage(error.http.body.message, ctx));
|
|
27
|
+
}
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
const { name: addonServiceName } = resolvedAddon.addon_service;
|
|
31
|
+
const { name: appName } = resolvedAddon.app;
|
|
32
|
+
const { name: addonName, plan: resolvedAddonPlan } = resolvedAddon !== null && resolvedAddon !== void 0 ? resolvedAddon : {};
|
|
33
|
+
const updatedPlanName = `${addonServiceName}:${plan}`;
|
|
34
|
+
core_1.ux.action.start(`Changing ${color_1.default.magenta(addonName !== null && addonName !== void 0 ? addonName : '')} on ${color_1.default.cyan(appName !== null && appName !== void 0 ? appName : '')} from ${color_1.default.blue((_a = resolvedAddonPlan === null || resolvedAddonPlan === void 0 ? void 0 : resolvedAddonPlan.name) !== null && _a !== void 0 ? _a : '')} to ${color_1.default.blue(updatedPlanName)}`);
|
|
35
|
+
try {
|
|
36
|
+
const patchResult = await this.heroku.patch(`/apps/${appName}/addons/${addonName}`, {
|
|
37
|
+
body: { plan: { name: updatedPlanName } },
|
|
38
|
+
headers: {
|
|
39
|
+
'Accept-Expansion': 'plan', 'X-Heroku-Legacy-Provider-Messages': 'true',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
resolvedAddon = patchResult.body;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
let errorToThrow = error;
|
|
46
|
+
if (error instanceof api_client_1.HerokuAPIError) {
|
|
47
|
+
const { http } = error;
|
|
48
|
+
if (http.statusCode === 422 &&
|
|
49
|
+
http.body.message &&
|
|
50
|
+
http.body.message.startsWith('Couldn\'t find either the add-on')) {
|
|
51
|
+
const plans = await this.getPlans(addonServiceName);
|
|
52
|
+
errorToThrow = new Error(`${http.body.message}
|
|
53
|
+
|
|
54
|
+
Here are the available plans for ${color_1.default.yellow(addonServiceName || '')}:
|
|
55
|
+
${plans.map(plan => plan.name).join('\n')}\n\nSee more plan information with ${color_1.default.blue('heroku addons:plans ' + addonServiceName)}
|
|
56
|
+
|
|
57
|
+
${color_1.default.cyan('https://devcenter.heroku.com/articles/managing-add-ons')}`);
|
|
58
|
+
}
|
|
59
|
+
core_1.ux.action.stop();
|
|
60
|
+
throw errorToThrow;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
core_1.ux.action.stop(`done${((_b = resolvedAddon.plan) === null || _b === void 0 ? void 0 : _b.price) ? `, ${(0, util_1.formatPriceText)(resolvedAddon.plan.price)}` : ''}`);
|
|
64
|
+
if (resolvedAddon.provision_message) {
|
|
65
|
+
core_1.ux.log(resolvedAddon.provision_message);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
getAddonPartsFromArgs(args) {
|
|
69
|
+
let { addon, plan } = args;
|
|
70
|
+
if (!plan && addon.includes(':')) {
|
|
71
|
+
([addon, plan] = addon.split(':'));
|
|
72
|
+
}
|
|
73
|
+
if (!plan) {
|
|
74
|
+
throw new Error(this.buildNoPlanError(addon));
|
|
75
|
+
}
|
|
76
|
+
// ignore the service part of the plan since we can infer the service based on the add-on
|
|
77
|
+
if (plan.includes(':')) {
|
|
78
|
+
plan = plan.split(':')[1];
|
|
79
|
+
}
|
|
80
|
+
return { plan, addon };
|
|
81
|
+
}
|
|
82
|
+
buildNoPlanError(addon) {
|
|
83
|
+
return `Error: No plan specified.
|
|
84
|
+
You need to specify a plan to move ${color_1.default.yellow(addon)} to.
|
|
85
|
+
For example: ${color_1.default.blue('heroku addons:upgrade heroku-redis:premium-0')}
|
|
86
|
+
${color_1.default.cyan('https://devcenter.heroku.com/articles/managing-add-ons')}`;
|
|
87
|
+
}
|
|
88
|
+
buildApiErrorMessage(errorMessage, ctx) {
|
|
89
|
+
const { flags: { app }, args: { addon, plan } } = ctx;
|
|
90
|
+
const example = errorMessage.split(', ')[2] || 'redis-triangular-1234';
|
|
91
|
+
return `${errorMessage}
|
|
92
|
+
|
|
93
|
+
Multiple add-ons match ${color_1.default.yellow(addon)}${app ? ' on ' + app : ''}
|
|
94
|
+
It is not clear which add-on's plan you are trying to change.
|
|
95
|
+
|
|
96
|
+
Specify the add-on name instead of the name of the add-on service.
|
|
97
|
+
For example, instead of: ${color_1.default.blue('heroku addons:upgrade ' + addon + ' ' + (plan || ''))}
|
|
98
|
+
Run this: ${color_1.default.blue('heroku addons:upgrade ' + example + ' ' + addon + ':' + plan)}
|
|
99
|
+
${app ? '' : 'Alternatively, specify an app to filter by with ' + color_1.default.blue('--app')}
|
|
100
|
+
${color_1.default.cyan('https://devcenter.heroku.com/articles/managing-add-ons')}`;
|
|
101
|
+
}
|
|
102
|
+
async getPlans(addonServiceName) {
|
|
103
|
+
try {
|
|
104
|
+
const plansResponse = await this.heroku.get(`/addon-services/${addonServiceName}/plans`);
|
|
105
|
+
const { body: plans } = plansResponse;
|
|
106
|
+
plans.sort((a, b) => {
|
|
107
|
+
var _a, _b, _c, _d;
|
|
108
|
+
if (((_a = a === null || a === void 0 ? void 0 : a.price) === null || _a === void 0 ? void 0 : _a.cents) === ((_b = b === null || b === void 0 ? void 0 : b.price) === null || _b === void 0 ? void 0 : _b.cents)) {
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
if (!((_c = a === null || a === void 0 ? void 0 : a.price) === null || _c === void 0 ? void 0 : _c.cents) || !((_d = b === null || b === void 0 ? void 0 : b.price) === null || _d === void 0 ? void 0 : _d.cents) || a.price.cents > b.price.cents) {
|
|
112
|
+
return 1;
|
|
113
|
+
}
|
|
114
|
+
if (a.price.cents < b.price.cents) {
|
|
115
|
+
return -1;
|
|
116
|
+
}
|
|
117
|
+
return 0;
|
|
118
|
+
});
|
|
119
|
+
return plans;
|
|
120
|
+
}
|
|
121
|
+
catch (_a) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.default = Upgrade;
|
|
127
|
+
Upgrade.aliases = ['addons:downgrade'];
|
|
128
|
+
Upgrade.topic = 'addons';
|
|
129
|
+
Upgrade.description = `change add-on plan.
|
|
130
|
+
See available plans with \`heroku addons:plans SERVICE\`.
|
|
131
|
+
|
|
132
|
+
Note that \`heroku addons:upgrade\` and \`heroku addons:downgrade\` are the same.\
|
|
133
|
+
Either one can be used to change an add-on plan up or down.
|
|
134
|
+
|
|
135
|
+
https://devcenter.heroku.com/articles/managing-add-ons
|
|
136
|
+
`;
|
|
137
|
+
Upgrade.examples = ['Upgrade an add-on by service name:\n$ heroku addons:upgrade heroku-redis:premium-2\n\nUpgrade a specific add-on:\n$ heroku addons:upgrade swimming-briskly-123 heroku-redis:premium-2'];
|
|
138
|
+
Upgrade.flags = {
|
|
139
|
+
app: command_1.flags.app(),
|
|
140
|
+
remote: command_1.flags.remote(),
|
|
141
|
+
};
|
|
142
|
+
Upgrade.args = {
|
|
143
|
+
addon: core_1.Args.string({ required: true }),
|
|
144
|
+
plan: core_1.Args.string(),
|
|
145
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
'wait-interval': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
addon: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -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 resolve_1 = require("../../lib/addons/resolve");
|
|
7
|
+
const addons_wait_1 = require("../../lib/addons/addons_wait");
|
|
8
|
+
const notify_1 = require("../../lib/notify");
|
|
9
|
+
class Wait extends command_1.Command {
|
|
10
|
+
async run() {
|
|
11
|
+
const { flags, args } = await this.parse(Wait);
|
|
12
|
+
let addonsToWaitFor;
|
|
13
|
+
if (args.addon) {
|
|
14
|
+
addonsToWaitFor = [await (0, resolve_1.resolveAddon)(this.heroku, flags.app, args.addon)];
|
|
15
|
+
}
|
|
16
|
+
else if (flags.app) {
|
|
17
|
+
const { body: addons } = await this.heroku.get(`/apps/${flags.app}/addons`);
|
|
18
|
+
addonsToWaitFor = addons;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const { body: addons } = await this.heroku.get('/addons');
|
|
22
|
+
addonsToWaitFor = addons;
|
|
23
|
+
}
|
|
24
|
+
addonsToWaitFor = addonsToWaitFor.filter((addon) => addon.state === 'provisioning' || addon.state === 'deprovisioning');
|
|
25
|
+
let interval = Number.parseInt(flags['wait-interval'] || '', 10);
|
|
26
|
+
if (!interval || interval < 0) {
|
|
27
|
+
interval = 5;
|
|
28
|
+
}
|
|
29
|
+
for (const addon of addonsToWaitFor) {
|
|
30
|
+
const startTime = new Date();
|
|
31
|
+
const addonName = addon.name || '';
|
|
32
|
+
if (addon.state === 'provisioning') {
|
|
33
|
+
let addonResponse;
|
|
34
|
+
try {
|
|
35
|
+
addonResponse = await (0, addons_wait_1.waitForAddonProvisioning)(this.heroku, addon, interval);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
(0, notify_1.default)(`heroku addons:wait ${addonName}`, 'Add-on failed to provision', false);
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
const configVars = (addonResponse.config_vars || []);
|
|
42
|
+
if (configVars.length > 0) {
|
|
43
|
+
const decoratedConfigVars = configVars.map(c => color_1.default.green(c))
|
|
44
|
+
.join(', ');
|
|
45
|
+
core_1.ux.log(`Created ${color_1.default.yellow(addonName)} as ${decoratedConfigVars}`);
|
|
46
|
+
}
|
|
47
|
+
if (Date.now() - startTime.valueOf() >= 1000 * 5) {
|
|
48
|
+
(0, notify_1.default)(`heroku addons:wait ${addonName}`, 'Add-on successfully provisioned');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else if (addon.state === 'deprovisioning') {
|
|
52
|
+
await (0, addons_wait_1.waitForAddonDeprovisioning)(this.heroku, addon, interval);
|
|
53
|
+
if (Date.now() - startTime.valueOf() >= 1000 * 5) {
|
|
54
|
+
(0, notify_1.default)(`heroku addons:wait ${addonName}`, 'Add-on successfully deprovisioned');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.default = Wait;
|
|
61
|
+
Wait.topic = 'addons';
|
|
62
|
+
Wait.description = 'show provisioning status of the add-ons on the app';
|
|
63
|
+
Wait.flags = {
|
|
64
|
+
'wait-interval': command_1.flags.string({ description: 'how frequently to poll in seconds' }),
|
|
65
|
+
app: command_1.flags.app(),
|
|
66
|
+
remote: command_1.flags.remote(),
|
|
67
|
+
};
|
|
68
|
+
Wait.args = {
|
|
69
|
+
addon: core_1.Args.string(),
|
|
70
|
+
};
|
|
@@ -2,10 +2,10 @@ import { Command } from '@heroku-cli/command';
|
|
|
2
2
|
import { Interfaces } from '@oclif/core';
|
|
3
3
|
export default class Create extends Command {
|
|
4
4
|
static description: string;
|
|
5
|
-
static
|
|
5
|
+
static hiddenAliases: string[];
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static args: {
|
|
8
|
-
|
|
8
|
+
app: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
9
9
|
};
|
|
10
10
|
static flags: {
|
|
11
11
|
app: Interfaces.OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const yaml = require("js-yaml");
|
|
4
4
|
const fs_extra_1 = require("fs-extra");
|
|
5
5
|
const command_1 = require("@heroku-cli/command");
|
|
6
6
|
const completions_1 = require("@heroku-cli/command/lib/completions");
|
|
@@ -115,7 +115,7 @@ async function runFromFlags(context, heroku, config) {
|
|
|
115
115
|
}
|
|
116
116
|
async function readManifest() {
|
|
117
117
|
const buffer = await (0, fs_extra_1.readFile)('heroku.yml');
|
|
118
|
-
return
|
|
118
|
+
return yaml.load(buffer.toString(), { filename: 'heroku.yml' });
|
|
119
119
|
}
|
|
120
120
|
async function runFromManifest(context, heroku) {
|
|
121
121
|
const { flags, args } = context;
|
|
@@ -147,7 +147,7 @@ class Create extends command_1.Command {
|
|
|
147
147
|
}
|
|
148
148
|
exports.default = Create;
|
|
149
149
|
Create.description = 'creates a new app';
|
|
150
|
-
Create.
|
|
150
|
+
Create.hiddenAliases = ['create'];
|
|
151
151
|
Create.examples = [
|
|
152
152
|
`$ heroku apps:create
|
|
153
153
|
Creating app... done, stack is heroku-22
|
|
@@ -172,20 +172,27 @@ $ heroku apps:create example-staging --remote staging
|
|
|
172
172
|
$ heroku apps:create --region eu`,
|
|
173
173
|
];
|
|
174
174
|
Create.args = {
|
|
175
|
-
|
|
175
|
+
app: core_1.Args.string({ description: 'name of app to create', required: false }),
|
|
176
176
|
};
|
|
177
177
|
Create.flags = {
|
|
178
178
|
// `app` set to `flags.string` instead of `flags.app` to maintain original v5 functionality and avoid a default value from the git remote set when used without an app
|
|
179
179
|
app: command_1.flags.string({ hidden: true }),
|
|
180
180
|
addons: command_1.flags.string({ description: 'comma-delimited list of addons to install' }),
|
|
181
|
-
buildpack: command_1.flags.string({
|
|
181
|
+
buildpack: command_1.flags.string({
|
|
182
|
+
char: 'b',
|
|
183
|
+
description: 'buildpack url to use for this app',
|
|
184
|
+
completion: completions_1.BuildpackCompletion,
|
|
185
|
+
}),
|
|
182
186
|
manifest: command_1.flags.boolean({ char: 'm', description: 'use heroku.yml settings for this app', hidden: true }),
|
|
183
187
|
'no-remote': command_1.flags.boolean({ char: 'n', description: 'do not create a git remote' }),
|
|
184
188
|
remote: command_1.flags.remote({ description: 'the git remote to create, default "heroku"', default: 'heroku' }),
|
|
185
189
|
stack: command_1.flags.string({ char: 's', description: 'the stack to create the app on', completion: completions_1.StackCompletion }),
|
|
186
190
|
space: command_1.flags.string({ description: 'the private space to create the app in', completion: completions_1.SpaceCompletion }),
|
|
187
191
|
region: command_1.flags.string({ description: 'specify region for the app to run in', completion: completions_1.RegionCompletion }),
|
|
188
|
-
'internal-routing': command_1.flags.boolean({
|
|
192
|
+
'internal-routing': command_1.flags.boolean({
|
|
193
|
+
hidden: true,
|
|
194
|
+
description: 'private space-only. create as an Internal Web App that is only routable in the local network.',
|
|
195
|
+
}),
|
|
189
196
|
features: command_1.flags.string({ hidden: true }),
|
|
190
197
|
kernel: command_1.flags.string({ hidden: true }),
|
|
191
198
|
locked: command_1.flags.boolean({ hidden: true }),
|
|
@@ -2,9 +2,10 @@ import { Command } from '@heroku-cli/command';
|
|
|
2
2
|
export default class Destroy extends Command {
|
|
3
3
|
static description: string;
|
|
4
4
|
static help: string;
|
|
5
|
-
static
|
|
5
|
+
static hiddenAliases: string[];
|
|
6
6
|
static flags: {
|
|
7
7
|
app: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
9
|
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
10
|
};
|
|
10
11
|
static args: {
|
|
@@ -4,7 +4,7 @@ const color_1 = require("@heroku-cli/color");
|
|
|
4
4
|
const command_1 = require("@heroku-cli/command");
|
|
5
5
|
const core_1 = require("@oclif/core");
|
|
6
6
|
const lodash_1 = require("lodash");
|
|
7
|
-
const
|
|
7
|
+
const confirmCommand_1 = require("../../lib/confirmCommand");
|
|
8
8
|
const git = require("../../lib/ci/git");
|
|
9
9
|
class Destroy extends command_1.Command {
|
|
10
10
|
async run() {
|
|
@@ -14,7 +14,7 @@ class Destroy extends command_1.Command {
|
|
|
14
14
|
throw new Error('No app specified.\nUSAGE: heroku apps:destroy APPNAME');
|
|
15
15
|
// this appears to report errors if app not found
|
|
16
16
|
await this.heroku.get(`/apps/${app}`);
|
|
17
|
-
await (0,
|
|
17
|
+
await (0, confirmCommand_1.default)(app, flags.confirm, `WARNING: This will delete ${color_1.default.app(app)} including all add-ons.`);
|
|
18
18
|
core_1.ux.action.start(`Destroying ${color_1.default.app(app)} (including all add-ons)`);
|
|
19
19
|
await this.heroku.delete(`/apps/${app}`);
|
|
20
20
|
if (git.inGitRepo()) {
|
|
@@ -36,9 +36,10 @@ class Destroy extends command_1.Command {
|
|
|
36
36
|
exports.default = Destroy;
|
|
37
37
|
Destroy.description = 'permanently destroy an app';
|
|
38
38
|
Destroy.help = 'This will also destroy all add-ons on the app.';
|
|
39
|
-
Destroy.
|
|
39
|
+
Destroy.hiddenAliases = ['destroy', 'apps:delete'];
|
|
40
40
|
Destroy.flags = {
|
|
41
41
|
app: command_1.flags.app(),
|
|
42
|
+
remote: command_1.flags.remote(),
|
|
42
43
|
confirm: command_1.flags.string({ char: 'c' }),
|
|
43
44
|
};
|
|
44
45
|
Destroy.args = {
|
|
@@ -3,6 +3,7 @@ export default class Errors extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static flags: {
|
|
5
5
|
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
6
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
6
7
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
7
8
|
hours: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
9
|
router: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
@@ -112,6 +112,7 @@ exports.default = Errors;
|
|
|
112
112
|
Errors.description = 'view app errors';
|
|
113
113
|
Errors.flags = {
|
|
114
114
|
app: command_1.flags.app({ required: true }),
|
|
115
|
+
remote: command_1.flags.remote(),
|
|
115
116
|
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
116
117
|
hours: command_1.flags.string({ description: 'number of hours to look back (default 24)', default: '24' }),
|
|
117
118
|
router: command_1.flags.boolean({ description: 'show only router errors' }),
|
|
@@ -4,6 +4,7 @@ export default class Add extends Command {
|
|
|
4
4
|
static topic: string;
|
|
5
5
|
static flags: {
|
|
6
6
|
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
8
|
};
|
|
8
9
|
run(): Promise<void>;
|
|
9
10
|
}
|
|
@@ -4,6 +4,7 @@ export default class Remove extends Command {
|
|
|
4
4
|
static topic: string;
|
|
5
5
|
static flags: {
|
|
6
6
|
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
8
|
};
|
|
8
9
|
run(): Promise<void>;
|
|
9
10
|
}
|
|
@@ -2,7 +2,7 @@ import { Command } from '@heroku-cli/command';
|
|
|
2
2
|
export default class AppsIndex extends Command {
|
|
3
3
|
static description: string;
|
|
4
4
|
static topic: string;
|
|
5
|
-
static
|
|
5
|
+
static hiddenAliases: string[];
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static flags: {
|
|
8
8
|
all: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
@@ -101,7 +101,7 @@ class AppsIndex extends command_1.Command {
|
|
|
101
101
|
exports.default = AppsIndex;
|
|
102
102
|
AppsIndex.description = 'list your apps';
|
|
103
103
|
AppsIndex.topic = 'apps';
|
|
104
|
-
AppsIndex.
|
|
104
|
+
AppsIndex.hiddenAliases = ['list', 'apps:list'];
|
|
105
105
|
AppsIndex.examples = [
|
|
106
106
|
'$ heroku apps',
|
|
107
107
|
];
|
|
@@ -2,11 +2,12 @@ import { Command } from '@heroku-cli/command';
|
|
|
2
2
|
export default class AppsInfo extends Command {
|
|
3
3
|
static description: string;
|
|
4
4
|
static topic: string;
|
|
5
|
-
static
|
|
5
|
+
static hiddenAliases: string[];
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static help: string;
|
|
8
8
|
static flags: {
|
|
9
9
|
app: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
11
|
shell: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
extended: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
@@ -12,9 +12,7 @@ function formatDate(date) {
|
|
|
12
12
|
async function getInfo(app, client, extended) {
|
|
13
13
|
const promises = [
|
|
14
14
|
client.heroku.get(`/apps/${app}/addons`),
|
|
15
|
-
client.heroku.request(`/apps/${app}
|
|
16
|
-
headers: { Accept: 'application/vnd.heroku+json; version=3.cedar-acm' },
|
|
17
|
-
}),
|
|
15
|
+
client.heroku.request(`/apps/${app}`),
|
|
18
16
|
client.heroku.get(`/apps/${app}/dynos`).catch(() => ({ body: [] })),
|
|
19
17
|
client.heroku.get(`/apps/${app}/collaborators`).catch(() => ({ body: [] })),
|
|
20
18
|
client.heroku.get(`/apps/${app}/pipeline-couplings`).catch(() => ({ body: null })),
|
|
@@ -137,7 +135,7 @@ class AppsInfo extends command_1.Command {
|
|
|
137
135
|
exports.default = AppsInfo;
|
|
138
136
|
AppsInfo.description = 'show detailed app information';
|
|
139
137
|
AppsInfo.topic = 'apps';
|
|
140
|
-
AppsInfo.
|
|
138
|
+
AppsInfo.hiddenAliases = ['info'];
|
|
141
139
|
AppsInfo.examples = [
|
|
142
140
|
'$ heroku apps:info',
|
|
143
141
|
'$ heroku apps:info --shell',
|
|
@@ -154,6 +152,7 @@ repo_size=5000000
|
|
|
154
152
|
...`;
|
|
155
153
|
AppsInfo.flags = {
|
|
156
154
|
app: command_1.flags.app(),
|
|
155
|
+
remote: command_1.flags.remote(),
|
|
157
156
|
shell: command_1.flags.boolean({ char: 's', description: 'output more shell friendly key/value pairs' }),
|
|
158
157
|
extended: command_1.flags.boolean({ char: 'x', hidden: true }),
|
|
159
158
|
json: command_1.flags.boolean({ char: 'j', description: 'output in json format' }),
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class AppsJoin extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static aliases: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
class AppsJoin extends command_1.Command {
|
|
7
|
+
async run() {
|
|
8
|
+
const { flags } = await this.parse(AppsJoin);
|
|
9
|
+
const { app } = flags;
|
|
10
|
+
core_1.ux.action.start(`Joining ${color_1.default.cyan(app)}`);
|
|
11
|
+
const { body: user } = await this.heroku.get('/account');
|
|
12
|
+
await this.heroku.post(`/teams/apps/${app}/collaborators`, {
|
|
13
|
+
body: { user: user.email },
|
|
14
|
+
});
|
|
15
|
+
core_1.ux.action.stop();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = AppsJoin;
|
|
19
|
+
AppsJoin.topic = 'apps';
|
|
20
|
+
AppsJoin.description = 'add yourself to a team app';
|
|
21
|
+
AppsJoin.aliases = ['join'];
|
|
22
|
+
AppsJoin.flags = {
|
|
23
|
+
app: command_1.flags.app({ required: true }),
|
|
24
|
+
remote: command_1.flags.remote({ char: 'r' }),
|
|
25
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Leave extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static aliases: string[];
|
|
5
|
+
static description: string;
|
|
6
|
+
static example: string;
|
|
7
|
+
static flags: {
|
|
8
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
class Leave extends command_1.Command {
|
|
7
|
+
async run() {
|
|
8
|
+
const { flags } = await this.parse(Leave);
|
|
9
|
+
const { app } = flags;
|
|
10
|
+
const request = await this.heroku.get('/account');
|
|
11
|
+
core_1.ux.action.start(`Leaving ${color_1.default.cyan(app)}`);
|
|
12
|
+
const { body: account } = request;
|
|
13
|
+
await this.heroku.delete(`/apps/${app}/collaborators/${encodeURIComponent(account.email)}`);
|
|
14
|
+
core_1.ux.action.stop();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.default = Leave;
|
|
18
|
+
Leave.topic = 'apps';
|
|
19
|
+
Leave.aliases = ['leave'];
|
|
20
|
+
Leave.description = 'remove yourself from a team app';
|
|
21
|
+
Leave.example = 'heroku apps:leave -a APP';
|
|
22
|
+
Leave.flags = {
|
|
23
|
+
app: command_1.flags.app({ required: true }),
|
|
24
|
+
remote: command_1.flags.remote(),
|
|
25
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class AppsLock extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static aliases: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
class AppsLock extends command_1.Command {
|
|
7
|
+
async run() {
|
|
8
|
+
var _a;
|
|
9
|
+
const { flags } = await this.parse(AppsLock);
|
|
10
|
+
const { app } = flags;
|
|
11
|
+
const { body: appResponse } = await this.heroku.get(`/teams/apps/${app}`);
|
|
12
|
+
const appName = (_a = appResponse.name) !== null && _a !== void 0 ? _a : app;
|
|
13
|
+
if (appResponse.locked) {
|
|
14
|
+
throw new Error(`Error: cannot lock ${color_1.default.cyan(appName)}.\nThis app is already locked.`);
|
|
15
|
+
}
|
|
16
|
+
core_1.ux.action.start(`Locking ${color_1.default.cyan(appName)}`);
|
|
17
|
+
await this.heroku.patch(`/teams/apps/${appName}`, {
|
|
18
|
+
body: { locked: true },
|
|
19
|
+
});
|
|
20
|
+
core_1.ux.action.stop();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.default = AppsLock;
|
|
24
|
+
AppsLock.topic = 'apps';
|
|
25
|
+
AppsLock.description = 'prevent team members from joining an app';
|
|
26
|
+
AppsLock.aliases = ['lock'];
|
|
27
|
+
AppsLock.flags = {
|
|
28
|
+
app: command_1.flags.app({ required: true }),
|
|
29
|
+
remote: command_1.flags.remote(),
|
|
30
|
+
};
|
|
@@ -2,10 +2,11 @@ import { Command } from '@heroku-cli/command';
|
|
|
2
2
|
export default class AppsOpen extends Command {
|
|
3
3
|
static description: string;
|
|
4
4
|
static topic: string;
|
|
5
|
-
static
|
|
5
|
+
static hiddenAliases: string[];
|
|
6
6
|
static examples: string[];
|
|
7
7
|
static flags: {
|
|
8
8
|
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
10
|
};
|
|
10
11
|
static args: {
|
|
11
12
|
path: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
@@ -16,13 +16,14 @@ class AppsOpen extends command_1.Command {
|
|
|
16
16
|
exports.default = AppsOpen;
|
|
17
17
|
AppsOpen.description = 'open the app in a web browser';
|
|
18
18
|
AppsOpen.topic = 'apps';
|
|
19
|
-
AppsOpen.
|
|
19
|
+
AppsOpen.hiddenAliases = ['open'];
|
|
20
20
|
AppsOpen.examples = [
|
|
21
21
|
'$ heroku open -a myapp',
|
|
22
22
|
'$ heroku open -a myapp /foo',
|
|
23
23
|
];
|
|
24
24
|
AppsOpen.flags = {
|
|
25
25
|
app: command_1.flags.app({ required: true }),
|
|
26
|
+
remote: command_1.flags.remote(),
|
|
26
27
|
};
|
|
27
28
|
AppsOpen.args = {
|
|
28
29
|
path: core_1.Args.string({ required: false }),
|