heroku 9.0.0-alpha.0 → 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 +9 -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 +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 +10 -0
- package/lib/commands/apps/favorites/add.js +38 -0
- package/lib/commands/apps/favorites/index.d.ts +9 -0
- package/lib/commands/apps/favorites/index.js +25 -0
- package/lib/commands/apps/favorites/remove.d.ts +10 -0
- package/lib/commands/apps/favorites/remove.js +28 -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 +11 -0
- package/lib/commands/apps/stacks/index.js +44 -0
- package/lib/commands/apps/stacks/set.d.ts +14 -0
- package/lib/commands/apps/stacks/set.js +41 -0
- 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/logout.js +1 -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/index.d.ts +12 -0
- package/lib/commands/ci/config/index.js +43 -0
- package/lib/commands/ci/config/set.d.ts +3 -2
- package/lib/commands/ci/config/set.js +3 -6
- package/lib/commands/ci/config/unset.d.ts +14 -0
- package/lib/commands/ci/config/unset.js +36 -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/migrate-manifest.d.ts +7 -0
- package/lib/commands/ci/migrate-manifest.js +74 -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 +12 -0
- package/lib/commands/config/set.js +60 -0
- 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 +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/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/api.d.ts +1 -1
- 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/completions.d.ts +4 -0
- package/lib/lib/autocomplete/completions.js +6 -1
- package/lib/lib/buildpacks/buildpacks.js +3 -4
- 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/ci/validate.d.ts +2 -0
- package/lib/lib/ci/validate.js +10 -0
- 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/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 +19 -0
- package/lib/lib/git/push.d.ts +1 -0
- package/lib/lib/git/push.js +6 -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/favorites.d.ts +7 -0
- package/lib/lib/types/favorites.js +2 -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 +12920 -2534
- package/package.json +111 -60
- package/lib/lib/buildpacks/push.d.ts +0 -0
- package/lib/lib/buildpacks/push.js +0 -4
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
5
|
+
const setter_1 = require("../../../lib/pg/setter");
|
|
6
|
+
class LogStatement extends setter_1.PGSettingsCommand {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.settingKey = 'log_statement';
|
|
10
|
+
}
|
|
11
|
+
convertValue(val) {
|
|
12
|
+
return val;
|
|
13
|
+
}
|
|
14
|
+
explain(setting) {
|
|
15
|
+
return setting.values[setting.value];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = LogStatement;
|
|
19
|
+
LogStatement.description = (0, tsheredoc_1.default)(`
|
|
20
|
+
log_statement controls which SQL statements are logged.
|
|
21
|
+
Valid values for VALUE:
|
|
22
|
+
none - No statements are logged
|
|
23
|
+
ddl - All data definition statements, such as CREATE, ALTER and DROP will be logged
|
|
24
|
+
mod - Includes all statements from ddl as well as data-modifying statements such as INSERT, UPDATE, DELETE, TRUNCATE, COPY
|
|
25
|
+
all - All statements are logged
|
|
26
|
+
`);
|
|
27
|
+
LogStatement.args = {
|
|
28
|
+
database: core_1.Args.string(),
|
|
29
|
+
value: core_1.Args.string({ options: ['none', 'ddl', 'mod', 'all'] }),
|
|
30
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PGSettingsCommand } from '../../../lib/pg/setter';
|
|
2
|
+
import type { Setting, SettingKey } from '../../../lib/pg/types';
|
|
3
|
+
export default class TrackFunctions extends PGSettingsCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
protected settingKey: SettingKey;
|
|
10
|
+
protected convertValue(val: unknown): unknown;
|
|
11
|
+
protected explain(setting: Setting<keyof Setting<unknown>['value']>): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
5
|
+
const setter_1 = require("../../../lib/pg/setter");
|
|
6
|
+
// ref: https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-FUNCTIONS
|
|
7
|
+
class TrackFunctions extends setter_1.PGSettingsCommand {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.settingKey = 'track_functions';
|
|
11
|
+
}
|
|
12
|
+
convertValue(val) {
|
|
13
|
+
return val;
|
|
14
|
+
}
|
|
15
|
+
explain(setting) {
|
|
16
|
+
return setting.values[setting.value];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = TrackFunctions;
|
|
20
|
+
TrackFunctions.description = (0, tsheredoc_1.default)(`
|
|
21
|
+
track_functions controls tracking of function call counts and time used. Default is none.
|
|
22
|
+
Valid values for VALUE:
|
|
23
|
+
none - No functions are tracked (default)
|
|
24
|
+
pl - Only procedural language functions are tracked
|
|
25
|
+
all - All functions, including SQL and C language functions, are tracked. Simple SQL-language that are inlined are not tracked`);
|
|
26
|
+
TrackFunctions.args = {
|
|
27
|
+
database: core_1.Args.string(),
|
|
28
|
+
value: core_1.Args.string({ options: ['none', 'pl', 'all'] }),
|
|
29
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Unfollow extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
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
|
+
static args: {
|
|
11
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 fetcher_1 = require("../../lib/pg/fetcher");
|
|
7
|
+
const host_1 = require("../../lib/pg/host");
|
|
8
|
+
const util_1 = require("../../lib/pg/util");
|
|
9
|
+
const confirmCommand_1 = require("../../lib/confirmCommand");
|
|
10
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
11
|
+
class Unfollow extends command_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
const { flags, args } = await this.parse(Unfollow);
|
|
14
|
+
const { app, confirm } = flags;
|
|
15
|
+
const db = await (0, fetcher_1.getAddon)(this.heroku, app, args.database);
|
|
16
|
+
const { body: replica } = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() });
|
|
17
|
+
if (!replica.following)
|
|
18
|
+
core_1.ux.error(`${color_1.default.addon(db.name)} is not a follower`);
|
|
19
|
+
const { body: configVars } = await this.heroku.get(`/apps/${app}/config-vars`);
|
|
20
|
+
const origin = (0, util_1.databaseNameFromUrl)(replica.following, configVars);
|
|
21
|
+
await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
|
|
22
|
+
Destructive action
|
|
23
|
+
${color_1.default.addon(db.name)} will become writeable and no longer follow ${origin}. This cannot be undone.
|
|
24
|
+
`));
|
|
25
|
+
core_1.ux.action.start(`${color_1.default.addon(db.name)} unfollowing`);
|
|
26
|
+
await this.heroku.put(`/client/v11/databases/${db.id}/unfollow`, { hostname: (0, host_1.default)() });
|
|
27
|
+
core_1.ux.action.stop();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = Unfollow;
|
|
31
|
+
Unfollow.topic = 'pg';
|
|
32
|
+
Unfollow.description = 'stop a replica from following and make it a writeable database';
|
|
33
|
+
Unfollow.flags = {
|
|
34
|
+
confirm: command_1.flags.string({ char: 'c' }),
|
|
35
|
+
app: command_1.flags.app({ required: true }),
|
|
36
|
+
remote: command_1.flags.remote(),
|
|
37
|
+
};
|
|
38
|
+
Unfollow.args = {
|
|
39
|
+
database: core_1.Args.string({ required: true }),
|
|
40
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Upgrade extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
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
|
+
static args: {
|
|
12
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
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 fetcher_1 = require("../../lib/pg/fetcher");
|
|
8
|
+
const host_1 = require("../../lib/pg/host");
|
|
9
|
+
const util_1 = require("../../lib/pg/util");
|
|
10
|
+
const confirmCommand_1 = require("../../lib/confirmCommand");
|
|
11
|
+
class Upgrade extends command_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
const { flags, args } = await this.parse(Upgrade);
|
|
14
|
+
const { app, version, confirm } = flags;
|
|
15
|
+
const { database } = args;
|
|
16
|
+
const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
|
|
17
|
+
if ((0, util_1.legacyEssentialPlan)(db))
|
|
18
|
+
core_1.ux.error('pg:upgrade is only available for Essential-* databases and follower databases on Standard-tier and higher plans.');
|
|
19
|
+
const { body: replica } = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() });
|
|
20
|
+
if (replica.following) {
|
|
21
|
+
const { body: configVars } = await this.heroku.get(`/apps/${app}/config-vars`);
|
|
22
|
+
const origin = (0, util_1.databaseNameFromUrl)(replica.following, configVars);
|
|
23
|
+
await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
|
|
24
|
+
Destructive action
|
|
25
|
+
${color_1.default.addon(db.name)} will be upgraded to a newer PostgreSQL version, stop following ${origin}, and become writable.
|
|
26
|
+
|
|
27
|
+
This cannot be undone.
|
|
28
|
+
`));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
|
|
32
|
+
Destructive action
|
|
33
|
+
${color_1.default.addon(db.name)} will be upgraded to a newer PostgreSQL version.
|
|
34
|
+
|
|
35
|
+
This cannot be undone.
|
|
36
|
+
`));
|
|
37
|
+
}
|
|
38
|
+
const data = { version };
|
|
39
|
+
core_1.ux.action.start(`Starting upgrade of ${color_1.default.addon(db.name)}`);
|
|
40
|
+
await this.heroku.post(`/client/v11/databases/${db.id}/upgrade`, { hostname: (0, host_1.default)(), body: data });
|
|
41
|
+
core_1.ux.action.stop(`Use ${color_1.default.cmd('heroku pg:wait')} to track status`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = Upgrade;
|
|
45
|
+
Upgrade.topic = 'pg';
|
|
46
|
+
Upgrade.description = (0, tsheredoc_1.default)(`
|
|
47
|
+
For an Essential-* plan, this command upgrades the database's PostgreSQL version. For a Standard-tier and higher plan, this command unfollows the leader database before upgrading the PostgreSQL version.
|
|
48
|
+
To upgrade to another PostgreSQL version, use pg:copy instead
|
|
49
|
+
`);
|
|
50
|
+
Upgrade.flags = {
|
|
51
|
+
confirm: command_1.flags.string({ char: 'c' }),
|
|
52
|
+
version: command_1.flags.string({ char: 'v', description: 'PostgreSQL version to upgrade to' }),
|
|
53
|
+
app: command_1.flags.app({ required: true }),
|
|
54
|
+
remote: command_1.flags.remote(),
|
|
55
|
+
};
|
|
56
|
+
Upgrade.args = {
|
|
57
|
+
database: core_1.Args.string(),
|
|
58
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class VacuumStats extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
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>;
|
|
8
|
+
};
|
|
9
|
+
static args: {
|
|
10
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 fetcher_1 = require("../../lib/pg/fetcher");
|
|
6
|
+
const psql_1 = require("../../lib/pg/psql");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
class VacuumStats extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(VacuumStats);
|
|
11
|
+
const db = await (0, fetcher_1.database)(this.heroku, flags.app, args.database);
|
|
12
|
+
const query = (0, tsheredoc_1.default)(`
|
|
13
|
+
WITH table_opts AS (
|
|
14
|
+
SELECT
|
|
15
|
+
pg_class.oid, relname, nspname, array_to_string(reloptions, '') AS relopts
|
|
16
|
+
FROM
|
|
17
|
+
pg_class INNER JOIN pg_namespace ns ON relnamespace = ns.oid
|
|
18
|
+
), vacuum_settings AS (
|
|
19
|
+
SELECT
|
|
20
|
+
oid, relname, nspname,
|
|
21
|
+
CASE
|
|
22
|
+
WHEN relopts LIKE '%autovacuum_vacuum_threshold%'
|
|
23
|
+
THEN substring(relopts, '.*autovacuum_vacuum_threshold=([0-9.]+).*')::integer
|
|
24
|
+
ELSE current_setting('autovacuum_vacuum_threshold')::integer
|
|
25
|
+
END AS autovacuum_vacuum_threshold,
|
|
26
|
+
CASE
|
|
27
|
+
WHEN relopts LIKE '%autovacuum_vacuum_scale_factor%'
|
|
28
|
+
THEN substring(relopts, '.*autovacuum_vacuum_scale_factor=([0-9.]+).*')::real
|
|
29
|
+
ELSE current_setting('autovacuum_vacuum_scale_factor')::real
|
|
30
|
+
END AS autovacuum_vacuum_scale_factor
|
|
31
|
+
FROM
|
|
32
|
+
table_opts
|
|
33
|
+
)
|
|
34
|
+
SELECT
|
|
35
|
+
vacuum_settings.nspname AS schema,
|
|
36
|
+
vacuum_settings.relname AS table,
|
|
37
|
+
to_char(psut.last_vacuum, 'YYYY-MM-DD HH24:MI') AS last_vacuum,
|
|
38
|
+
to_char(psut.last_autovacuum, 'YYYY-MM-DD HH24:MI') AS last_autovacuum,
|
|
39
|
+
to_char(pg_class.reltuples, '9G999G999G999') AS rowcount,
|
|
40
|
+
to_char(psut.n_dead_tup, '9G999G999G999') AS dead_rowcount,
|
|
41
|
+
to_char(autovacuum_vacuum_threshold
|
|
42
|
+
+ (autovacuum_vacuum_scale_factor::numeric * pg_class.reltuples), '9G999G999G999') AS autovacuum_threshold,
|
|
43
|
+
CASE
|
|
44
|
+
WHEN autovacuum_vacuum_threshold + (autovacuum_vacuum_scale_factor::numeric * pg_class.reltuples) < psut.n_dead_tup
|
|
45
|
+
THEN 'yes'
|
|
46
|
+
END AS expect_autovacuum
|
|
47
|
+
FROM
|
|
48
|
+
pg_stat_user_tables psut INNER JOIN pg_class ON psut.relid = pg_class.oid
|
|
49
|
+
INNER JOIN vacuum_settings ON pg_class.oid = vacuum_settings.oid
|
|
50
|
+
ORDER BY 1
|
|
51
|
+
`);
|
|
52
|
+
const output = await (0, psql_1.exec)(db, query);
|
|
53
|
+
core_1.ux.log(output);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = VacuumStats;
|
|
57
|
+
VacuumStats.topic = 'pg';
|
|
58
|
+
VacuumStats.description = 'show dead rows and whether an automatic vacuum is expected to be triggered';
|
|
59
|
+
VacuumStats.flags = {
|
|
60
|
+
app: command_1.flags.app({ required: true }),
|
|
61
|
+
remote: command_1.flags.remote(),
|
|
62
|
+
};
|
|
63
|
+
VacuumStats.args = {
|
|
64
|
+
database: core_1.Args.string(),
|
|
65
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
'no-notify': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
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
|
+
static args: {
|
|
12
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 debug_1 = require("debug");
|
|
7
|
+
const fetcher_1 = require("../../lib/pg/fetcher");
|
|
8
|
+
const host_1 = require("../../lib/pg/host");
|
|
9
|
+
const notify_1 = require("../../lib/notify");
|
|
10
|
+
const wait = (ms) => new Promise(resolve => {
|
|
11
|
+
setTimeout(resolve, ms);
|
|
12
|
+
});
|
|
13
|
+
class Wait extends command_1.Command {
|
|
14
|
+
async run() {
|
|
15
|
+
const { flags, args } = await this.parse(Wait);
|
|
16
|
+
const { app, 'wait-interval': waitInterval } = flags;
|
|
17
|
+
const dbName = args.database;
|
|
18
|
+
const pgDebug = (0, debug_1.default)('pg');
|
|
19
|
+
const waitFor = async (db) => {
|
|
20
|
+
let interval = waitInterval && Number.parseInt(waitInterval, 10);
|
|
21
|
+
if (!interval || interval < 0)
|
|
22
|
+
interval = 5;
|
|
23
|
+
let status;
|
|
24
|
+
let waiting = false;
|
|
25
|
+
let retries = 20;
|
|
26
|
+
while (true) {
|
|
27
|
+
try {
|
|
28
|
+
({ body: status } = await this.heroku.get(`/client/v11/databases/${db.id}/wait_status`, { hostname: (0, host_1.default)() }));
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const httpError = error;
|
|
32
|
+
pgDebug(httpError);
|
|
33
|
+
if (!retries || httpError.statusCode !== 404)
|
|
34
|
+
throw httpError;
|
|
35
|
+
retries--;
|
|
36
|
+
status = { 'waiting?': true };
|
|
37
|
+
}
|
|
38
|
+
if (status['error?']) {
|
|
39
|
+
(0, notify_1.default)('error', `${db.name} ${status.message}`, false);
|
|
40
|
+
core_1.ux.error(status.message || '', { exit: 1 });
|
|
41
|
+
}
|
|
42
|
+
if (!status['waiting?']) {
|
|
43
|
+
if (waiting) {
|
|
44
|
+
core_1.ux.action.stop(status.message);
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (!waiting) {
|
|
49
|
+
waiting = true;
|
|
50
|
+
core_1.ux.action.start(`Waiting for database ${color_1.default.yellow(db.name)}`, status.message);
|
|
51
|
+
}
|
|
52
|
+
core_1.ux.action.status = status.message;
|
|
53
|
+
await wait(interval * 1000);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
let dbs = [];
|
|
57
|
+
if (dbName) {
|
|
58
|
+
dbs = [await (0, fetcher_1.getAddon)(this.heroku, app, dbName)];
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
dbs = await (0, fetcher_1.all)(this.heroku, app);
|
|
62
|
+
}
|
|
63
|
+
for (const db of dbs) {
|
|
64
|
+
await waitFor(db);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.default = Wait;
|
|
69
|
+
Wait.topic = 'pg';
|
|
70
|
+
Wait.description = 'blocks until database is available';
|
|
71
|
+
Wait.flags = {
|
|
72
|
+
'wait-interval': command_1.flags.string({ description: 'how frequently to poll in seconds (to avoid rate limiting)' }),
|
|
73
|
+
'no-notify': command_1.flags.boolean({ description: 'do not show OS notification' }),
|
|
74
|
+
app: command_1.flags.app({ required: true }),
|
|
75
|
+
remote: command_1.flags.remote(),
|
|
76
|
+
};
|
|
77
|
+
Wait.args = {
|
|
78
|
+
database: core_1.Args.string(),
|
|
79
|
+
};
|
|
@@ -32,7 +32,7 @@ class Connect extends command_1.Command {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
exports.default = Connect;
|
|
35
|
-
Connect.description = 'connect a
|
|
35
|
+
Connect.description = 'connect a GitHub repo to an existing pipeline';
|
|
36
36
|
Connect.examples = [
|
|
37
37
|
'$ heroku pipelines:connect my-pipeline -r githuborg/reponame',
|
|
38
38
|
];
|
|
@@ -20,7 +20,7 @@ async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
|
|
|
20
20
|
if (downstreamApp.hash === targetApp.hash) {
|
|
21
21
|
return core_1.ux.log(`\n${color_1.default.app(targetApp.name)} is up to date with ${color_1.default.app(downstreamApp.name)}`);
|
|
22
22
|
}
|
|
23
|
-
// Do the actual
|
|
23
|
+
// Do the actual GitHub diff
|
|
24
24
|
try {
|
|
25
25
|
const path = `${targetApp.repo}/compare/${downstreamApp.hash}...${targetApp.hash}`;
|
|
26
26
|
const headers = { authorization: 'token ' + githubToken };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Index extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static strict: boolean;
|
|
6
|
+
static usage: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, 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
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
extended: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const color_1 = require("@heroku-cli/color");
|
|
5
|
+
const command_1 = require("@heroku-cli/command");
|
|
6
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const time_1 = require("../../lib/time");
|
|
8
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
9
|
+
function getProcessNumber(s) {
|
|
10
|
+
return Number.parseInt(s.split('.', 2)[1], 10);
|
|
11
|
+
}
|
|
12
|
+
function uniqueValues(value, index, self) {
|
|
13
|
+
return self.indexOf(value) === index;
|
|
14
|
+
}
|
|
15
|
+
function byProcessNumber(a, b) {
|
|
16
|
+
return getProcessNumber(a.name) - getProcessNumber(b.name);
|
|
17
|
+
}
|
|
18
|
+
function byProcessName(a, b) {
|
|
19
|
+
if (a.name > b.name) {
|
|
20
|
+
return 1;
|
|
21
|
+
}
|
|
22
|
+
if (b.name > a.name) {
|
|
23
|
+
return -1;
|
|
24
|
+
}
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
function byProcessTypeAndNumber(a, b) {
|
|
28
|
+
if (a.type > b.type) {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
if (b.type > a.type) {
|
|
32
|
+
return -1;
|
|
33
|
+
}
|
|
34
|
+
return getProcessNumber(a.name) - getProcessNumber(b.name);
|
|
35
|
+
}
|
|
36
|
+
function truncate(s) {
|
|
37
|
+
return s.length > 35 ? `${s.slice(0, 34)}…` : s;
|
|
38
|
+
}
|
|
39
|
+
function printExtended(dynos) {
|
|
40
|
+
const sortedDynos = dynos.sort(byProcessTypeAndNumber);
|
|
41
|
+
core_1.ux.table(sortedDynos, {
|
|
42
|
+
ID: { get: (dyno) => dyno.id },
|
|
43
|
+
Process: { get: (dyno) => dyno.name },
|
|
44
|
+
State: { get: (dyno) => `${dyno.state} ${(0, time_1.ago)(new Date(dyno.updated_at))}` },
|
|
45
|
+
Region: { get: (dyno) => dyno.extended ? dyno.extended.region : '' },
|
|
46
|
+
'Execution Plane': { get: (dyno) => dyno.extended ? dyno.extended.execution_plane : '' },
|
|
47
|
+
Fleet: { get: (dyno) => dyno.extended ? dyno.extended.fleet : '' },
|
|
48
|
+
Instance: { get: (dyno) => dyno.extended ? dyno.extended.instance : '' },
|
|
49
|
+
IP: { get: (dyno) => dyno.extended ? dyno.extended.ip : '' },
|
|
50
|
+
Port: { get: (dyno) => dyno.extended ? dyno.extended.port.toString() : '' },
|
|
51
|
+
AZ: { get: (dyno) => dyno.extended ? dyno.extended.az : '' },
|
|
52
|
+
Release: { get: (dyno) => dyno.release.version },
|
|
53
|
+
Command: { get: (dyno) => truncate(dyno.command) },
|
|
54
|
+
Route: { get: (dyno) => dyno.extended ? dyno.extended.route : '' },
|
|
55
|
+
Size: { get: (dyno) => dyno.size },
|
|
56
|
+
}, {
|
|
57
|
+
'no-truncate': true,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async function printAccountQuota(heroku, app, account) {
|
|
61
|
+
if (app.process_tier !== 'free' && app.process_tier !== 'eco') {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (app.owner.id !== account.id) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const { body: quota } = await heroku.request(`/accounts/${account.id}/actions/get-quota`, { headers: { Accept: 'application/vnd.heroku+json; version=3.account-quotas' } }).catch(() => {
|
|
68
|
+
return { body: null };
|
|
69
|
+
});
|
|
70
|
+
if (!quota || (quota.id && quota.id === 'not_found')) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const remaining = (quota.account_quota === 0) ? 0 : quota.account_quota - quota.quota_used;
|
|
74
|
+
const percentage = (quota.account_quota === 0) ? 0 : Math.floor(remaining / quota.account_quota * 100);
|
|
75
|
+
const remainingMinutes = remaining / 60;
|
|
76
|
+
const hours = Math.floor(remainingMinutes / 60);
|
|
77
|
+
const minutes = Math.floor(remainingMinutes % 60);
|
|
78
|
+
const appQuota = quota.apps.find(appQuota => {
|
|
79
|
+
return appQuota.app_uuid === app.id;
|
|
80
|
+
});
|
|
81
|
+
const appQuotaUsed = appQuota ? appQuota.quota_used / 60 : 0;
|
|
82
|
+
const appPercentage = appQuota ? Math.floor(appQuota.quota_used * 100 / quota.account_quota) : 0;
|
|
83
|
+
const appHours = Math.floor(appQuotaUsed / 60);
|
|
84
|
+
const appMinutes = Math.floor(appQuotaUsed % 60);
|
|
85
|
+
if (app.process_tier === 'eco') {
|
|
86
|
+
core_1.ux.log(`Eco dyno hours quota remaining this month: ${hours}h ${minutes}m (${percentage}%)`);
|
|
87
|
+
core_1.ux.log(`Eco dyno usage for this app: ${appHours}h ${appMinutes}m (${appPercentage}%)`);
|
|
88
|
+
core_1.ux.log('For more information on Eco dyno hours, see:');
|
|
89
|
+
core_1.ux.log('https://devcenter.heroku.com/articles/eco-dyno-hours');
|
|
90
|
+
core_1.ux.log();
|
|
91
|
+
}
|
|
92
|
+
if (app.process_tier === 'free') {
|
|
93
|
+
core_1.ux.log(`Free dyno hours quota remaining this month: ${hours}h ${minutes}m (${percentage}%)`);
|
|
94
|
+
core_1.ux.log(`Free dyno usage for this app: ${appHours}h ${appMinutes}m (${appPercentage}%)`);
|
|
95
|
+
core_1.ux.log('For more information on dyno sleeping and how to upgrade, see:');
|
|
96
|
+
core_1.ux.log('https://devcenter.heroku.com/articles/dyno-sleeping');
|
|
97
|
+
core_1.ux.log();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function decorateOneOffDyno(dyno) {
|
|
101
|
+
const since = (0, time_1.ago)(new Date(dyno.updated_at));
|
|
102
|
+
// eslint-disable-next-line unicorn/explicit-length-check
|
|
103
|
+
const size = dyno.size || '1X';
|
|
104
|
+
const state = dyno.state === 'up' ? color_1.default.green(dyno.state) : color_1.default.yellow(dyno.state);
|
|
105
|
+
return `${dyno.name} (${color_1.default.cyan(size)}): ${state} ${color_1.default.dim(since)}: ${dyno.command}`;
|
|
106
|
+
}
|
|
107
|
+
function decorateCommandDyno(dyno) {
|
|
108
|
+
const since = (0, time_1.ago)(new Date(dyno.updated_at));
|
|
109
|
+
const state = dyno.state === 'up' ? color_1.default.green(dyno.state) : color_1.default.yellow(dyno.state);
|
|
110
|
+
return `${dyno.name}: ${state} ${color_1.default.dim(since)}`;
|
|
111
|
+
}
|
|
112
|
+
function printDynos(dynos) {
|
|
113
|
+
const oneOffs = dynos.filter(d => d.type === 'run').sort(byProcessNumber);
|
|
114
|
+
const commands = dynos.filter(d => d.type !== 'run').map(d => d.command).filter(uniqueValues);
|
|
115
|
+
// Print one-off dynos
|
|
116
|
+
if (oneOffs.length > 0) {
|
|
117
|
+
core_1.ux.styledHeader(`${color_1.default.green('run')}: one-off processes (${color_1.default.yellow(oneOffs.length.toString())})`);
|
|
118
|
+
oneOffs.forEach(dyno => core_1.ux.log(decorateOneOffDyno(dyno)));
|
|
119
|
+
core_1.ux.log();
|
|
120
|
+
}
|
|
121
|
+
// Print dynos grouped by command
|
|
122
|
+
commands.forEach(function (command) {
|
|
123
|
+
const commandDynos = dynos.filter(d => d.command === command).sort(byProcessNumber);
|
|
124
|
+
const type = commandDynos[0].type;
|
|
125
|
+
// eslint-disable-next-line unicorn/explicit-length-check
|
|
126
|
+
const size = commandDynos[0].size || '1X';
|
|
127
|
+
core_1.ux.styledHeader(`${color_1.default.green(type)} (${color_1.default.cyan(size)}): ${command} (${color_1.default.yellow(commandDynos.length.toString())})`);
|
|
128
|
+
for (const dyno of commandDynos)
|
|
129
|
+
core_1.ux.log(decorateCommandDyno(dyno));
|
|
130
|
+
core_1.ux.log();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
class Index extends command_1.Command {
|
|
134
|
+
async run() {
|
|
135
|
+
const _a = await this.parse(Index), { flags } = _a, restParse = tslib_1.__rest(_a, ["flags"]);
|
|
136
|
+
const { app, json, extended } = flags;
|
|
137
|
+
const types = restParse.argv;
|
|
138
|
+
const suffix = extended ? '?extended=true' : ''; // read previous comment, including this on the request doesn't make any difference.
|
|
139
|
+
const promises = {
|
|
140
|
+
dynos: this.heroku.request(`/apps/${app}/dynos${suffix}`),
|
|
141
|
+
appInfo: this.heroku.request(`/apps/${app}`, { headers: { Accept: 'application/vnd.heroku+json; version=3.process-tier' } }),
|
|
142
|
+
accountInfo: this.heroku.request('/account'),
|
|
143
|
+
};
|
|
144
|
+
const [{ body: dynos }, { body: appInfo }, { body: accountInfo }] = await Promise.all([promises.dynos, promises.appInfo, promises.accountInfo]);
|
|
145
|
+
const shielded = appInfo.space && appInfo.space.shield;
|
|
146
|
+
if (shielded) {
|
|
147
|
+
dynos.forEach(d => {
|
|
148
|
+
d.size = d.size.replace('Private-', 'Shield-');
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
let selectedDynos = dynos;
|
|
152
|
+
if (types.length > 0) {
|
|
153
|
+
selectedDynos = selectedDynos.filter(dyno => types.find((t) => dyno.type === t));
|
|
154
|
+
types.forEach(t => {
|
|
155
|
+
if (!selectedDynos.some(d => d.type === t)) {
|
|
156
|
+
throw new Error(`No ${color_1.default.cyan(t)} dynos on ${color_1.default.magenta(app)}`);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
selectedDynos = selectedDynos.sort(byProcessName);
|
|
161
|
+
if (json)
|
|
162
|
+
core_1.ux.styledJSON(selectedDynos);
|
|
163
|
+
else if (extended)
|
|
164
|
+
printExtended(selectedDynos);
|
|
165
|
+
else {
|
|
166
|
+
await printAccountQuota(this.heroku, appInfo, accountInfo);
|
|
167
|
+
if (selectedDynos.length === 0)
|
|
168
|
+
core_1.ux.log(`No dynos on ${color_1.default.magenta(app)}`);
|
|
169
|
+
else
|
|
170
|
+
printDynos(selectedDynos);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.default = Index;
|
|
175
|
+
Index.topic = 'ps';
|
|
176
|
+
Index.description = 'list dynos for an app';
|
|
177
|
+
Index.strict = false;
|
|
178
|
+
Index.usage = 'ps [TYPE [TYPE ...]]';
|
|
179
|
+
Index.examples = [(0, tsheredoc_1.default) `
|
|
180
|
+
$ heroku ps
|
|
181
|
+
=== run: one-off dyno
|
|
182
|
+
run.1: up for 5m: bash
|
|
183
|
+
=== web: bundle exec thin start -p $PORT
|
|
184
|
+
web.1: created for 30s
|
|
185
|
+
`, (0, tsheredoc_1.default) `
|
|
186
|
+
$ heroku ps run # specifying types
|
|
187
|
+
=== run: one-off dyno
|
|
188
|
+
run.1: up for 5m: bash
|
|
189
|
+
`];
|
|
190
|
+
Index.flags = {
|
|
191
|
+
app: command_1.flags.app({ required: true }),
|
|
192
|
+
remote: command_1.flags.remote(),
|
|
193
|
+
json: command_1.flags.boolean({ description: 'display as json' }),
|
|
194
|
+
extended: command_1.flags.boolean({ char: 'x', hidden: true }), // should be removed? Platform API doesn't serialize extended attributes even if the query param `extended=true` is sent.
|
|
195
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Restart extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static topic: string;
|
|
5
|
+
static aliases: string[];
|
|
6
|
+
static hiddenAliases: string[];
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static help: string;
|
|
9
|
+
static args: {
|
|
10
|
+
dyno: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
static flags: {
|
|
13
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
14
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|