src/commands/labs/enable.js
'use strict'
let cli = require('heroku-cli-util')
let co = require('co')
function * run (context, heroku) {
function enableFeature (feature, app) {
return heroku.request({
path: app ? `/apps/${app}/features/${feature}` : `/account/features/${feature}`,
method: 'PATCH',
body: {enabled: true}
})
}
let feature = context.args.feature
let request
let target
try {
yield heroku.get(`/account/features/${feature}`)
request = enableFeature(feature)
target = (yield heroku.get('/account')).email
} catch (err) {
if (err.statusCode !== 404) throw err
// might be an app feature
if (!context.app) throw err
yield heroku.get(`/apps/${context.app}/features/${feature}`)
request = enableFeature(feature, context.app)
target = context.app
}
yield cli.action(`Enabling ${cli.color.green(feature)} for ${cli.color.cyan(target)}`, request)
}
module.exports = {
topic: 'labs',
command: 'enable',
description: 'enables an experimental feature',
args: [{name: 'feature'}],
needsAuth: true,
wantsApp: true,
run: cli.command(co.wrap(run))
}