1 | 'use strict'
|
2 |
|
3 | let cli = require('heroku-cli-util')
|
4 | let co = require('co')
|
5 | let waitForAddonProvisioning = require('../../lib/addons_wait')
|
6 |
|
7 | function * run (ctx, api) {
|
8 | const resolve = require('../../lib/resolve')
|
9 |
|
10 | let addons
|
11 | if (ctx.args.addon) {
|
12 | addons = [yield resolve.addon(api, ctx.app, ctx.args.addon)]
|
13 | } else {
|
14 | if (ctx.app) {
|
15 | addons = yield api.get(`/apps/${ctx.app}/addons`)
|
16 | } else {
|
17 | addons = yield api.get('/addons')
|
18 | }
|
19 | addons = addons.filter(addon => addon.state === 'provisioning')
|
20 | }
|
21 |
|
22 | let interval = parseInt(ctx.flags['wait-interval'])
|
23 | if (!interval || interval < 0) { interval = 5 }
|
24 |
|
25 | for (let addon of addons) {
|
26 | addon = yield waitForAddonProvisioning(api, addon, interval)
|
27 |
|
28 | let configVars = (addon.config_vars || [])
|
29 | if (configVars.length > 0) {
|
30 | configVars = configVars.map(c => cli.color.configVar(c)).join(', ')
|
31 | cli.log(`Created ${cli.color.addon(addon.name)} as ${configVars}`)
|
32 | }
|
33 | }
|
34 | }
|
35 |
|
36 | let topic = 'addons'
|
37 |
|
38 | module.exports = {
|
39 | topic: topic,
|
40 | command: 'wait',
|
41 | wantsApp: true,
|
42 | needsAuth: true,
|
43 | args: [{name: 'addon', optional: true}],
|
44 | flags: [{name: 'wait-interval', description: 'how frequently to poll in seconds', hasValue: true}],
|
45 | run: cli.command({preauth: true}, co.wrap(run)),
|
46 | usage: `${topic}:wait ADDON`,
|
47 | description: 'Show provisioning status of the add-ons on the app'
|
48 | }
|