UNPKG

1.39 kBJavaScriptView Raw
1'use strict'
2
3let cli = require('heroku-cli-util')
4let co = require('co')
5let waitForAddonProvisioning = require('../../lib/addons_wait')
6
7function * 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
36let topic = 'addons'
37
38module.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}