src/commands/releases/info.js
'use strict'
const cli = require('heroku-cli-util')
const co = require('co')
let releases = require('../../releases')
function * run (context, heroku) {
const shellescape = require('shell-escape')
const statusHelper = require('../../status_helper')
const {forEach} = require('lodash')
let release = yield releases.FindByLatestOrId(heroku, context.app, context.args.release)
let config = yield heroku.get(`/apps/${context.app}/releases/${release.version}/config-vars`)
if (context.flags.json) {
cli.styledJSON(release)
} else {
let releaseChange = release.description
let status = statusHelper.description(release)
let statusColor = statusHelper.color(release.status)
if (status !== undefined) {
releaseChange += ' (' + cli.color[statusColor](status) + ')'
}
cli.styledHeader(`Release ${cli.color.cyan('v' + release.version)}`)
cli.styledObject({
'Add-ons': release.addon_plan_names,
Change: releaseChange,
By: release.user.email,
When: release.created_at
})
cli.log()
cli.styledHeader(`${cli.color.cyan('v' + release.version)} Config vars`)
if (context.flags.shell) {
forEach(config, (v, k) => cli.log(`${k}=${shellescape([v])}`))
} else {
cli.styledObject(config)
}
}
}
module.exports = {
topic: 'releases',
command: 'info',
description: 'view detailed information for a release',
needsApp: true,
needsAuth: true,
args: [{name: 'release', optional: true}],
flags: [
{name: 'json', description: 'output in json format'},
{name: 'shell', char: 's', description: 'output in shell format'}
],
run: cli.command(co.wrap(run))
}